Page 1 of 2
Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Tue Nov 21, 2017 2:15 pm
by Benmore
Code: Select all
Private Sub btsearch_Click()
On Error Resume Next
Dim found As Boolean
Dim r As Range
For Each r In Sheet2.Columns(A).SpecialCells(xlCellTypeConstants)
Sheet2.Activate
Next r
If found Then
If Err.Number = 91 Then
TextBox1.RowSource = "combobox1"
End If
Exit Sub
Else
MsgBox "ไม่มีข้อมูล"
TextBox1.Value = ""
Combobox1.Value = ""
End If
End Sub

โค้ดอยู่ที่ Userform2 ค่ะ

รบกวนดูโค้ดค้นหาให้หน่อยค่ะ
เช่น ถ้าเราต้องการค้นหาคำว่า section ให้เลือกข้อมูล section ใน combobox1 แล้วกดปุ่มค้นหาให้แสดงข้อมูลคอลลัมน์ section ที่อยู่ในชีท DATA ทั้งหมดค่ะ

ถ้าเราต้องการ Add ข้อมูลเพิ่มลงไปใน ชีท DATA
เช่น ต้องการบันทึกข้อมูลไซส์เสื้อ ให้เลือกข้อมูลเสื้อใน combobox1 แล้วใส่ข้อมูลลงใน textbox1 คือ XXXL แล้วกดปุ่ม ADD ข้อมูลก็จะถูกบันทึกลงในชีท DATA คอลลัมน์ F (เสื้อ)
Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Tue Nov 21, 2017 8:38 pm
by snasui

ค่อย ๆ ถามตอบกันไปครับ
จากไฟล์แนบ ComboBox1 ยังเลือกรายการไม่ได้ ช่วยกำหนดให้เลือกได้แล้วแนบไฟล์มาใหม่ครับ
กรณีเลือก ComboBox1 แล้ว ให้แสดงข้อมูลที่ใด แสดงอย่างไร ช่วยอธิบายเพิ่มด้วยครับ
Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Wed Nov 22, 2017 8:34 am
by Benmore
snasui wrote:
ค่อย ๆ ถามตอบกันไปครับ
จากไฟล์แนบ ComboBox1 ยังเลือกรายการไม่ได้ ช่วยกำหนดให้เลือกได้แล้วแนบไฟล์มาใหม่ครับ
กรณีเลือก ComboBox1 แล้ว ให้แสดงข้อมูลที่ใด แสดงอย่างไร ช่วยอธิบายเพิ่มด้วยครับ
Code: Select all
Private Sub ComboBox1_Change()
If ComboBox1.Value = "Section" Then
ListBox1.RowSource = "DATA!B2:B20"
Else
ListBox1.Value = ""
TextBox1.Value = ""
End If
If ComboBox1.Value = "Uniform_Type" Then
ListBox1.RowSource = "DATA!C2:C20"
Else
ListBox1.Value = ""
TextBox1.Value = ""
End If
If ComboBox1.Value = "Size_Shirth" Then
ListBox1.RowSource = "DATA!G2:G20"
Else
ListBox1.Value = ""
TextBox1.Value = ""
End If
If ComboBox1.Value = "Size_Trousere" Then
ListBox1.RowSource = "DATA!H2:H60"
Else
ListBox1.Value = ""
TextBox1.Value = ""
End If
End Sub
โค้ด combobox ค่ะ ลองใส่โค้ดแล้วข้อมูลไม่ขึ้นค่ะผิดพลาดตรงไหนค่ะ
เช่น ถ้าเลือก section แล้วกดค้นหา ข้อมูล ในคอลลัมน์ section ทั้งหมดก็จะแสดงในlistboxค่ะ
Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Wed Nov 22, 2017 9:09 pm
by logic
เลือกแล้วให้มันทำอะไรพอจะเข้าใจอยู่ครับ
โค้ดนี้มันใช้เมื่อ ComboBox1 มีการเปลี่ยนแปลงนั่นหมายถึงว่ามันมีค่าให้เลือกก่อน แต่ตอนนี้ค่าที่จะให้เลือกมันยังไม่มีเลยนะครับ
Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Wed Nov 22, 2017 9:45 pm
by Benmore
logic wrote:เลือกแล้วให้มันทำอะไรพอจะเข้าใจอยู่ครับ
โค้ดนี้มันใช้เมื่อ ComboBox1 มีการเปลี่ยนแปลงนั่นหมายถึงว่ามันมีค่าให้เลือกก่อน แต่ตอนนี้ค่าที่จะให้เลือกมันยังไม่มีเลยนะครับ
ต้องแก้ไขตรงไหนค่ะ
Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Wed Nov 22, 2017 11:47 pm
by DhitiBank
Benmore wrote:ต้องแก้ไขตรงไหนค่ะ
ลองศึกษาคำสั่ง AddItem เข้าคอมโบบ๊อกซ์จากลิ้งค์ด้านล่างครับ
http://www.ozgrid.com/Excel/add-values- ... -excel.htm
https://msdn.microsoft.com/en-us/vba/ac ... hod-access
โดยเขียนคำสั่งไว้ในโพรซีเยอร์
Userform_Initialize
ของ
UserForm2
ถัดจากบรรทัด
Call ClearData
ครับ
Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Thu Nov 23, 2017 8:45 am
by Benmore
Code: Select all
Private Sub ClearData()
TextBox1.Text = vbNullString
TextBox1.SetFocus
End Sub
Private Sub btsearch_Click()
On Error Resume Next
Dim found As Boolean
Dim r As Range
For Each r In Sheet2.Columns(A).SpecialCells(xlCellTypeConstants)
Sheet2.Activate
Next r
If found Then
If Err.Number = 91 Then
TextBox1.RowSource = "combobox1"
End If
Exit Sub
Else
MsgBox "äÁèÁÕ¢éÍÁÙÅ"
TextBox1.Value = ""
Combobox1.Value = ""
End If
End Sub
Private Sub CommandButton1_Click()
Dim CurrentRow As Long
Sheet2.Activate
If TextBox1 <> vbNullString Then
CurrentRow = WorksheetFunction.CountA(Range("A:A")) + 1
Cells(CurrentRow, 1).Value = TextBox1.Text
Call ClearData
Else
MsgBox ("¡Ãسһé͹¢éÍÁÙÅ")
End If
End Sub
Private Sub CommandButton2_Click()
UserForm2.Hide
End Sub
Private Sub UserForm_Initialize()
Call ClearData
Combobox1.AddItem "Section"
Combobox1.AddItem "Uniform_Type"
Combobox1.AddItem "Size_Shirth"
Combobox1.AddItem "Size_Trousere"
Combobox1.AddItem "Group"
Combobox1.AddItem "Position"
Combobox1.AddItem "DEPT"
Combobox1.AddItem "Uniform_No_F"
Combobox1.AddItem "Uniform_No_M"
End Sub
Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Fri Nov 24, 2017 8:47 am
by Benmore
Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Fri Nov 24, 2017 11:27 am
by logic
ไม่บอกเสียหน่อยหรือครับว่าทำอะไรไปแล้ว ยังติดเรื่องใด

Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Fri Nov 24, 2017 11:48 am
by Benmore
logic wrote:ไม่บอกเสียหน่อยหรือครับว่าทำอะไรไปแล้ว ยังติดเรื่องใด

ลองปรับแล้วค่ะ ก็ยังรันไม่ขึ้นอยู่ดีค่ะ
ติดตรงเลือกหัวข้อใน combobox1 แล้วให้ข้อมูลในชีท DATA ที่มีหัวข้อตรงกับที่เลือกมาแสดงใน listbox ไม่ได้ค่ะ error ตรง
Code: Select all
nRow = Sheet2.Columns(A).Find(Combobox1.Value).Row

ติดตรงเพิ่มข้อมูลงในชีท DATA ค่ะ ให้เพิ่มข้อมูลลงตามหัวข้อที่เราเลือกค่ะ
Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Fri Nov 24, 2017 1:28 pm
by DhitiBank
ลองแบบนี้ครับ
ผมปรับการใส่รายการในคอมโบบ๊อกซ์ให้ใหม่ ควรใส่จากหัวคอลัมน์จริงๆ ในชีทครับ เพราะถ้าหากเราเขียนไปในโค้ดเองอาจมีปัญหาได้เวลามีใครไปเปลี่ยนหัวคอลัมน์โดยไม่ตั้งใจ
Code: Select all
Private Sub UserForm_Initialize()
Dim r As Range, rTarget As Range
Call ClearData
With Sheets("data")
Set rTarget = .Range(.Range("a1"), .Cells(1, .Columns.Count).End(xlToLeft)) _
.SpecialCells(xlCellTypeVisible)
Set rTarget = rTarget.SpecialCells(xlCellTypeConstants)
End With
For Each r In rTarget
Combobox1.AddItem r.Value
Next r
End Sub
ส่วนด้านล่างเป็นการใส่รายการเข้าไปใน Listbox1 เมื่อกดปุ่ม search
Code: Select all
Private Sub btsearch_Click()
Dim txt As String, r As Range, rList As Range
txt = Combobox1.Value
With Sheets("data")
Set r = .Rows(1).Find(txt)
Set rList = .Range(r.Offset(1, 0), .Cells(.Rows.Count, r.Column).End(xlUp)) _
.SpecialCells(xlCellTypeConstants)
End With
ListBox1.Clear
For Each r In rList
ListBox1.AddItem r.Value
Next r
'If Err.Number = 91 Then
' ListBox1.RowSource = "Combobox1.Value"
' MsgBox "ไม่มีข้อมูล"
'End If
End Sub
Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Fri Nov 24, 2017 2:38 pm
by Benmore
ตรงนี้ทำได้แล้วขอบคุณมากๆค่ะ
รบกวนถามต่อค่ะ พอดีโค้ดตรงส่วน ADD มันบันทึกไม่ลงชีท "การเบิก" แล้วก็แสดงข้อมูลแปลกๆใน listbox ค่ะ
Code: Select all
'ADD
Private Sub CommandButton1_Click()
Str_text = Combobox1.Text & " " & TextBox1.Text
With ListBox1
.AddItem Str_text
End With
Dim strFind As String
Dim oRng As Range
Dim fRng As Range
Dim i As Long
strFind = Combobox1.Value ' string to find
Set oRng = Worksheets("DATA").Rows(1) ' column to search
Set fRng = oRng.Cells(oRng.Cells.Count)
For i = 1 To Application.CountIf(oRng, strFind & "*")
Set fRng = oRng.Cells.Find(What:=strFind, _
LookIn:=xlValues, _
LookAt:=xlPart, _
After:=fRng, _
MatchCase:=False)
If Not fRng Is Nothing Then
With ListBox1
.AddItem fRng.Offset(1, 0).Value
MsgBox ("ºÑ¹·Ö¡¢éÍÁÙÅàÃÕºÃéÍÂ")
Call ClearData
End With
Else
MsgBox ("¡Ãسһé͹¢éÍÁÙÅ")
End If
Next i
End Sub
Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Sun Nov 26, 2017 10:51 am
by snasui

Code ตามโพสต์ #12 ไม่มีบรรทัดใดที่เป็นการนำค่าไปบันทึกในชีต "การเบิก" ไฟล์ที่แนบมาก็ไม่มีชีต "การเบิก" แต่อย่างใด กรุณาเขียน Code เพิ่มเติมและแนบไฟล์มาใหม่ครับ
Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Tue Nov 28, 2017 8:19 am
by Benmore
Code: Select all
'ADD
Private Sub CommandButton1_Click()
Str_text = ComboBox1.Text & " " & TextBox1.Text
With ListBox1
.AddItem Str_text
End With
Dim strFind As String
Dim oRng As Range
Dim fRng As Range
Dim i As Long
strFind = ComboBox1.Value ' string to find
Set oRng = Worksheets("DATA").Rows(1) ' column to search
Set fRng = oRng.Cells(oRng.Cells.Count)
For i = 1 To Application.CountIf(oRng, strFind & "*")
Set fRng = oRng.Cells.Find(What:=strFind, _
LookIn:=xlValues, _
LookAt:=xlPart, _
After:=fRng, _
MatchCase:=False)
If Not fRng Is Nothing Then
With ListBox1
.AddItem fRng.Offset(1, 0).Value
MsgBox ("ºÑ¹·Ö¡¢éÍÁÙÅàÃÕºÃéÍÂ")
Call ClearData
End With
Else
MsgBox ("¡Ãسһé͹¢éÍÁÙÅ")
End If
Next i
End Sub
รบกวนดูโค้ดให้หน่อยค่ะ ถ้าต้องการ add ข้อมูลตามที่เลือกหัวข้อใน combobox ต้องเพิ่มโค้ดตรงไหนเข้าไปบ้างค่ะ
ตัวอย่าง

ต้องการ add ข้อมูล Uniform_Type เพิ่ม รองเท้า เข้าไปในคอลลัมน์ Uniform_Type ในชีท DATA พร้อมแสดงใน listbox ด้วยค่ะ
Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Tue Dec 05, 2017 5:26 pm
by Benmore
Benmore wrote:Code: Select all
'ADD
Private Sub CommandButton1_Click()
Str_text = ComboBox1.Text & " " & TextBox1.Text
With ListBox1
.AddItem Str_text
End With
Dim strFind As String
Dim oRng As Range
Dim fRng As Range
Dim i As Long
strFind = ComboBox1.Value ' string to find
Set oRng = Worksheets("DATA").Rows(1) ' column to search
Set fRng = oRng.Cells(oRng.Cells.Count)
For i = 1 To Application.CountIf(oRng, strFind & "*")
Set fRng = oRng.Cells.Find(What:=strFind, _
LookIn:=xlValues, _
LookAt:=xlPart, _
After:=fRng, _
MatchCase:=False)
If Not fRng Is Nothing Then
With ListBox1
.AddItem fRng.Offset(1, 0).Value
MsgBox ("ºÑ¹·Ö¡¢éÍÁÙÅàÃÕºÃéÍÂ")
Call ClearData
End With
Else
MsgBox ("¡Ãسһé͹¢éÍÁÙÅ")
End If
Next i
End Sub
รบกวนดูโค้ดให้หน่อยค่ะ ถ้าต้องการ add ข้อมูลตามที่เลือกหัวข้อใน combobox ต้องเพิ่มโค้ดตรงไหนเข้าไปบ้างค่ะ
ตัวอย่าง

ต้องการ add ข้อมูล Uniform_Type เพิ่ม รองเท้า เข้าไปในคอลลัมน์ Uniform_Type ในชีท DATA พร้อมแสดงใน listbox ด้วยค่ะ
รบกวนตรวจสอบโค้ดให้หน่อยค่ะ

Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Wed Dec 06, 2017 9:00 am
by logic
ลองดูครับ
Code: Select all
'ADD
Private Sub CommandButton1_Click()
' Str_text = Combobox1.Text & " " & TextBox1.Text
' With ListBox1
' .AddItem Str_text
' End With
Dim strFind As String
Dim oRng As Range
Dim fRng As Range
Dim i As Long
strFind = Combobox1.Value ' string to find
Set oRng = Worksheets("DATA").Rows(1) ' column to search
Set fRng = oRng.Cells(oRng.Cells.Count)
For i = 1 To Application.CountIf(oRng, strFind & "*")
Set fRng = oRng.Cells.Find(What:=strFind, _
LookIn:=xlValues, _
LookAt:=xlPart, _
After:=fRng, _
MatchCase:=False)
If Not fRng Is Nothing Then
fRng.End(xlDown).Offset(1, 0).Value = Me.TextBox1.Text
With ListBox1
.AddItem Me.TextBox1.Text 'fRng.Offset(1, 0).Value
MsgBox ("บันทึกข้อมูลเรียบร้อย")
Call ClearData
End With
Else
MsgBox ("กรุณาป้อนข้อมูล")
End If
Next i
End Sub
Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Wed Dec 06, 2017 11:15 am
by Benmore
ตรงปุ่ม ADD ทำได้แล้วขอบคุณมากๆค่ะ
รบกวนสอบถามต่อค่ะ
รบกวนช่วยดูโค้ดในปุ่ม Delete
Code: Select all
Private Sub CommandButton3_Click()
Dim lng As Long
Answer = MsgBox("Are you sure you want to delete data from database?", 4 + 48, "Delete database")
If Answer = 6 Then
lng = Application.Match(ListBox1.Value, Worksheets("DATA").Range("E:E"), 0)
Worksheets("DATA").Rows(lng).Delete
Unload Me
ElseIf Answer = 7 Then
End If
End Sub
ให้หน่อยค่ะ พอดีลองเอาโค้ดที่หาได้แล้วมาปรับก็ยังลบไม่ได้ค่ะ

Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Wed Dec 06, 2017 7:25 pm
by snasui

ต้องการจะลบข้อมูลใด อย่างไร กรุณาเขียนอธิบายมาอย่างละเอียดครับ
Code ที่เขียนมานั้นเป็นการลบค่าใน ListBox1 ไม่ทราบว่าต้องการที่จะลบอย่างไร ลบทั้งหมด หรือ ลบรายการที่เลือก หรือ อื่นใดครับ
นอกจากนี้ควรยกตัวอย่างรายการที่จะลบมาด้วย จะได้สะดวกในการทดสอบ ทดลอง และการเข้าถึงปัญหาครับ
Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Thu Dec 07, 2017 8:30 am
by Benmore
ลบรายการที่เลือกค่ะ เช่น เลือก XXL พอกดปุ่ม Delete XXL ก็ถูกลบค่ะ
Re: Add ข้อมูลเพิ่มลงไปในชีท โดยมีเงื่อนไข
Posted: Sat Dec 09, 2017 11:48 am
by snasui

ตัวอย่าง Code การลบรายการใน ListBox เฉพาะรายการที่เลือกพร้อมลบรายการในชีต DATA ครับ
Code: Select all
Dim lng As Long
Dim i As Long, j As Long
With Sheets("DATA")
If Application.CountIf(.Rows(1), Me.Combobox1.Text) = 0 Then
Exit Sub
Else
j = Application.Match(Me.Combobox1.Text, .Rows(1), 0)
End If
End With
i = Me.ListBox1.ListIndex
Answer = MsgBox("Are you sure you want to delete data from database?", 4 + 48, "Delete database")
If Answer = 6 Then
If i <> -1 Then
lng = Application.Match(Me.ListBox1.List(i), Sheets("DATA").Columns(j), 0)
Worksheets("DATA").Cells(lng, j).Delete
Me.ListBox1.RemoveItem Me.ListBox1.ListIndex
Unload Me
End If
End If