:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

Code VBA ค้นหาข้อมูลบนฟอร์ม

Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Code VBA ค้นหาข้อมูลบนฟอร์ม

Re: Code VBA ค้นหาข้อมูลบนฟอร์ม

#14

by snasui » Sat Jul 31, 2021 2:19 pm

:D ยินดีที่ช่วยได้ครับ

ขอบคุณสำหรับคำอวยพร ขอให้คุณ KHAMTUNM ปลอดภัยจาก Covid-19 เช่นกันครับ

Re: Code VBA ค้นหาข้อมูลบนฟอร์ม

#13

by KHAMTUNM » Sat Jul 31, 2021 1:54 pm

:thup: ขอบคุณครับสำหรับคำแนะนำและช่วยแก้ไข code จนสามารถนำไปใช้งานได้
สุดท้ายกระทู้นี้ขอให้อาจารย์มีสุขภาพแข็งแรงและปลอดภัยจากโรคโควิด-19 นะครับ :D

Re: Code VBA ค้นหาข้อมูลบนฟอร์ม

#12

by snasui » Fri Jul 30, 2021 6:40 pm

:D ตอนนี้คอลัมน์ J เป็นวันที่แบบ Text ไม่สามารถนำไปเทียบกับ Today() ที่เป็นวันที่แบบ Number ได้ ต้องแก้ไขฟากใดฟากหนึ่งเพื่อเป็นค่าที่เทียบกันได้เสียก่อนครับ
Attachments
TextDate.png
TextDate.png (44.82 KiB) Viewed 59 times

Re: Code VBA ค้นหาข้อมูลบนฟอร์ม

#11

by KHAMTUNM » Fri Jul 30, 2021 5:51 pm

:thup: ทำได้แล้วครับ แต่เมื่อบันทึกข้อมูลลงใน Sheet1 ซึ่งผมได้ทำ conditional formatting ก็ไม่แจ้งเตือนที่เลยกำหนดฝากอุปกรณ์ (End date) และเมื่อคลิกแก้ไขเปลี่ยนค่าที่ J17 เป็น ค.ศ จึงแจ้งเตือน เป็นแบบนี้จะแก้ไขยังไงดีครับ
Attachments
Test_Receive - 2.xlsm
(41.86 KiB) Downloaded 8 times
กฏ.JPG
กฏ.JPG (36.5 KiB) Viewed 61 times

Re: Code VBA ค้นหาข้อมูลบนฟอร์ม

#10

by snasui » Fri Jul 30, 2021 7:40 am

:D เพิ่ม Code ด้านล่างเข้าไปช่วยเพื่อที่จะ Add item แทนการใช้ RowSource ครับ

Code: Select all

Private Sub UserForm_Initialize()
    Dim ra As Range, r As Range
    With Worksheets("Sheet1")
        Me.ComboBox6.RowSource = ""
        Set ra = .Range("c3", .Range("c" & .Rows.Count).End(xlUp))
        For Each r In ra
            Me.ComboBox6.AddItem r.Value
        Next r
    End With
End Sub
และปรับ Code ใน Procedure Private Sub CommandButton1_Click() เฉพาะบรรทัดด้านล่างครับ

Code: Select all

'Other code
    If Application.CountIf(Range("c:c"), ComboBox6.Text) > 0 Then
        irow = Application.Match(Val(ComboBox6.Text), Range("c:c"), 0)
    Else
        irow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    End If
'Other code

Re: Code VBA ค้นหาข้อมูลบนฟอร์ม

#9

by KHAMTUNM » Fri Jul 30, 2021 6:47 am

ที่ Userform2 ค้นหาข้อมูลจาก Item No. เพื่อแก้ไขแล้วกดคำสั่ง Update ให้ข้อมูลที่แก้ไขแล้วบันทึกลงไปในแถวเดิม ช่วยแก้ไข Code ให้ใช้งานได้ด้วยครับ

Code: Select all

Private Sub CommandButton1_Click()
    Dim irow As Long
    Dim ws As Worksheet
    Set ws = Worksheets("sheet1")

    If Application.CountIf(Range("c:c"), ComboBox6.Text) > 0 Then
        irow = Application.Match(ComboBox6.Text, Range("c:c"), 0)
    Else
        irow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    End If
    ws.Cells(irow, 1).Value = Me.ComboBox1.Value
    ws.Cells(irow, 2).Value = Me.ComboBox2.Value
    ws.Cells(irow, 3).Value = Me.ComboBox6.Value
    ws.Cells(irow, 4).Value = Me.TextBox2.Value
    ws.Cells(irow, 5).Value = Me.TextBox3.Value
    ws.Cells(irow, 6).Value = Me.ComboBox3.Value
    ws.Cells(irow, 7).Value = Me.ComboBox4.Value
    ws.Cells(irow, 8).Value = Me.ComboBox5.Value
    ws.Cells(irow, 9).Value = Me.TextBox4.Value
    ws.Cells(irow, 10).Value = Me.TextBox5.Value
    ws.Cells(irow, 11).Value = Me.TextBox6.Value
End Sub
Attachments
Test_Receive - 3.xlsm
(41.52 KiB) Downloaded 5 times

Re: Code VBA ค้นหาข้อมูลบนฟอร์ม

#8

by snasui » Thu Jul 29, 2021 8:22 pm

:D กรุณาแนบไฟล์ล่าสุดพร้อมแนบ Code ที่ปรับปรุงแล้วมาด้วยจะได้ดูต่อไปจากนั้นครับ

Re: Code VBA ค้นหาข้อมูลบนฟอร์ม

#7

by KHAMTUNM » Thu Jul 29, 2021 4:58 pm

ยังทำไม่ได้ครับ

Re: Code VBA ค้นหาข้อมูลบนฟอร์ม

#6

by KHAMTUNM » Thu Jul 29, 2021 4:57 pm

:D ได้แค่นี้ครับอาจารย์

Code: Select all

Private Sub CommandButton1_Click()
    Dim irow As Long
    Dim ws As Worksheet
    Set ws = Worksheets("sheet1")

    If Application.CountIf(Range("c:c"), ComboBox6.Text) > 0 Then
        irow = Application.Match(ComboBox6.Text, Range("c:c"), 0)
    Else
        irow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    End If
    ws.Cells(irow, 1).Value = Me.ComboBox1.Value
    ws.Cells(irow, 2).Value = Me.ComboBox2.Value
    ws.Cells(irow, 3).Value = Me.ComboBox6.Value
    ws.Cells(irow, 4).Value = Me.TextBox2.Value
    ws.Cells(irow, 5).Value = Me.TextBox3.Value
    ws.Cells(irow, 6).Value = Me.ComboBox3.Value
    ws.Cells(irow, 7).Value = Me.ComboBox4.Value
    ws.Cells(irow, 8).Value = Me.ComboBox5.Value
    ws.Cells(irow, 9).Value = Me.TextBox4.Value
    ws.Cells(irow, 10).Value = Me.TextBox5.Value
    ws.Cells(irow, 11).Value = Me.TextBox6.Value
    End If
End Sub

Re: Code VBA ค้นหาข้อมูลบนฟอร์ม

#5

by snasui » Mon Jul 26, 2021 11:26 am

:D สามารถทำย้อนกลับกับโพสต์ #2 คือนำค่าในแต่ละ Object กลับไปใส่ในเซลล์

ซึ่งต้องทราบก่อนว่า ItemNo นั้น ๆ อยู่รายการที่เท่าใด ถ้าเข้าใจโพสต์ #2 ก็นำไปปรับใช้ได้ ลองปรับมาในแนวทางนั้นดูก่อน ติดตรงไหนค่อยถามกันต่อครับ

Re: Code VBA ค้นหาข้อมูลบนฟอร์ม

#4

by KHAMTUNM » Mon Jul 26, 2021 11:09 am

ขอถามเพิ่ม คือเมื่อค้นหาข้อมูลมาจะทำการแก้ไขที่ ComboBox5,TextBox4,TextBox5,TextBox6 แล้วกดคำสั่ง Update บนฟอร์ม จะแก้ไข Code ยังไงรบกวนช่วยด้วยครับ.

Code: Select all

Private Sub CommandButton1_Click()
Dim y As Long
Dim x As Integer
     x = MsgBox("Do you want to update?", vbOKCancel, "Progam")
 If x = vbOK Then
    y = Application.Match(Me.ComboBox6.Text, Range("C3:C20"), 0)
  Cells(y, 1) = ComboBox1.Text
    Cells(y, 2) = ComboBox2.Text
    Cells(y, 3) = ComboBox6.Text
    Cells(y, 4) = TextBox2.Text
    Cells(y, 5) = TextBox3.Text
    Cells(y, 6) = ComboBox3.Text
    Cells(y, 7) = ComboBox4.Text
    Cells(y, 8) = ComboBox5.Text
    Cells(y, 9) = Application.Text(TextBox4.Text, "dd/mm/yyyy")
    Cells(y, 10) = Application.Text(TextBox5.Text, "dd/mm/yyyy")
    Cells(y, 11) = Application.Text(TextBox6.Text, "dd/mm/yyyy")
    Else
         Dim q, p As Long
        q = Application.WorksheetFunction.CountA(Sheet1.Range("A2:Z2")) - 1
        For p = 1 To q
        Me("textbox" & p).Value = Application.WorksheetFunction.VLookup(ComboBox6.Value, Sheet1.Range("A3:K20"), p + 1, 0)
        Next p
    End If
End Sub
Attachments
Test_Receive.xlsm
(39.88 KiB) Downloaded 8 times

Re: Code VBA ค้นหาข้อมูลบนฟอร์ม

#3

by KHAMTUNM » Mon Jul 26, 2021 11:03 am

:thup: ค้นหาข้อมูลได้แล้วครับ

Code: Select all

Private Sub ComboBox6_Change()
    Dim q As Integer, p As Integer
    Dim ra As Range, r As Range
    With Worksheets("Sheet1")
        Set ra = .Range("c3", .Range("c" & .Rows.Count).End(xlUp))
        If Application.CountIfs(ra, Me.ComboBox6.Value) = 0 Then Exit Sub
        q = Application.Match(Val(Me.ComboBox6.Value), ra, 0)
    End With
    With Me
        .TextBox2.Value = ra(q).Offset(0, 1).Value
        .TextBox3.Value = ra(q).Offset(0, 2).Value
        .ComboBox3.Value = ra(q).Offset(0, 3).Value
        .ComboBox4.Value = ra(q).Offset(0, 4).Value
        .ComboBox5.Value = ra(q).Offset(0, 5).Value
        .TextBox4.Value = ra(q).Offset(0, 6).Value
        .TextBox5.Value = ra(q).Offset(0, 7).Value
        .TextBox6.Value = ra(q).Offset(0, 8).Value
         .ComboBox1.Value = ra(q).Offset(0, -2).Value
          .ComboBox2.Value = ra(q).Offset(0, -1).Value
    End With
        UserForm2.TextBox4.Text = Format(UserForm2.TextBox4.Text, "dd/mm/yy")
        UserForm2.TextBox5.Text = Format(UserForm2.TextBox5.Text, "dd/mm/yy")
        UserForm2.TextBox6.Text = Format(UserForm2.TextBox6.Text, "dd/mm/yy")
End Sub

Re: Code VBA ค้นหาข้อมูลบนฟอร์ม

#2

by snasui » Sun Jul 25, 2021 2:25 pm

:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Private Sub ComboBox6_Change()
    Dim q As Integer, p As Integer
    Dim ra As Range, r As Range
    With Worksheets("Sheet1")
        Set ra = .Range("c3", .Range("c" & .Rows.Count).End(xlUp))
        If Application.CountIfs(ra, Me.ComboBox6.Value) = 0 Then Exit Sub
        q = Application.Match(Val(Me.ComboBox6.Value), ra, 0)
    End With
    With Me
        .TextBox2.Value = ra(q).Offset(0, 1).Value
        .TextBox3.Value = ra(q).Offset(0, 2).Value
        'Other code
    End With
End Sub
ตรง 'Other code คือ Code อื่นใดที่เหลือซึ่งจะต้องเขียนเพิ่มเข้าไปเองครับ

Code VBA ค้นหาข้อมูลบนฟอร์ม

#1

by KHAMTUNM » Sun Jul 25, 2021 12:08 pm

เรียน ทุกท่าน
ผมทำฟอร์มสำหรับบันทึก รับ-คืน วัสดุอุปกรณ์,ฟอร์มบันทึก(UserForm1)ทำได้แล้ว(ศึกษาในInternet)แต่ฟอร์มค้นหาเพื่อแก้ไข(UserForm2)ยังทำไม่ได้โดยค้นหาข้อมูลจาก Item no.ให้ข้อมูลขึ้นมาบนฟอร์มทั้งหมดจึงอยากให้ช่วยปรับCodeให้ถูกต้องด้วยครับ
ขอบคุณครับ.

Code: Select all

Private Sub ComboBox6_Change()
    Dim q, p As Integer
    q = Application.WorksheetFunction.CountA(Sheet1.Range("A2:Z2")) - 1
    For p = 1 To q
        UserForm2("textbox" & p).Value = _
        Application.WorksheetFunction.VLookup(ComboBox6.Value, Sheet1.Range("A3:K20"), p + 1, 0)
    Next p
    UserForm2.TextBox4.Text = Format(UserForm2.TextBox4.Text, "dd-mmm-yy")
    UserForm2.TextBox5.Text = Format(UserForm2.TextBox5.Text, "dd-mmm-yy")
    UserForm2.TextBox6.Text = Format(UserForm2.TextBox6.Text, "dd-mmm-yy")
    
End Sub
Private Sub CommandButton1_Click()
Dim y As Long
Dim x As Integer
     x = MsgBox("Do you want to update?", vbOKCancel, "Progam")
 If x = vbOK Then
    y = Application.Match(Me.ComboBox6.Text, Range("C3:C20"), 0)
  Cells(y, 1) = ComboBox1.Text
    Cells(y, 2) = ComboBox2.Text
    Cells(y, 3) = ComboBox6.Text
    Cells(y, 4) = TextBox2.Text
    Cells(y, 5) = TextBox3.Text
    Cells(y, 6) = ComboBox3.Text
    Cells(y, 7) = ComboBox4.Text
    Cells(y, 8) = ComboBox5.Text
    Cells(y, 9) = Application.Text(TextBox4.Text, "dd/mm/yyyy")
    Cells(y, 10) = Application.Text(TextBox5.Text, "dd/mm/yyyy")
    Cells(y, 11) = Application.Text(TextBox6.Text, "dd/mm/yyyy")
    Else
         Dim q, p As Long
        q = Application.WorksheetFunction.CountA(Sheet1.Range("A2:Z2")) - 1
        For p = 1 To q
        Me("textbox" & p).Value = Application.WorksheetFunction.VLookup(ComboBox6.Value, Sheet1.Range("A3:K20"), p + 1, 0)
        Next p
    End If
End Sub
Attachments
Test_Receive.xlsm
(38.29 KiB) Downloaded 12 times

Top