Page 1 of 1

สูตร vlookup ใน textbox

Posted: Tue Jan 15, 2013 4:26 pm
by natthaporn
เมื่อค่าใน RefBox = A0001
ดิฉันต้องการให้ค่าใน NameBox1 = Apple
และ NameBox2 = Green Apple
ดิฉันได้ทดลองเขียน code ตามด้านล่างคะ แต่ข้อมูลในช่อง Name 1 และ Name 2
ไม่มีอะไรเปลี่ยนแปลงเลยคะ รบกวนอาจารย์ช่วยแนะนำ code ด้วยคะ

Code: Select all

Private Sub NameBox1_Change()		
If RefBox.Value = "" Then		
NameBox1.Value = Application.WorksheetFunction.VLookup(RefBox.Value, Name, 3, False)		
End If		
End Sub		
		

Private Sub NameBox2_Change()
If RefBox.Value = "" Then
NameBox2.Value = Application.WorksheetFunction.VLookup(RefBox.Value, Name, 4, False)
End If
End Sub


Re: สูตร vlookup ใน textbox

Posted: Tue Jan 15, 2013 4:51 pm
by snasui
:D ลองดูตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

Private Sub RefBox_Change()
    On Error Resume Next
    If Len(RefBox.Text) < 5 Then Exit Sub
    With Application.WorksheetFunction
        NameBox1.Value = .VLookup(RefBox.Value, Sheets("Data").Range("Name"), 3, False)
        NameBox2.Value = .VLookup(RefBox.Value, Sheets("Data").Range("Name"), 4, False)
    End With
    If Err <> 0 Then
        MsgBox "Please check your code."
    End If
End Sub

Re: สูตร vlookup ใน textbox

Posted: Tue Jan 15, 2013 9:02 pm
by natthaporn
ดิฉันใช้ code ตามที่อาจารย์แนะนำ ได้ผลลัพธ์ตามที่ต้องการแล้วคะ
แต่ดิฉันมีข้อสงสัยอยู่อย่างหนึ่งคือ ทำไมนำ code ไปไว้ที่ RefBox แทนที่จะเขียน code ที่ NameBox1 และ NameBox2
ขอบคุณมากคะ

Re: สูตร vlookup ใน textbox

Posted: Tue Jan 15, 2013 9:18 pm
by snasui
:D จาก
natthaporn wrote:เมื่อค่าใน RefBox = A0001
แสดงว่าต้องเขียน Code เพื่อตรวจสอบ Event ที่เกิดจากการเปลี่ยนแปลงของ RefBox ไม่ใช่ไปเช็คที่ Object อื่นครับ

Re: สูตร vlookup ใน textbox

Posted: Wed Jan 16, 2013 12:35 am
by natthaporn
ก่อนอื่นต้องขอโทษอาจารย์ด้วยที่ post มาดึกมากคะ และขอขอบคุณมากคะ สำหรับคำอธิบาย
อาจารย์คะ ดิฉันอยากจะรบกวนถามต่อยอดเกียวกับเรื่อง textbox ต่อคะ
คือ ดิฉันต้องการที่จะส่งข้อมูลที่อยู่ใน textbox ไปยัง sheet ที่เป็นที่เก็บข้อมูล
ซึ่งดิฉันได้ลองเขียน code ดังนี้คะ

Code: Select all

Private Sub SaveButton_Click()
Dim i As Integer
If CompanyBox.Value = "A" Then
i = WorksheetFunction.CountA(Worksheets("A").Range("B:B")) + 3

Worksheets("A").Cells(i, 2).Value = RefBox.Value
Worksheets("A").Cells(i, 3).Value = NameBox1.Value
Worksheets("A").Cells(i, 4).Value = NameBox2.Value
'Worksheets("A").Cells(i, 5).Value = GroupBox.Value
'Worksheets("A").Cells(i, 6).Value = TypeBox.Value
'Worksheets("A").Cells(i, 7).Value = AmountBox.Value

End If

If CompanyBox.Value = "B" Then
i = WorksheetFunction.CountA(Worksheets("B").Range("B:B")) + 3

Worksheets("B").Cells(i, 2).Value = RefBox.Value
Worksheets("B").Cells(i, 3).Value = NameBox1.Value
Worksheets("B").Cells(i, 4).Value = NameBox2.Value
'Worksheets("B").Cells(i, 5).Value = GroupBox.Value
'Worksheets("B").Cells(i, 6).Value = TypeBox.Value
'Worksheets("B").Cells(i, 7).Value = AmountBox.Value
End If

End Sub

Private Sub CleardButton_Click()
CompanyBox.Value = ""
RefBox.Value = ""
NameBox1.Value = ""
NameBox2.Value = ""
GroupBox.Value = ""
TypeBox.Value = ""
AmountBox.Value = ""

End Sub

ดิฉันอยากจะรบกวนอาจารย์ดังนี้คะ
1. ดิฉันจะรบกวนอาจารย์แนะนำ code ที่สั้นกว่านี้คะ
2. มี code บางช่วงที่ดิฉันยังเขียนไม่ได้ เช่น
ถ้า GroupBox =1 และ TypeBox = M1 ให้ AmountBox =10
ส่งข้อมูลไปที่ column "E"
หรือถ้า GroupBox =2 และ TypeBox = X1 ให้ AmountBox =10
ส่งข้อมูลไปที่ column "H" เป็นต้นคะ
3.เมื่อ click ปุ่ม "Clear" แล้วให้ cursor วิ่งไปที่ CompanyBox

Re: สูตร vlookup ใน textbox

Posted: Wed Jan 16, 2013 5:37 am
by natthaporn
ต้องขอโทษด้วยคะ ที่บอกเงื่อนไขอาจารย์ผิดในครั้งแรกคะ
ดิฉันอยากจะรบกวนอาจารย์เปลี่ยนเงื่อนไข ดังนี้คะ
1. ดิฉันจะรบกวนอาจารย์แนะนำ code ที่สั้นกว่านี้คะ
2. มี code บางช่วงที่ดิฉันยังเขียนไม่ได้ เช่น
ถ้า GroupBox =1 และ TypeBox = M1 ให้ AmountBox =10
ส่งข้อมูลไปที่ column "E"
หรือถ้า GroupBox =2 และ TypeBox = M2 ให้ AmountBox =10
ส่งข้อมูลไปที่ column "J" เป็นต้นคะ
3.เมื่อ click ปุ่ม "Clear" แล้วให้ cursor วิ่งไปที่ CompanyBox

ขอบคุณคะ

Re: สูตร vlookup ใน textbox

Posted: Wed Jan 16, 2013 7:04 am
by snasui
natthaporn wrote:1. ดิฉันจะรบกวนอาจารย์แนะนำ code ที่สั้นกว่านี้คะ
:D ในการเริ่มเขียน VBA นั้น Code ที่สั้นสำคัญน้อยกว่า Code ทำงานถูกต้องครับ ขอให้เขียนให้ทำงานถูกต้องก่อนเป็นอันดับแรก การปรับให้กระชับค่อยทำทีหลังได้
natthaporn wrote:ถ้า GroupBox =1 และ TypeBox = M1 ให้ AmountBox =10
ส่งข้อมูลไปที่ column "E
เราสามารถใช้ And เข้ามาช่วยได้ครับ ยกตัวอย่างเช่น

Code: Select all

If GroupBox.Text = "1" And TypeBox.Text = "M1" Then AmountBox.Text = "10" 
ลองปรับ Code มาดูกันครับ
natthaporn wrote:3.เมื่อ click ปุ่ม "Clear" แล้วให้ cursor วิ่งไปที่ CompanyBox
สามารถใช้ SetForcus เข้ามาช่วยได้ครับ เช่น

Code: Select all

CompanyBox.SetFocus

Re: สูตร vlookup ใน textbox

Posted: Wed Jan 16, 2013 9:41 am
by natthaporn
ลองเขียน code ตามที่อาจารย์แนะนำ แต่ยัง run ไม่ได้คะ

Code: Select all

Private Sub SaveButton_Click()
Dim i As Integer
If CompanyBox.Value = "A" And GroupBox.Text = "1" And TpyeBox.Text = "M1" Then (debug ที่ row นี้คะ)
i = WorksheetFunction.CountA(Worksheets("A").Range("B:B")) + 3

Worksheets("A").Cells(i, 2).Value = RefBox.Value
Worksheets("A").Cells(i, 3).Value = NameBox1.Value
Worksheets("A").Cells(i, 4).Value = NameBox2.Value
Worksheets("A").Cells(i, 5).Value = AmountBox.Value
End If

If CompanyBox.Value = "A" And GroupBox.Text = "1" And TpyeBox.Text = "M2" Then
i = WorksheetFunction.CountA(Worksheets("A").Range("B:B")) + 3

Worksheets("A").Cells(i, 2).Value = RefBox.Value
Worksheets("A").Cells(i, 3).Value = NameBox1.Value
Worksheets("A").Cells(i, 4).Value = NameBox2.Value
Worksheets("A").Cells(i, 6).Value = AmountBox.Value
End If

If CompanyBox.Value = "A" And GroupBox.Text = "1" And TpyeBox.Text = "M3" Then
i = WorksheetFunction.CountA(Worksheets("A").Range("B:B")) + 3

Worksheets("A").Cells(i, 2).Value = RefBox.Value
Worksheets("A").Cells(i, 3).Value = NameBox1.Value
Worksheets("A").Cells(i, 4).Value = NameBox2.Value
Worksheets("A").Cells(i, 7).Value = AmountBox.Value
End If

If CompanyBox.Value = "A" And GroupBox.Text = "2" And TpyeBox.Text = "M1" Then
i = WorksheetFunction.CountA(Worksheets("A").Range("B:B")) + 3

Worksheets("A").Cells(i, 2).Value = RefBox.Value
Worksheets("A").Cells(i, 3).Value = NameBox1.Value
Worksheets("A").Cells(i, 4).Value = NameBox2.Value
Worksheets("A").Cells(i, 9).Value = AmountBox.Value
End If

If CompanyBox.Value = "A" And GroupBox.Text = "2" And TpyeBox.Text = "M2" Then
i = WorksheetFunction.CountA(Worksheets("A").Range("B:B")) + 3

Worksheets("A").Cells(i, 2).Value = RefBox.Value
Worksheets("A").Cells(i, 3).Value = NameBox1.Value
Worksheets("A").Cells(i, 4).Value = NameBox2.Value
Worksheets("A").Cells(i, 10).Value = AmountBox.Value
End If

If CompanyBox.Value = "A" And GroupBox.Text = "2" And TpyeBox.Text = "M3" Then
i = WorksheetFunction.CountA(Worksheets("A").Range("B:B")) + 3

Worksheets("A").Cells(i, 2).Value = RefBox.Value
Worksheets("A").Cells(i, 3).Value = NameBox1.Value
Worksheets("A").Cells(i, 4).Value = NameBox2.Value
Worksheets("A").Cells(i, 11).Value = AmountBox.Value
End If

If CompanyBox.Value = "B" And GroupBox.Text = "1" And TpyeBox.Text = "M1" Then
i = WorksheetFunction.CountA(Worksheets("B").Range("B:B")) + 3

Worksheets("B").Cells(i, 2).Value = RefBox.Value
Worksheets("B").Cells(i, 3).Value = NameBox1.Value
Worksheets("B").Cells(i, 4).Value = NameBox2.Value
Worksheets("B").Cells(i, 5).Value = AmountBox.Value
End If

If CompanyBox.Value = "B" And GroupBox.Text = "1" And TpyeBox.Text = "M2" Then
i = WorksheetFunction.CountA(Worksheets("B").Range("B:B")) + 3

Worksheets("B").Cells(i, 2).Value = RefBox.Value
Worksheets("B").Cells(i, 3).Value = NameBox1.Value
Worksheets("B").Cells(i, 4).Value = NameBox2.Value
Worksheets("B").Cells(i, 6).Value = AmountBox.Value
End If

If CompanyBox.Value = "B" And GroupBox.Text = "1" And TpyeBox.Text = "M3" Then
i = WorksheetFunction.CountA(Worksheets("B").Range("B:B")) + 3

Worksheets("B").Cells(i, 2).Value = RefBox.Value
Worksheets("B").Cells(i, 3).Value = NameBox1.Value
Worksheets("B").Cells(i, 4).Value = NameBox2.Value
Worksheets("B").Cells(i, 7).Value = AmountBox.Value
End If

If CompanyBox.Value = "B" And GroupBox.Text = "2" And TpyeBox.Text = "M1" Then
i = WorksheetFunction.CountA(Worksheets("B").Range("B:B")) + 3

Worksheets("B").Cells(i, 2).Value = RefBox.Value
Worksheets("B").Cells(i, 3).Value = NameBox1.Value
Worksheets("B").Cells(i, 4).Value = NameBox2.Value
Worksheets("B").Cells(i, 9).Value = AmountBox.Value
End If

If CompanyBox.Value = "B" And GroupBox.Text = "2" And TpyeBox.Text = "M2" Then
i = WorksheetFunction.CountA(Worksheets("B").Range("B:B")) + 3

Worksheets("B").Cells(i, 2).Value = RefBox.Value
Worksheets("B").Cells(i, 3).Value = NameBox1.Value
Worksheets("B").Cells(i, 4).Value = NameBox2.Value
Worksheets("B").Cells(i, 10).Value = AmountBox.Value
End If

If CompanyBox.Value = "B" And GroupBox.Text = "2" And TpyeBox.Text = "M3" Then
i = WorksheetFunction.CountA(Worksheets("B").Range("B:B")) + 3

Worksheets("B").Cells(i, 2).Value = RefBox.Value
Worksheets("B").Cells(i, 3).Value = NameBox1.Value
Worksheets("B").Cells(i, 4).Value = NameBox2.Value
Worksheets("B").Cells(i, 11).Value = AmountBox.Value
End If
End Sub

Private Sub ClearButton_Click()
CompanyBox.Value = ""
RefBox.Value = ""
NameBox1.Value = ""
NameBox2.Value = ""
GroupBox.Value = ""
TypeBox.Value = ""
AmountBox.Value = ""
CompanyBox.SetFocus (debug ที่ row นี้คะ)

End Sub


Re: สูตร vlookup ใน textbox

Posted: Wed Jan 16, 2013 11:19 am
by snasui
:D Code Run ไม่ได้เพราะเขียนชื่อ TypeBox ไม่ถูกต้องครับ

เนื่องจากเป็น ActiveX Object บน Excel ไม่มี Property สำหรับการ SetFocus ให้ใช้ Code ตามด้านล่างแทนครับ

Code: Select all

CompanyBox.Activate

Re: สูตร vlookup ใน textbox

Posted: Wed Jan 16, 2013 11:36 am
by natthaporn
สามารถ run ได้แล้วคะ แค่ความจริงแล้วตัวอย่างดังกล่าวเป็นเพียงแค่การ test ซึ่งข้อมูลจริงจะมี sheet ประมาณ 10 sheet มี group มากกว่า 7 group และมี type ประมาณ 15 type
ซึ่งดิฉันคาดว่าจะต้องเขียน code ยาวมากเลยคะ
รบกวนอาจารย์ช่วยเขียน code เป็น guideline ให้หน่อยได้ไหมคะ ดิฉันจะทดลองทำเป็น step ไป เพราะถ้าไม่มีใครแนะนำดิฉันก็ไม่ได้เริ่ม เพราะทุกวันนี้ดิฉันศึกษาด้วยตนเอง โดยการเข้าไปดูตัวอย่างจาก web ต่าง ๆ แต่ก็ไม่เข้าใจทั้งหมดเพราะดืฉันไม่มีโจทย์ เหมือนในครั้งนี้
ขอขอบคุณคะ

Re: สูตร vlookup ใน textbox

Posted: Wed Jan 16, 2013 2:49 pm
by snasui
:D ช่วยอธิบายขั้นตอนและเงื่อนไขในการทำงานนี้ครับ ต้องการนำข้อมูลจากไหนไปไหน ด้วยเงือนไขใดบ้าง เพื่อจะได้เข้าใจตรงกัน

ปกติ Excel สามารถใช้สูตรในการดึงข้อมูลโดยดูเงื่อนไขจากเซลล์ได้เลย ไม่จำเป็นต้องใช้ TextBox และ Code VBA เข้ามาช่วย ไม่ทราบว่ามีข้อจำกัดใดจึงได้ใช้ VBA ในการทำงานนี้ครับ

Re: สูตร vlookup ใน textbox

Posted: Wed Jan 16, 2013 4:54 pm
by natthaporn
ปกติแล้วถ้าเป็นตัวเลขหรือText ที่มีรายละเอียดไม่ซับซ้อน ดิฉันจะใช้สูตรใน excel ในการดึงข้อมูล
แต่เหตุผลที่ดิฉันต้องนำ code มาช่วย เนื่องจากเป็นการทำงานโดยการคีย์ข้อมูลเข้าใน excel file ตรง ๆ
โดย source นั้นมาจาก hard copy และรายละเอียดที่คีย์เป็นตัวอักษรยาว 30-80 character (NameText1
และ NameTex2) ซึ่งดิฉันต้องขอโทษด้วยที่ไม่สามารถส่งให้อาจารย์ดูได้เนื่องจากข้อมูลดังกล่าวเป็น
ความลับของบริษัทคะ
โดยที่ดิฉันได้เก็บข้อมูลของ NameText1 และ NameText2 ที่มีประมาณ 1,000 กว่าแถวไว้ที่ sheet ("data")
ซึ่งดิฉันสร้าง form นี้ขึ้นมาก็เพื่อ update การเปลี่ยนแปลงตัวเลขของ Amount เข้าไปใน sheet A,B,…..
ตาม hard copy ที่หน่วยงานอื่นส่งเข้ามา
ซึ่งตามจริงแล้ว Box ที่จะต้องคีย์มีมากกว่านี้อีกคะ นี้เป็นเพียงตัวอย่างเท่านั้นคะ

โดยมีเงื่อนไขดังนี้คะ
1. CompanyBox = A,B,C หรือ D
2. GroupBox = 1,2,3 หรือ 4
3. TypeBox = M1,M2 หรือ M3

ยกตัวอย่างเช่น ถ้าที่ CompanyBox = A และ GroupBox = 2 และ TypeBox = M3 เมื่อกด save แล้ว
ให้ค่าที่ save รายการที่ 1 ไปแสดงที่ row แรกต่อจาก header
ให้ค่าที่อยู่ใน CodeBox ไปแสดงที่ sheet = A ที่ cell = B4
ให้ค่าที่อยู่ใน NameBox1 ไปแสดงที่ sheet = A ที่ cell = C4
ให้ค่าที่อยู่ใน NameBox2 ไปแสดงที่ sheet = A ที่ cell = D4
ให้ค่าที่อยู่ใน AmountBox ไปแสดงที่ sheet = A ที่ cell = K4
เมื่อกด clear ให้ลบข้อมูลที่อยู่ใน Box ทั้งหมด แล้วให้ curser ไปอยู่ที่ CompanyBox

ถ้าที่ CompanyBox = A และ GroupBox = 1 และ TypeBox = M2 เมื่อกด save แล้ว
ให้ค่าที่ save รายการที่ 2 ไปต่อท้ายรายการที่ 1 โดย
ให้ค่าที่อยู่ใน CodeBox ไปแสดงที่ sheet = A ที่ cell = B5
ให้ค่าที่อยู่ใน NameBox1 ไปแสดงที่ sheet = A ที่ cell = C5
ให้ค่าที่อยู่ใน NameBox2 ไปแสดงที่ sheet = A ที่ cell = D5
ให้ค่าที่อยู่ใน AmountBox ไปแสดงที่ sheet = A ที่ cell = F5
เมื่อกด clear ให้ลบข้อมูลที่อยู่ใน Box ทั้งหมด แล้วให้ curser ไปอยู่ที่ CompanyBox

ถ้าที่ CompanyBox = B และ GroupBox = 1 และ TypeBox = M2 เมื่อกด save แล้ว
ให้ค่าที่ save รายการที่ 1 ไปแสดงที่ row แรกต่อจาก header
ให้ค่าที่อยู่ใน CodeBox ไปแสดงที่ sheet = A ที่ cell = B4
ให้ค่าที่อยู่ใน NameBox1 ไปแสดงที่ sheet = A ที่ cell = C4
ให้ค่าที่อยู่ใน NameBox2 ไปแสดงที่ sheet = A ที่ cell = D4
ให้ค่าที่อยู่ใน AmountBox ไปแสดงที่ sheet = A ที่ cell = F4

และถ้า save รายการที่ 2, 3,…. ก็ให้ต่อท้ายไปเรื่อย ๆ คะ
ขอรบกวนอาจารย์ด้วยนะคะ ขอบคุณคะ

Re: สูตร vlookup ใน textbox

Posted: Wed Jan 16, 2013 5:25 pm
by snasui
natthaporn wrote:ถ้าที่ CompanyBox มีค่าเป็น B และ GroupBox = 1 และ TypeBox = M2 เมื่อกด save แล้ว
ให้ค่าที่ save รายการที่ 1 ไปแสดงที่ row แรกต่อจาก header
ให้ค่าที่อยู่ใน CodeBox ไปแสดงที่ sheet = A ที่ cell = B4
ให้ค่าที่อยู่ใน NameBox1 ไปแสดงที่ sheet = A ที่ cell = C4
ให้ค่าที่อยู่ใน NameBox2 ไปแสดงที่ sheet = A ที่ cell = D4
ให้ค่าที่อยู่ใน AmountBox ไปแสดงที่ sheet = A ที่ cell = F4
:D CompanyBox กับชีทต่าง ๆ สัมพันธ์กันอย่างไร เหตุใด CompanyBox ค่าเป็น B แต่นำไปวางในชีท A ครับ

Re: สูตร vlookup ใน textbox

Posted: Wed Jan 16, 2013 5:56 pm
by natthaporn
ต้องขอโทษด้วยคะ จริง ๆ แล้วต้องเป็น sheet = B
สงสัยดิฉันต้องเปลี่ยนแว่นใหม่แล้วคะ เพราะเห็น A เป็น B แล้ว

Re: สูตร vlookup ใน textbox

Posted: Wed Jan 16, 2013 8:35 pm
by snasui
:lol: ลองดูตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

Private Sub SaveButton_Click()
    Dim groupCol As Integer
    Dim Comp As String
    Dim gNum As Integer
    Dim lastRow As Long
    Comp = CompanyBox.Text
    groupCol = Application.Match("Group" & GroupBox.Text, Sheets(Comp).Range("2:2"), 0)
    gNum = Application.Match(TypeBox.Text, Sheets(Comp).Range("E3:H3"), 0) - 1
    lastRow = Sheets(Comp).Range("B" & Rows.Count).End(xlUp).Row + 1
    If Sheets(Comp).Range("B4") = "" Then lastRow = lastRow + 1
    With Worksheets(Comp)
        .Cells(lastRow, 2).Value = RefBox.Value
        .Cells(lastRow, 3).Value = NameBox1.Value
        .Cells(lastRow, 4).Value = NameBox2.Value
        .Cells(lastRow, groupCol + gNum).Value = AmountBox.Value
    End With
End Sub

Re: สูตร vlookup ใน textbox

Posted: Wed Jan 16, 2013 10:57 pm
by natthaporn
สามารถ run กับ file ตัวอย่างได้แล้วคะ แต่ดิฉันจะขอศึกษา code ที่อาจารย์แนะนำมาให้เข้าใจก่อน ก่อนที่จะนำไปปรับใช้กับข้อมูลจริง
ต้องขอขอบคุณอาจารย์มากคะ และดิฉันจะคำแนะนำของอาจารย์มาใช้เพื่อให้เกิดประโยชน์ในการทำงานของตัวดิฉันเองและเพื่อนร่วมงานคะ

Re: สูตร vlookup ใน textbox

Posted: Thu Jan 17, 2013 1:17 am
by natthaporn
เรียน อาจารย์ ดิฉันได้พยายามปรับ code อยู่หลายรอบแล้ว แต่ก็ไม่ประสบผลสำเร็จ ดิฉันเข้าใจความหมาย
ใน code ที่อาจารย์เขียนนะคะ อาจเป็นเพราะดิฉันเริ่มเขียนจาก code ที่ยาว ๆ ก่อน แต่อาจจะยังไม่เข้าใจทั้งหมด
จึงทำให้ไม่สามารถปรับ code ของอาจารย์มาใช้กับ file จริงได้คะ
ดิฉันขอรบกวนอาจารย์อีกครั้งนะคะ

Code: Select all

Private Sub SaveButton_Click()
    Dim Region As string  (debug)
    Dim ProductCol As String (debug)
    Dim gNum As Integer (debug)
    Dim lastRow As Long (debug)
    Region = RegioncomboBox.text (debug)
    ProductCol = Application.Match(ProductcomboBox.Text, Sheets(Region).Range("4:4"), 0) (debug)
    gNum = Application.Match(Competitorcombobox.Text, Sheets(Region).Range("I5:S5"), 0) - 1 (debug)
    lastRow = Sheets(Region).Range("B" & Rows.Count).End(xlUp).Row + 1 (debug)
    if Sheets(Region).Range("B6") = "" Then lastRow = lastRow + 1 (debug)
    With Worksheets(Region) (debug)
        .Cells(lastRow, 2).Value = DateComboBox.Value (debug)
        .Cells(lastRow, 3).Value = SectionComboBox.Value
        .Cells(lastRow, 4).Value = CustomerComboBox1.Value
        .Cells(lastRow, 5).Value = CustomerComboBox2.Value
        .Cells(lastRow, 6).Value = Referencecomcobox.Value (debug)
        .Cells(lastRow, 7).Value = NameTextBox1.Value
        .Cells(lastRow, 8).Value = NameTextBox2.Value (debug)
        .Cells(lastRow, productCol + gNum).Value = AmountTextBox.Value
    end With (debug)

End Sub


Re: สูตร vlookup ใน textbox

Posted: Thu Jan 17, 2013 7:01 am
by snasui
:D Code ที่เขียนตามไฟล์แนบมีอักขระส่วนเกินปนอยู่ด้านหน้าแทบทุกบรรทัด จึงทำให้ Code แสดงเป็นสีแดง

การแก้ไข ให้ทำการลบอักขระด้านหน้าของทุกบรรทัดทิ้งไป จนกระทั่งแต่ละ Code มาชิดด้านหน้าสุดของบรรทัด แล้วค่อยปรับการเยื้องใหม่ตามต้องการ

Referencecomcobox ใน Code เขียนไม่ถูกต้อง ตัว c ต้องเปลี่ยนเป็นตัว b

และถึงแม้จะปรับสูตรให้ทำงานได้แล้ว แต่ Code ยังบันทึกผิดบรรทัด ทั้งนี้เพราะว่ามีคำว่า Total ในคอลัมน์ B ของทุกชีท เป็นอุปสรรคการทำงานของตัวแปร lastRow ลองปรับ Code ดูเองก่อนครับ

ในโอกาสต่อไป Code ใดที่ต้องการใช้งานแต่ทำงานไม่ถูกต้อง จะต้องไม่ Mark Comment ไว้ด้านหน้า ให้ Mark ไว้ด้านบนหรือด้านหลังแทนครับ

Re: สูตร vlookup ใน textbox

Posted: Thu Jan 17, 2013 8:57 am
by natthaporn
ลองปรับ code และ file ตามที่อาจารย์แนะนำ สามารถ run ได้แล้วคะ ส่วนเรื่องการ mark code ในครั้งหน้าจะทำตามที่
อาจารย์แนะนำคะ
ขอขอบคุณอาจารย์อย่างยิ่งคะ