:!: โปรดทราบ Image
    1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ดครับ Image
    2. การสมัครสมาชิกเพื่อโพสต์คำถาม ดาวน์โหลดไฟล์แนบไปศึกษา ทำตามขั้นตอนด้านล่างครับ
      1. สมัครสมาชิก ดูขั้นตอนตาม Link นี้ครับ => สมัครสมาชิก กรณีลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่นี่ครับ => Reset รหัสผ่านImage
      2. Login เข้าระบบโดยคลิก Login ตรงมุมขวาบนของหน้านี้ Image กรณีมีปัญหาในการเข้าใช้งาน คลิก Link นี้เพื่อแจ้งผู้ดูแลระบบครับ => ติดต่อผู้ดูแลระบบ
    3. เมื่อ Login แล้วสามารถกำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษได้ที่ Link นี้ครับ => ตั้งค่าส่วนตัว Image
    4. วิธีการตั้งและตอบกระทู้ดูได้ที่ Link นี้ครับ => วิธีการตั้งและตอบกระทู้ Image
    5. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ Link นี้ครับ => จัดรูปแบบตัวอักษร และสามารถกำหนดขนาดตัวอักษรใน Browser ได้ที่นี่ครับ ==> กำหนดขนาดตัวอักษรใน Browser Image

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

ฟอรั่มถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถาม-ตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบ ต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. อธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. ควรแนบตัวอย่างไฟล์มาที่ฟอรั่มนี้เพื่อเพิ่มความสะดวกในการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่น นอกจากนี้ไม่ควรแนบไฟลที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. สำหรับคำถามเกี่ยวกับ VBA ให้ลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน ควรโพสต์ Code ให้แสดงเป็น Code เพื่อสะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. แจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

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

#1

Postby Benmore » Tue Nov 14, 2017 7:29 pm

ขอบสอบถามหน่อยค่ะ
ถ้าต้องการค้นหาข้อมูลด้วยวันที่ ต้องเขียนโค้ดเพิ่มเติ่มตรงไหนบ้างค่ะ
แล้วค้นหาด้วยรหัสพนักงานทำไมข้อมูลไม่ขึ้นใน 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: 22371
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

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

#2

Postby snasui » Wed Nov 15, 2017 6:29 am

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

กรณีค้นหาตามรหัสพนักงานแล้วข้อมูลไม่ขึ้น ช่วยยกตัวอย่างรหัสพนักงานมาด้วยจะได้สะดวกต่อการทดสอบครับ

Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

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

#3

Postby Benmore » Wed Nov 15, 2017 7:05 am

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

กรณีค้นหาตามรหัสพนักงานแล้วข้อมูลไม่ขึ้น ช่วยยกตัวอย่างรหัสพนักงานมาด้วยจะได้สะดวกต่อการทดสอบครับ
คีย์วันที่ให้ค้นหาวันที่ หากคีย์วันที่ให้ค้นหาวันที่ คีย์รหัสพนักงานให้ค้นหาตามรหัสพนักงาน ค่ะ
เช่น วันที่ 14 september 2017 พอกดปุ้มค้นหาก็จะแสดงข้อมูลทั้งหมดที่ถูกบันทึกลงในชีทการเบิกที่เป็นวันที่ 14 september 2017 เช่นเดียวกับรหัสพนักงานค่ะ

User avatar
snasui
Site Admin
Site Admin
Posts: 22371
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

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

#4

Postby snasui » Thu Nov 16, 2017 5:15 am

: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

Postby Benmore » Thu Nov 16, 2017 8:30 am

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: 22371
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

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

#6

Postby snasui » Thu Nov 16, 2017 8:59 am

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

ประกาศตัวแปรแล้วต้องกำหนดค่าให้กับ chkDate เสียก่อนแล้วค่อยนำไปใช้ครับ

Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

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

#7

Postby Benmore » Thu Nov 16, 2017 9:48 am

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: 22371
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

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

#8

Postby snasui » Thu Nov 16, 2017 10:01 am

: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

Postby Benmore » Thu Nov 16, 2017 10:53 am

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: 22371
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

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

#10

Postby snasui » Thu Nov 16, 2017 11:04 am

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

Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

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

#11

Postby Benmore » Thu Nov 16, 2017 11:08 am

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: 22371
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

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

#12

Postby snasui » Thu Nov 16, 2017 11:11 am

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

ถ้าเอาเงื่อนไขการตรวจสอบวันที่โปรแกรมทำงานถูกต้องหรือไม่ แจ้งมาด้วยครับ

Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

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

#13

Postby Benmore » Thu Nov 16, 2017 11:17 am

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

ถ้าเอาเงื่อนไขการตรวจสอบวันที่โปรแกรมทำงานถูกต้องหรือไม่ แจ้งมาด้วยครับ

ตัวอย่างค่ะ :arrow: ถ้าเลือกวันที่ 16 November 2017 แล้วกดปุ่มค้นหาให้ข้อมูลในชีทการเบิกที่มีข้อมูลตรงกับวันที่ ที่เราต้องการ แสดงข้อมูลทั้งหมดที่มีวันที่ตรงกันใน listbox ค่ะ
:arrow: เมื่อค้นหาด้วยรหัส 0222222 แล้วกดปุ่มค้นหาให้ข้อมูลในชีทการเบิกที่มีข้อมูลตรงกับรหัส 0222222 ที่เราต้องการ แสดงข้อมูลทั้งหมดที่มีรหัสตรงกันใน listbox ค่ะ

User avatar
snasui
Site Admin
Site Admin
Posts: 22371
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

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

#14

Postby snasui » Thu Nov 16, 2017 12:13 pm

: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

Postby Benmore » Thu Nov 16, 2017 12:36 pm

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: 22371
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

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

#16

Postby snasui » Thu Nov 16, 2017 2:02 pm

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

กรุณาแจ้งข้อมูลทดสอบมาด้วยเสมอ ผมจะได้ทดสอบตามนั้น Control ใดคีย์ค่าใด เลือกค่าใด จำเป็นต้องแจ้งมาให้ชัดเจนครับ

Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

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

#17

Postby Benmore » Thu Nov 16, 2017 2:30 pm

ภาพแสดงการรันโปรแกรมค่ะ ไม่มีข้อมูลจากชีทการเบิกมาแสดงใน 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: 22371
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

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

#18

Postby snasui » Thu Nov 16, 2017 2:39 pm

:D ไฟล์ที่แนบมาไม่มีวันที่นั้นในชีต EGAS_Data คอลัมน์ E ที่นำไปใช้ค้นหาครับ

Benmore
Bronze
Bronze
Posts: 254
Joined: Tue Sep 05, 2017 9:51 am

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

#19

Postby Benmore » Thu Nov 16, 2017 2:58 pm

: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: 22371
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

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

#20

Postby snasui » Thu Nov 16, 2017 5:11 pm

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

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


Return to “Excel”

Who is online

Users browsing this forum: No registered users and 28 guests