EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)ตัวอย่าง เช่น เมื่อเลือกข้อมูลในcombox1 เป็นเสื้อแขนยาว combobox2 เป็นไซส์ M textbox 4 ใส่จำนวนเป็น 1 ข้อมูลทั้งหมดก็จะแสดงใน textbox3 คือ เสื้อแขนยาว ไซส์ M จำนวน 1snasui wrote: ช่วยแสดงวิธีเลือกให้ข้อมูลหายมาอย่างละเอียดครับ
สิ่งที่ถามตอบกันอยู่นี่เฉพา ComboBox1, ComboBox2, TextBox3 และ TextBox4 เท่านั้น หากเป็น Object อื่นที่กระทบกับ Object เหล่านี้ให้พยายามปรับมาเองก่อน แล้วค่อยแจ้งสิ่งที่ยังเป็นปัญหามาใหม่ ระบุลำดับขั้นตอนมาอย่างละเอียดครับ
ถัดมา 1logic wrote:น่าสนใจดีครับ
สรุปว่าให้เรียงลำดับลงมาแทนที่จะแทนที่ข้อมูล แบบนี้หรือครับ
รอบแรก
combox1 เป็นเสื้อแขนยาว
combobox2 เป็นไซส์ M
textbox 4 ใส่จำนวนเป็น 1
ให้ textbox3 คือ เสื้อแขนยาว ไซส์ M จำนวน 1
ถัดมา 1
ถ้ากรอก textbox 4 เป็น 5 ให้ textbox3 แสดงแบบไหน
ถ้ากรอก textbox 4 ซ้ำอีกทีเป็น 10 ให้ textbox3 แสดงแบบไหน
ถัดมา 2
ถ้าผมเลือก combobox เป็น ไซส์ L ซ้ำอีกที ให้ textbox3 แสดงแบบไหนครับ
logic wrote:แสดงว่าขึ้นชุดใหม่เมื่อเลือก combobox1 ใหม่ ถ้าแค่เปลี่ยน combobox2 กับ textbox 4 ถือว่าเป็นการเปลียนข้อมูล
แล้วถ้าเลือก combobox1 ผิดจะทำอย่างไรต่อ เพราะมันจะไปเพิ่มใน textbox3 ด้วยตัวที่ผิดไปเรียบร้อยแล้ว
น่าจะต้องมีตัวอะไรบอกสักอย่างไหมว่าเพิ่มรายการหรือว่าเปลี่ยนข้อมูลเดิม อันนี้แค่เสนอ แต่ทั้งนี้ทั้งนั้น ต้องเขียนมาเองก่อนตามกฎของบอร์ดนะครับ
Code: Select all
Private Sub ComboBox1_Change()
If Combobox1.Value = "àÊ×éÍᢹÊÑé¹(Short Shirt)" Then
Combobox2.RowSource = "DATA!G2:G8"
Else
Combobox2.Value = ""
TextBox4.Value = ""
End If
If Combobox1.Value = "àÊ×éÍᢹÂÒÇ(Long Shirt)" Then
Combobox2.RowSource = "DATA!G2:G8"
Else
Combobox2.Value = ""
TextBox4.Value = ""
End If
If Combobox1.Value = "¡Ò§à¡§(Trousere)" Then
Combobox2.RowSource = "DATA!H2:H24"
Else
Combobox2.Value = ""
TextBox4.Value = ""
End If
If Combobox1.Value <> "" Then
myStr = TextBox3.Value & vbCrLf & "" & Combobox1.Value
TextBox3.Value = myStr
End If
End Sub
Private Sub ComboBox2_Change()
If Combobox1.Text <> "" Then myStr = TextBox3.Value
If Combobox2.Value <> "" Then myStr = myStr & vbCrLf & "ä«Êì " & Combobox2.Text
If TextBox4.Text <> "" Then myStr = myStr
TextBox3.Text = myStr
End Sub
Private Sub TextBox4_Change()
If Combobox1.Text <> "" Then myStr = TextBox3.Value
If Combobox2.Value <> "" Then myStr = TextBox3.Value
If TextBox4.Text <> "" Then myStr = myStr & vbCrLf & "¨Ó¹Ç¹ " & TextBox4.Text
TextBox3.Text = myStr
End Sub
ลองออกแบบปุ่ม add และปุ่ม clear แล้วค่ะ ตอนนี้ติดอยู่ตรงที่พอกดปุ่ม add ข้อมูลครั้งที่สองจะทับข้อมูลแรกค่ะ ต้องแก้ไขตรงไหนค่ะsnasui wrote: ควรออกแบบให้มีปุ่ม Add ไว้ 1 ปุ่ม เมื่อเลือกเรียบร้อยแล้วค่อยคลิกปุ่ม Add เพื่อจะนำไปเรียงต่อกันที่ textbox3 ครับ อย่าลืมพิจารณาว่าจะต้องมีปุ่ม Clear textbox3 ด้วยหรือไม่ เพราะมีโอกาสที่จะ Add ผิดได้ครับ
Code: Select all
'Add
Private Sub CommandButton1_Click()
If Combobox1.Value <> vbNullString And Combobox2.Value <> vbNullString And TextBox4.Value <> vbNullString Then
TextBox3.Text = Combobox1.Value & vbCrLf & "ไซส์ " & Combobox2.Value & vbCrLf & "จำนวน " & TextBox4.Text
Else
MsgBox ("กรุณาป้อนข้อมูลให้ครบ")
End If
End Sub
Code: Select all
Private Sub CommandButton1_Click()
If Combobox1.Value <> vbNullString And Combobox2.Value <> vbNullString And TextBox4.Value <> vbNullString Then
TextBox3.Text = IIf(TextBox3.Text = "", TextBox3.Text, TextBox3.Text & vbCrLf) & _
Combobox1.Value & vbCrLf & "ไซส์ " & Combobox2.Value & vbCrLf & "จำนวน " & TextBox4.Text
Else
MsgBox ("กรุณาป้อนข้อมูลให้ครบ")
End If
End Sub
Code: Select all
'Save
Private Sub btsave_Click()
On Error Resume Next
Dim emptyRow As Integer
Dim strTb1 As Variant
Dim strTb3 As Variant
emptyRow = WorksheetFunction.Count("A3:A10000") + 1
If emptyRow = 0 Then
emptyRow = 2
Else
emptyRow = emptyRow + 2
Sheet9.Activate
strTb1 = Split(TextBox1.Text, vbCrLf)
strTb3 = Split(TextBox3.Text, vbCrLf)
Cells(emptyRow, 1).Value = VBA.Mid(strTb1(0), InStr(strTb1(0), ":") + 1) 'TextBox1.Value
Cells(emptyRow, 2).Value = VBA.Mid(strTb1(1), InStr(strTb1(1), ":") + 1) 'TextBox1.Value
Cells(emptyRow, 3).Value = VBA.Mid(strTb1(2), InStr(strTb1(2), ":") + 1) 'TextBox1.Value
Cells(emptyRow, 4).Value = VBA.Mid(strTb1(3), InStr(strTb1(3), ":") + 1) 'TextBox1.Value
Cells(emptyRow, 6).Value = strTb3(1) & "," & strTb3(2) & "," & strTb3(3) & vbCrLf & strTb3(4) & "," & strTb3(5) & "," & strTb3(6) 'TextBox3.Value
Cells(emptyRow, 7).Value = VBA.Mid(strTb3(7), InStr(strTb3(7), ":") + 1) & "," & VBA.Mid(strTb3(8), InStr(strTb3(8), ":") + 1) 'TextBox1.Value
Cells(emptyRow, 5).Value = comday.Value & "/" & commonth.Value & "/" & comyear.Value
MsgBox "บันทึกข้อมูลสำเร็จ"
Unload Me
Sheet1.Activate
End If
End Sub
on error resume next
ให้เป็น Comment ไปก่อนแล้วลองใหม่ ในการ Debug ต้องไม่ลืมทำเช่นนี้เสมอครับ