: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

แสดงข้อมูลใน Listbox

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

แสดงข้อมูลใน Listbox

#1

Post by Benmore »

ขอบสอบถามหน่อยค่ะ
ถ้าต้องการค้นหาข้อมูลด้วยวันที่ ต้องเขียนโค้ดเพิ่มเติ่มตรงไหนบ้างค่ะ
แล้วค้นหาด้วยรหัสพนักงานทำไมข้อมูลไม่ขึ้นใน Listbox ต้องแก้ไขตรงไหนค่ะ
:arrow: Userform1 :arl:

Code: Select all

'ค้นหา
Private Sub btsearch1_Click()
   Dim found As Boolean
   Dim txt As String
   Dim r As Range
    On Error Resume Next
    Dim nRow As String
    For Each r In Sheet6.Columns(1).SpecialCells(xlCellTypeConstants)
    Sheet6.Activate
        If Right(r.Value, 3) = Right(txtsearch1.Text, 3) Then
            nRow = r.row
            found = True
            Exit For
        End If
    Next r
    If found Then
        If Not IsNumeric(VBA.Right(txtsearch1.Text, 3)) Then
            MsgBox "กรุณากรอกข้อมูลเป็นตัวเลข"
            Exit Sub
        End If
        If Err.Number = 91 Then
        ListBox1.RowSource = "txtsearch1.Text"
  TextBox7.Value = ""
    TextBox8.Value = ""
    TextBox9.Value = ""
    TextBox10.Value = ""
    MsgBox "ไม่มีข้อมูล"
    End If
 TextBox7.Value = Cells(nRow, 1)
TextBox8.Value = Cells(nRow, 8)
    TextBox9.Value = Cells(nRow, 2)
    TextBox10.Value = Cells(nRow, 13)
     txt = "Emp_ID : " & Cells(nRow, 1) & vbCrLf & _
    "Name : " & Cells(nRow, 2) & vbCrLf & _
    "Section : " & Cells(nRow, 3) & vbCrLf & _
    "Uniform_No : " & Cells(nRow, 4) & vbCrLf & _
    "Date : " & Cells(nRow, 5) & vbCrLf & _
    "Discription : " & Cells(nRow, 6) & vbCrLf & _
    "Reason : " & Cells(nRow, 7)
    ListBox1.Value = txt
     Exit Sub
    End If
    Sheet1.Activate
End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: แสดงข้อมูลใน Listbox

#2

Post by snasui »

:D การค้นหาข้อมูลด้วยวันที่ เป็นการค้นหาร่วมกับรหัสพนักงานหรือว่าเลือกอย่างใดอย่างหนึ่ง เช่น หากคีย์วันที่ให้ค้นหาวันที่ หากคีย์รหัสพนักงานให้ค้นหาตามรหัสพนักงาน ฯลฯ

กรณีค้นหาตามรหัสพนักงานแล้วข้อมูลไม่ขึ้น ช่วยยกตัวอย่างรหัสพนักงานมาด้วยจะได้สะดวกต่อการทดสอบครับ
Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: แสดงข้อมูลใน Listbox

#3

Post by Benmore »

snasui wrote::D การค้นหาข้อมูลด้วยวันที่ เป็นการค้นหาร่วมกับรหัสพนักงานหรือว่าเลือกอย่างใดอย่างหนึ่ง เช่น หากคีย์วันที่ให้ค้นหาวันที่ หากคีย์รหัสพนักงานให้ค้นหาตามรหัสพนักงาน ฯลฯ

กรณีค้นหาตามรหัสพนักงานแล้วข้อมูลไม่ขึ้น ช่วยยกตัวอย่างรหัสพนักงานมาด้วยจะได้สะดวกต่อการทดสอบครับ
คีย์วันที่ให้ค้นหาวันที่ หากคีย์วันที่ให้ค้นหาวันที่ คีย์รหัสพนักงานให้ค้นหาตามรหัสพนักงาน ค่ะ
เช่น วันที่ 14 september 2017 พอกดปุ้มค้นหาก็จะแสดงข้อมูลทั้งหมดที่ถูกบันทึกลงในชีทการเบิกที่เป็นวันที่ 14 september 2017 เช่นเดียวกับรหัสพนักงานค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: แสดงข้อมูลใน Listbox

#4

Post by snasui »

:D ลักษณะที่แจ้งมานั้นเป็นการค้นหาตามเงื่อนไขเดียว หากเป็นการค้นหาจาก Procedure เดิมคือ btsearch1_Click ให้สร้างตัวแปรวันที่สำหรับเปรียบเทียบกับค่าในคอลัมน์ E ของชีต EGAS_Data สมมุตชื่อว่า chkDate

ตัวอย่าง Code ในส่วนที่ใช้ Search แล้วเก็บค่าบรรทัดจะกลายเป็น

Code: Select all

    If Right(r.Value, 3) = Right(txtsearch1.Text, 3) Or r.Offset(0, 4).Value = chkDate Then
        nRow = r.Row
        found = True
        Exit For
    End If
ลองกำหนดตัวแปร chkDate มาด้วยตัวเองก่อน ติดแล้วค่อยถามกันต่อครับ
Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: แสดงข้อมูลใน Listbox

#5

Post by Benmore »

Code: Select all

ค้นหา1
Private Sub btsearch1_Click()
   Dim found As Boolean
   Dim txt As String
   Dim r As Range
    Dim chkDate As Date
    On Error Resume Next
    Dim nRow As String
    For Each r In Sheet6.Columns(1).SpecialCells(xlCellTypeConstants)
    Sheet6.Activate
    If Right(r.Value, 3) = Right(txtsearch1.Text, 3) Or r.Offset(0, 4).Value = chkDate Then
        nRow = r.row
        found = True
        Exit For
    End If
       
    Next r
    If found Then
        If Not IsNumeric(VBA.Right(txtsearch1.Text, 3)) Then
            MsgBox "กรุณาใส่ข้อมูลเป็นตัวเลข"
            Exit Sub
        End If
        If Err.Number = 91 Then
        'TextBox1.RowSource = "txtsearch1.Text"
  TextBox7.Value = ""
    TextBox8.Value = ""
    TextBox9.Value = ""
    TextBox10.Value = ""
    'MsgBox "ไม่มีข้อมูล"
    End If
 TextBox7.Value = Cells(nRow, 1)
TextBox8.Value = Cells(nRow, 8)
    TextBox9.Value = Cells(nRow, 2)
    TextBox10.Value = Cells(nRow, 13)
     txt = "Emp_ID : " & Cells(nRow, 1) & vbCrLf & _
    "Name : " & Cells(nRow, 2) & vbCrLf & _
    "Section : " & Cells(nRow, 3) & vbCrLf & _
    "Uniform_No : " & Cells(nRow, 4) & vbCrLf & _
    "Date : " & Cells(nRow, 5) & vbCrLf & _
    "Discription : " & Cells(nRow, 6) & vbCrLf & _
    "Reason : " & Cells(nRow, 7)
    ListBox1.Value = txt
     Exit Sub
     Else
       MsgBox "ไม่มีข้อมูล"
    End If
    Sheet1.Activate
End Sub
ลองปรับโค้ดดูแล้วก็ยังไม่แสดงข้อมูลใน listBox เลยค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: แสดงข้อมูลใน Listbox

#6

Post by snasui »

:D ไม่ทราบว่าได้กำหนดค่าอะไรให้กับ chkDate กำหนดไว้ที่บรรทัดไหนครับ

ประกาศตัวแปรแล้วต้องกำหนดค่าให้กับ chkDate เสียก่อนแล้วค่อยนำไปใช้ครับ
Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: แสดงข้อมูลใน Listbox

#7

Post by Benmore »

Code: Select all

Dim chkDate As Date
    On Error Resume Next
    Dim nRow As String
    For Each r In Sheet6.Columns(1).SpecialCells(xlCellTypeConstants)
    Sheet6.Activate
    chkDate = cmday Or cmmonth Or cmyear
    If Right(r.Value, 3) = Right(txtsearch1.Text, 3) Or r.Offset(0, 4).Value = chkDate Then
        nRow = r.row
        found = True
        Exit For
    End If
    Next r
ตัวอย่างโค้ดค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: แสดงข้อมูลใน Listbox

#8

Post by snasui »

:D หลักการกำหนดค่าให้กับ chkDate จะต้องดูว่าต้องใข้ค่านั้นไปเทียบกับค่าในคอลัมน์ E ของ Worksheet ซึ่งประกอบด้วย วัน เดือน ปี

ดังนั้น chkDate จะต้องเป็นวันที่แบบ วัน เดือน ปี ไม่ใช่ วัน หรือ เดือน หรือ ปี เพียงอย่างใดอย่างหนึ่ง ยกเว้นต้องการค้นหาแบบ วัน หรือ เดือน หรือ ปี แยกกัน

การกำนดตัวแปรให้กับวัน เดือน ปี ไม่ใช่เรื่องง่ายนัก ยิ่งถ้ากำหนดเดือนเป็นข้อความแทนเป็นตัวเลขจะมีความซับซ้อนเพิ่มขึ้น

ตัวอย่างการกำหนดค่าให้กับตัวแปร chkDate ตามด้านล่างครับครับ

chkDate=Cdate(Applicion.Text(cmday & "/" & cmmonth & "/" & cmyear,"ddmmyyyy"))

จากนั้นค่อยนำ chkDate ไปใช้งานต่อไป
Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: แสดงข้อมูลใน Listbox

#9

Post by Benmore »

Code: Select all

Private Sub btsearch1_Click()
   Dim found As Boolean
   Dim txt As String
   Dim r As Range
    Dim chkDate As Date
    On Error Resume Next
    Dim nRow As String
    For Each r In Sheet6.Columns(1).SpecialCells(xlCellTypeConstants)
    Sheet6.Activate
    chkDate = CDate(Applicion.Text(cmday & "/" & cmmonth & "/" & cmyear, "ddmmyyyy"))
    If Right(r.Value, 3) = Right(txtsearch1.Text, 3) Or r.Offset(0, 4).Value = chkDate Then
        nRow = r.row
        found = True
        Exit For
    End If
    Next r
    If found Then
        If Not IsNumeric(VBA.Right(txtsearch1.Text, 3)) Then
            MsgBox "กรุณาใส่ข้อมูลเป็นตัวเลข"
            Exit Sub
        End If
        If Err.Number = 91 Then
        TextBox1.RowSource = "txtsearch1.Text"
  TextBox7.Value = ""
    TextBox8.Value = ""
    TextBox9.Value = ""
    TextBox10.Value = ""
      End If
แก้ไขได้ประมาณนี้ค่ะ แต่ก็ยังรันไม่ได้ค่ะ ข้อมูลที่ค้นหาด้วยรหัสก็ไม่แสดงใน listbox เลยค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: แสดงข้อมูลใน Listbox

#10

Post by snasui »

:D กรุณาแจังปัญหาพร้อมไฟล์แนบที่มี Code ล่าสุดเรียบร้อยแล้วพร้อมกับข้อมูลที่จะทดสอบเสมอ จะได้สะดวกกับผู้ตอบที่จะทดสอบได้ทันทีครับ
Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: แสดงข้อมูลใน Listbox

#11

Post by Benmore »

snasui wrote::D กรุณาแจังปัญหาพร้อมไฟล์แนบที่มี Code ล่าสุดเรียบร้อยแล้วพร้อมกับข้อมูลที่จะทดสอบเสมอ จะได้สะดวกกับผู้ตอบที่จะทดสอบได้ทันทีครับ
:arrow: ค้นหาข้อมูลด้วยวันเดือนปีไม่ได้ค่ะ
:arrow: ค้าหาข้อมูลด้วยรหัสแล้วข้อมูลไม่แสดงใน listbox ค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: แสดงข้อมูลใน Listbox

#12

Post by snasui »

:D วันที่เท่าไร เดือนใด ปีใดครับ รหัสใดครับ แจ้งมาให้ชัด ๆ ครับ

ถ้าเอาเงื่อนไขการตรวจสอบวันที่โปรแกรมทำงานถูกต้องหรือไม่ แจ้งมาด้วยครับ
Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: แสดงข้อมูลใน Listbox

#13

Post by Benmore »

snasui wrote::D วันที่เท่าไร เดือนใด ปีใดครับ รหัสใดครับ แจ้งมาให้ชัด ๆ ครับ

ถ้าเอาเงื่อนไขการตรวจสอบวันที่โปรแกรมทำงานถูกต้องหรือไม่ แจ้งมาด้วยครับ
ตัวอย่างค่ะ :arrow: ถ้าเลือกวันที่ 16 November 2017 แล้วกดปุ่มค้นหาให้ข้อมูลในชีทการเบิกที่มีข้อมูลตรงกับวันที่ ที่เราต้องการ แสดงข้อมูลทั้งหมดที่มีวันที่ตรงกันใน listbox ค่ะ
:arrow: เมื่อค้นหาด้วยรหัส 0222222 แล้วกดปุ่มค้นหาให้ข้อมูลในชีทการเบิกที่มีข้อมูลตรงกับรหัส 0222222 ที่เราต้องการ แสดงข้อมูลทั้งหมดที่มีรหัสตรงกันใน listbox ค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: แสดงข้อมูลใน Listbox

#14

Post by snasui »

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

Code: Select all

    Dim chkDate As Date
    On Error Resume Next
    Dim nRow As String
    
    chkDate = DateSerial(cmyear, cmmonth.ListIndex + 1, cmday)
    Sheet6.Activate
    For Each r In Sheet6.Columns(1).SpecialCells(xlCellTypeConstants)
    If Right(r.Value, 3) = Right(txtsearch1.Text, 3) Or r.Offset(0, 4).Value2 = CLng(chkDate) Then
        nRow = r.Row
        found = True
        Exit For
    End If
กรุณาทดสอบด้วยวันที่ทีมีอยู่จริงในชีต EGAS_Data ไม่ใช่วันที่ 16/11/2017 ยกเว้นจะมีวันที่นี้อยู่ด้วยครับ
Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: แสดงข้อมูลใน Listbox

#15

Post by Benmore »

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

Code: Select all

    Dim chkDate As Date
    On Error Resume Next
    Dim nRow As String
    
    chkDate = DateSerial(cmyear, cmmonth.ListIndex + 1, cmday)
    Sheet6.Activate
    For Each r In Sheet6.Columns(1).SpecialCells(xlCellTypeConstants)
    If Right(r.Value, 3) = Right(txtsearch1.Text, 3) Or r.Offset(0, 4).Value2 = CLng(chkDate) Then
        nRow = r.Row
        found = True
        Exit For
    End If
กรุณาทดสอบด้วยวันที่ทีมีอยู่จริงในชีต EGAS_Data ไม่ใช่วันที่ 16/11/2017 ยกเว้นจะมีวันที่นี้อยู่ด้วยครับ
ปรับตามแล้วก็ยังไม่แสดงอะไรแม้กระทั่งค้นหาด้วยรหัสค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: แสดงข้อมูลใน Listbox

#16

Post by snasui »

:D ในเครื่องผมสามารถให้คำตอบได้ครับ

กรุณาแจ้งข้อมูลทดสอบมาด้วยเสมอ ผมจะได้ทดสอบตามนั้น Control ใดคีย์ค่าใด เลือกค่าใด จำเป็นต้องแจ้งมาให้ชัดเจนครับ
Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: แสดงข้อมูลใน Listbox

#17

Post by Benmore »

ภาพแสดงการรันโปรแกรมค่ะ ไม่มีข้อมูลจากชีทการเบิกมาแสดงใน listbox เลยคะ
ค้นหาด้วยวันที่ :ard:
1222.png
ค้นหาด้วยรหัส :ard:
3333.png
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: แสดงข้อมูลใน Listbox

#18

Post by snasui »

:D ไฟล์ที่แนบมาไม่มีวันที่นั้นในชีต EGAS_Data คอลัมน์ E ที่นำไปใช้ค้นหาครับ
Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

Re: แสดงข้อมูลใน Listbox

#19

Post by Benmore »

:ard: :ard: :ard: :ard: :ard: :ard: :ard:
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: แสดงข้อมูลใน Listbox

#20

Post by snasui »

:D ภาพทีจับมาล่าสุดไม่เกี่ยวกับ Code ครับ

Code ที่กำลังถามตอบกันอยู่นี้ เป็นการค้นหาวันที่จาก Sheet6 หมายถึง EGAS_Data (ดูโพสต์ #9 ประกอบ) กรุณาทบทวนดูใหม่ครับ
Post Reply