: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 แสดงข้อมูลทั้งหมดจาก sheet database ครับ

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Xcelvba
Silver
Silver
Posts: 549
Joined: Thu Feb 03, 2022 9:04 am
Excel Ver: 2019

ให้ listbox แสดงข้อมูลทั้งหมดจาก sheet database ครับ

#1

Post by Xcelvba »

ต้องการให้ listbox แสดงข้อมูลจาก sheet database + เมื่อบันทึกข้อมูล ครับ
Username : hr
Password : 123456789

Code: Select all

Private Sub CommandButton1_Click()
    Dim msg As String
    
    If NoTxt.Value = "" Then
        MsgBox "¡ÃسҡÃÍ¡ÃËÑʾ¹Ñ¡§Ò¹", vbCritical, "Save failed"
        BookTxt.Value = ""
        Exit Sub
    End If
        
    If BookTxt.Value = "" Then
        MsgBox "¡ÃسҡÃÍ¡Çѹ·Õè¨Í§Ëéͧ¾Ñ¡", vbCritical, "Save failed"
        NoTxt.Value = ""
        Exit Sub
    End If
           
            msg = MsgBox("µéͧ¡Òúѹ·Ö¡¢éÍÁÙÅãªèäËÁ", vbYesNo + vbInformation, "Successful !!!")
            If msg = vbYes Then
                Call Submitform2
                NoTxt.Value = ""
                BookTxt.Value = ""
                MsgBox "ºÑ¹·Ö¡¢éÍÁÙÅÊÓàÃç¨", vbOKOnly + vbInformation, "Save !!"
                Else: Exit Sub
            End If
End Sub

Code: Select all

Sub Submitform2()
    Dim sh As Worksheet
    Dim iRow As Long
    
    
    Set sh = ThisWorkbook.Sheets("Database")
    
    iRow = [Counta(Database!A:A)] + 1
    
    With sh
        .Cells(iRow, 1) = iRow - 1
        .Cells(iRow, 3) = UserForm2.NoTxt.Value
        .Cells(iRow, 2) = UserForm2.BookTxt.Value
        .Cells(iRow, 10) = [Text(now(),"DD-MM-YYYY HH:MM:SS")]
    End With
    
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: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ให้ listbox แสดงข้อมูลทั้งหมดจาก sheet database ครับ

#2

Post by snasui »

:D ช่วยแจ้งลำดับการทำงานพร้อมค่าทดสอบที่ต้องคีย์ในแต่ละช่องพร้อมอธิบายกำกับว่าเกิดปัญหาในขั้นตอนไหน อย่างไร จะได้เข้าถึงปัญหาโดยไวครับ
Xcelvba
Silver
Silver
Posts: 549
Joined: Thu Feb 03, 2022 9:04 am
Excel Ver: 2019

Re: ให้ listbox แสดงข้อมูลทั้งหมดจาก sheet database ครับ

#3

Post by Xcelvba »

ในรูปที่ 1 Database ณ ตอนนี้ มีข้อมูลอยู่ 1 แถว
1.เวลาเปิดเข้า ฟอร์ม ให้ โชว์ข้อมูลใน ชีท Database พร้อมหัวตาราง ในฟอร์ม (listbox) ตามด้านล่างครับ

ลำดับ วันที่จอง รหัส ชื่อ นามสกุล แผนก Time Stamp
1 26/11/2022 111111 จะใช้สูตร index+match ใน Column (D,E,F) 26-11-2022 16:03:00

2.เมื่อ กรอกข้อมูล+กดบันทึก ในฟอร์ม (รูป 2) ให้โชว์ข้อมูลทันที ใน listbox (ซึ่งตอนนี้ข้อมูลในชีท Database จะถูกบันทึกแล้วแต่ใน listbox ไม่โชว์ครับ)
You do not have the required permissions to view the files attached to this post.
Xcelvba
Silver
Silver
Posts: 549
Joined: Thu Feb 03, 2022 9:04 am
Excel Ver: 2019

Re: ให้ listbox แสดงข้อมูลทั้งหมดจาก sheet database ครับ

#4

Post by Xcelvba »

เบื้องต้นผมได้ลองทำดูแล้ว
1.พอกดบันทึกข้อมูลโชว์ที่ listbox รูปที่ 1 ตามต้องการครับ

แต่ปัญหาที่พบคือ เมื่อ รันหรือเข้าฟอร์มใหม่ ค่าเก่าไม่มาแสดงครับ
รูป 2

ต้องการเมื่อเปิดฟอร์มขึ้นมาใหม่ ค่าใน ชีท แสดงใน listbox เลย โดยที่ยังไม่กดบันทึก หรือ กดบันทึกข้อมูล ครับ

Code: Select all

Sub Submitform2()
    Dim sh As Worksheet
    Dim iRow As Long
    
    
    Set sh = ThisWorkbook.Sheets("Database")
    
    iRow = [Counta(Database!A:A)] + 1
    
    With sh
        .Cells(iRow, 1) = iRow - 1
        .Cells(iRow, 3) = Record_Form.NoTxt.Value
        .Cells(iRow, 2) = Record_Form.BookTxt.Value
        .Cells(iRow, 10) = [Text(now(),"DD-MM-YYYY HH:MM:SS")]
    End With

    With Record_Form
        .ListDatabase.ColumnCount = 10
        .ListDatabase.ColumnHeads = True
        .ListDatabase.ColumnWidths = "30,60,75,40,60,45,55,70,70,45"
        If iRow > 1 Then
        
            .ListDatabase.RowSource = "Database!A2:I" & iRow
        Else
            .ListDatabase.RowSource = "Database!A2:I2"
            End If
            
    End With
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: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ให้ listbox แสดงข้อมูลทั้งหมดจาก sheet database ครับ

#5

Post by snasui »

:D ที่ Record_Form เพิ่ม Code ตามด้านล่างครับ

Code: Select all

Private Sub UserForm_Initialize()
    Dim iRow As Long
    
    iRow = [Counta(Database!A:A)] + 1
    
    With Record_Form
        .ListDatabase.ColumnCount = 10
        .ListDatabase.ColumnHeads = True
        .ListDatabase.ColumnWidths = "30,60,75,40,60,45,55,70,70,45"
        If iRow > 1 Then
            .ListDatabase.RowSource = "Database!A2:I" & iRow
        Else
            .ListDatabase.RowSource = "Database!A2:I2"
        End If
            
    End With
End Sub
Xcelvba
Silver
Silver
Posts: 549
Joined: Thu Feb 03, 2022 9:04 am
Excel Ver: 2019

Re: ให้ listbox แสดงข้อมูลทั้งหมดจาก sheet database ครับ

#6

Post by Xcelvba »

:thup: ขอบคุณ อ. มากๆครับ
Xcelvba
Silver
Silver
Posts: 549
Joined: Thu Feb 03, 2022 9:04 am
Excel Ver: 2019

Re: ให้ listbox แสดงข้อมูลทั้งหมดจาก sheet database ครับ

#7

Post by Xcelvba »

สอบถามต่อจากโพสนี้ครับ

ผมต้องการเปลี่ยนแปลงข้อมูลจาก listbox แล้วไปบันทึกใน Sheet "Database" ครับ
1. Username : hr Pass : 123456789
2. ดูรายชื่อผู้จอง
3. ตรง listbox กด Double คลิก แล้วจะมี ฟอร์ม แสดงดังรูปที่ 1 ครับ เมื่อเปลี่ยนค่าแล้วกดปุ่ม "เปลี่ยนแปลง" ให้นำค่าที่เปลี่ยนแปลงไป save แทนใน sheet "Database" ใน list นั้นๆ ครับ

ลองทำดูแล้ว Error บันทึกนี้ครับ
Namelist_Form.ListBox1.Column(0) = Me.TextBox1.Text

Code: Select all

Private Sub CommandButton1_Click()

    Dim Msg As String
    Msg = MsgBox("¤Ø³µéͧ¡ÒÃà»ÅÕè¹á»Å§¢éÍÁÙÅãªèäËÁ?!", vbYesNo + vbExclamation, "Editing")
    
        If Msg = vbYes Then
            Namelist_Form.ListBox1.Column(0) = Me.TextBox1.Text
            End If
    
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: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ให้ listbox แสดงข้อมูลทั้งหมดจาก sheet database ครับ

#8

Post by snasui »

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

Code: Select all

Private Sub CommandButton1_Click()

    Dim Msg As String, l As Long
       
    Msg = MsgBox("คุณต้องการเปลี่ยนแปลงข้อมูลใช่ไหม?!", vbYesNo + vbExclamation, "Editing")
    
    If Msg = vbYes Then
        With Worksheets("Database")
            l = Application.Match(CLng(Me.TextBox2.Value), .Range("c1", .Range("c" & .Rows.Count).End(xlUp)), 0)

'        Namelist_Form.ListBox1.Column(0) = Me.TextBox1.Text
            .Cells(l, "a").Value = Me.TextBox1.Value
            .Cells(l, "b").Value = Me.TextBox2.Value
            'Other code
        End With
    End If
    
End Sub
งานนี้เป็นการเขียนค่าเข้าไปใน ListBox โดยนำมาจาก Property ที่ชื่อว่า RowSource ซึ่งต้นทางคือช่วงเซลล์ หากจะเปลียนค่าต้องเปลี่ยนในเซลล์ต้นทาง ไม่ใช่เปลี่ยนตรง ๆ เข้าไปใน ListBox ครับ
Xcelvba
Silver
Silver
Posts: 549
Joined: Thu Feb 03, 2022 9:04 am
Excel Ver: 2019

Re: ให้ listbox แสดงข้อมูลทั้งหมดจาก sheet database ครับ

#9

Post by Xcelvba »

ขอบคุณครับ สอบถามเพิ่มเติมครับบรรทัดนี้

Code: Select all

Application.Match(CLng(Me.TextBox2.Value), .Range("c1", .Range("c" & .Rows.Count).End(xlUp)), 0)
CLng มีความหมายว่าอย่างไรครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ให้ listbox แสดงข้อมูลทั้งหมดจาก sheet database ครับ

#10

Post by snasui »

:D เป็นการเปลี่ยน Data Type เพื่อให้ Match กันได้ ดูที่นี่เพิ่มเติมครับ https://learn.microsoft.com/en-us/offic ... -functions
Xcelvba
Silver
Silver
Posts: 549
Joined: Thu Feb 03, 2022 9:04 am
Excel Ver: 2019

Re: ให้ listbox แสดงข้อมูลทั้งหมดจาก sheet database ครับ

#11

Post by Xcelvba »

snasui wrote: Thu Dec 01, 2022 8:40 am :D เป็นการเปลี่ยน Data Type เพื่อให้ Match กันได้ ดูที่นี่เพิ่มเติมครับ https://learn.microsoft.com/en-us/offic ... -functions
ขอบคุณครับ
ผมลองนำ code ที่ อ. เขียนให้มาเขียนเพิ่มเติมแล้ว ปรากฏว่าพบปัญหา อย่างนึงครับ
ทุกครั้งเวลาเปลี่ยน ค่า ที่ รหัสพนักงานจะเด้ง Error ไม่สามารถเปลี่ยนค่าได้ครับ แต่ช่องอื่นสามารถเปลี่ยนค่าได้ตามปกติครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ให้ listbox แสดงข้อมูลทั้งหมดจาก sheet database ครับ

#12

Post by snasui »

:D รหัสพนักงานคือค่าทีใช้อ้างอิงเพื่อนำไปค้นหาว่ารหัสพนักงานปัจจุบันที่ต้องการเปลี่ยนอยู่ในบรรทัดที่เท่าไร ถ้าเปลี่ยนไปเป็นรหัสที่ไม่เคยมีก็จะ Error ถือเป็นเรื่องปกติครับ

หากไม่ต้องการให้ใช้รหัสพนักงานในการอ้างอิงก็ต้องระบุมาใหม่ว่าใช้ค่าไหนในการอ้างอิง หรือจะใช้ลำดับที่ของบรรทัดใน ListBox ก็สามารถทำได้ แต่จะต้องเขียนมาเองก่อน ติดตรงไหนค่อยถามกันต่อครับ
Xcelvba
Silver
Silver
Posts: 549
Joined: Thu Feb 03, 2022 9:04 am
Excel Ver: 2019

Re: ให้ listbox แสดงข้อมูลทั้งหมดจาก sheet database ครับ

#13

Post by Xcelvba »

ขอบคุณครับ อยากจะใช้ลำดับของ listbox เป็นตัวกำหนดครับ จะลองศึกษาเขียนเองมาก่อนครับ ถ้าติดตรงไหนจะมาถามต่อครับ
Post Reply