Page 1 of 1

ถามเรื่อง list box กับ Text Box ครับ

Posted: Fri Jul 12, 2013 3:56 pm
by khainui
1. ตามไฟล์ที่แนบ ผมยังหาวิธีนำข้อมูลจาก listbox audit_name

ไปวางที่ column e f g ใน sheet job ไม่ได้ครับ ต้องเขียนกำหนด ตัวแปรอย่างไรครับ ตอนนี้จะเป็นแค่ active cell

2. Text box Run_no ใช้วิธีดึงข้อมูลจาก cell a2 มา ต้องเขียนคำสั่งอย่างไรให้เหมือนกับสูตร lookup ใน ช่อง A2 ใน Textbox โดยตรงครับ

ขอบคุณครับ

Re: ถามเรื่อง list box กับ Text Box ครับ

Posted: Fri Jul 12, 2013 7:04 pm
by khainui
อัพไฟล์ใหม่ครับ ผมเปลี่ยนวันที่เป็น Text Box แทนรู้สึก Date Picker excel 2010 ไม่รองรับ

Re: ถามเรื่อง list box กับ Text Box ครับ

Posted: Fri Jul 12, 2013 11:01 pm
by snasui
:D ลองดูตัวอย่างการปรับ Code ตามด้านล่าง โดยให้ลบ Row Source ของ ListBox ทิ้งไปก่อน ถ้าต้องการจะใช้หัวคอลัมน์ใน ListBox ให้ Loop ค่าคอลัมน์ C:D ในชีท Job ไปวางในตำแหน่งอื่นก่อนแล้วค่อยนำค่านั้นเอาไว้มาใช้ใน Rowsource สำหรับ Code ตามด้านล่างใช้การ Loop คอลัมน์ C:D แล้ว Add เข้าไปตรง ๆ ใน ListBox

Code: Select all

Dim i As Integer

Private Sub cmdClose_Click()
    Unload Me
End Sub

Private Sub cmdOK_Click()
Worksheets("job").Cells(i, 1).Value = run_no.Text
Worksheets("job").Cells(i, 2).Value = DTpicker1.Text
Worksheets("job").Cells(i, 3).Value = Job_descrip.Text
Worksheets("job").Cells(i, 4).Value = Audit_team.Text
With Audit_name
    Sheets("Job").Range("a" & Rows.Count).End(xlUp).Offset(0, 4).Select
    For x = 0 To .ListCount - 1
        If .Selected(x) Then
            ActiveCell.Value = .List(x)
            ActiveCell.Offset(0, 1).Select
        End If
    Next x
End With
Unload Me
MsgBox "บันทึกรายการแล้ว"
End Sub


Private Sub UserForm_Initialize()
    Dim rAll As Range, r As Range
    i = WorksheetFunction.CountA(Worksheets("job").Columns("a:a")) + 1
    audit_job.run_no = i
    With Sheets("Job")
        Set rAll = .Range("c2", .Range("c" & Rows.Count).End(xlUp))
    End With
    For Each r In rAll
        With audit_job.Audit_name
            .ColumnCount = 2
            .ColumnWidths = "90;60"
            .AddItem
            .Column(0, .ListCount - 1) = r
            .Column(1, .ListCount - 1) = r.Offset(0, 1)
        End With
    Next r
End Sub

Re: ถามเรื่อง list box กับ Text Box ครับ

Posted: Fri Jul 12, 2013 11:36 pm
by khainui

Code: Select all

Dim i As Integer
Private Sub cmdClose_Click()
Unload Me
End Sub

Private Sub cmdOK_Click()
Worksheets("job").Cells(i, 1).Value = run_no.Value
Worksheets("job").Cells(i, 2).Value = DTpicker1.Value
Worksheets("job").Cells(i, 3).Value = Job_descrip
Worksheets("job").Cells(i, 4).Value = Audit_team
With Audit_name
    Sheets("Job").Range("a" & Rows.Count).End(xlUp).Offset(0, 4).Select ติดที่แถวนี้ครับ
    For x = 0 To .ListCount - 1
        If .Selected(x) Then
            ActiveCell.Value = .List(x)
            ActiveCell.Offset(0, 1).Select
        End If
    Next x
End With
Unload Me
MsgBox "ºÑ¹·Ö¡ÃÒ¡ÒÃáÅéÇ"
End Sub

Private Sub UserForm_Initialize()
    Dim rAll As Range, r As Range
    i = WorksheetFunction.CountA(Worksheets("job").Columns("a:a")) + 1
    audit_job.run_no = i
    With Sheets("dataIn")                               เปลี่ยนเป็นดึงข้อมูลจาก dataIn
        Set rAll = .Range("c2", .Range("c" & Rows.Count).End(xlUp))
    End With
    For Each r In rAll
        With audit_job.Audit_name
            .ColumnCount = 2
            .ColumnWidths = "90;60"
            .AddItem
            .Column(0, .ListCount - 1) = r
            .Column(1, .ListCount - 1) = r.Offset(0, 1)
        End With
    Next r
End Sub
มันติดตรงแถว Sheets("Job").Range("a" & Rows.Count).End(xlUp).Offset(0, 4).Select มันไม่ส่งข้อมูลไป sheet "job"
แล้วตรง userform initialize แถวที่เป็นสีแดงผมเปลี่ยนเป็นดึงจาก sheet dataIn range c2 ครับ

เพิ่มเติมหน่อยครับคือ ใน listbox จะให้ติ๊กผู้ตรวจ แล้วนำข้อมูลเฉพาะที่ติ๊กซึ่งเป็นเลข ID ไปบันทึกที่ sheet job column เจ้าหน้าที่ตรวจสอบ 1 2 และ 3 ครับ ถ้าติ๊ก 4 คน ก็วิ่งไปที่ column 4 ด้วยครับ

Re: ถามเรื่อง list box กับ Text Box ครับ

Posted: Fri Jul 12, 2013 11:56 pm
by snasui
:D ผมยังไม่เปิดไฟล์นะครับ สำหรับ Code

Sheets("Job").Range("a" & Rows.Count).End(xlUp).Offset(0, 4).Select

หากว่าเราไม่อยู่ใน Sheet Job มันจะไม่ Select ให้ จะต้อง Select เป็นลำดับไป เช่น

Code: Select all

Sheets("Job").Select
Range("a" & Rows.Count).End(xlUp).Offset(0, 4).Select

Re: ถามเรื่อง list box กับ Text Box ครับ

Posted: Sat Jul 13, 2013 12:00 am
by snasui
:D
snasui wrote:เพิ่มเติมหน่อยครับคือ ใน listbox จะให้ติ๊กผู้ตรวจ แล้วนำข้อมูลเฉพาะที่ติ๊กซึ่งเป็นเลข ID ไปบันทึกที่ sheet job column เจ้าหน้าที่ตรวจสอบ 1 2 และ 3 ครับ ถ้าติ๊ก 4 คน ก็วิ่งไปที่ column 4 ด้วยครับ
ถ้า Tick 1 กับ 4 แล้วจะวิ่งอย่างไรครับ

Re: ถามเรื่อง list box กับ Text Box ครับ

Posted: Sat Jul 13, 2013 8:18 am
by khainui
OK ครับพอย้ายปุ่ม OpenForm ไปไว้ Sheet job ก็ใช้ได้ครับ แต่ความต้องการคือปุ่ม Open Form อยู่อีก sheet หนึ่ง (Sheet "dataIn") แล้วส่งข้อมูลในช่อง listbox (audit_name) ไปที่ sheet "job" ครับ

Re: ถามเรื่อง list box กับ Text Box ครับ

Posted: Sat Jul 13, 2013 8:33 am
by snasui
:D ที่ผมตอบไปไม่ได้หมายความว่าให้ย้าย Button ไปไว้ในชีท Job สำหรับ Button จะอยูที่ไหนก็ได้ ไม่จำเป็นว่าต้องอยู่ในชีท Job แต่การใช้วิธีการ Select Data ด้วย ActiveCell ตามที่เขียนมาแล้วนั้นจะต้องไป Active เซลล์ในชีท Job นั่นหมายความว่า หากไม่ได้อยู่ในชีท Job ก็ต้องเขียน Code ให้ Select Sheet, Select Cell เป็นลำดับไปถึงจะทำงานได้ เขียนรวบที่เดียวไม่ได้ ซึ่งผมได้เขียนเป็นตัวอย่างไว้แล้วด้านบน หากทำตามนั้นแล้วติดปัญหาให้นำ Code ที่ Update แล้วมาถามกันครับ

Re: ถามเรื่อง list box กับ Text Box ครับ

Posted: Sat Jul 13, 2013 8:46 am
by khainui
อ๋อเข้าใจแล้วครับ แล้วลองแก้คำสั่งใหม่ครับ ตาหวานอ่านไม่ครบครับ :rz: