: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

ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#21

Post by snasui »

:D เนื่องจากมีการอ้างถึงชีทผิดไปจากที่ควรจะเป็นครับ

Properties ของ Worksheet ที่เกี่ยวกับ Name ของชีทจะมีอยู่ 2 แบบครับคือ
  1. Default Name ซึ่งจะอยู่ในวงเล็บเป็น (Name) และโปรแกรมจะมีการกำหนดให้ไว้ล่วงหน้าเช่น Sheet1, Sheet2 เป็นต้น จะไม่สามารถเปลี่ยนผ่านทาง Excel ต้องเข้ามาเปลี่ยนด้วย VBE (Visual Basic Editor)
  2. Name จะเป็นชื่อที่เราสามารถเปลี่ยนได้ผ่านทาง Excel
จากไฟล์ที่แนบมาหากใช้ Default Name คือ Oat5 เราสามารถใช้ Code เช่น

Oat5.Range("A2") ได้เลย หากใช้ Worksheets("Oat5").Range("A2") โปรแกรมจะไม่รู้จัก Sheet ที่ชื่อ Oat5 ครับ

หากเปลี่ยนเป็น Worksheets("NOTEBOOK").Range("A2") ก็สามารถใช้งานได้เช่นกัน
ottokung25
Member
Member
Posts: 47
Joined: Tue May 08, 2012 10:25 am

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#22

Post by ottokung25 »

ขอบคุณมากครับ สำหรับความรู้เพิ่มเติม ;)
ottokung25
Member
Member
Posts: 47
Joined: Tue May 08, 2012 10:25 am

ดึงข้อมูลจาก Combobox ไม่ได้ครับ

#23

Post by ottokung25 »

ขออนุญาติตั้งกระทู้ใหม่นะครับ

ตอนนี้เกิดปัญหาที่ว่า ไม่สามารถดึงข้อมูลจากชีท RENTER มาใส่ใน combobox ได้ครับ( Combobox แบบ 2 คอลัมภ์ )

Code: Select all

Private Sub UserForm_Initialize()
    Dim cl As Range
    Dim t As Range
    Set ws = Worksheets("RENTER")
    

    With Me.ListBox1
       
        .RowSource = ""
        
        For Each cl In Oat5.Range("A2:A" & _
            Oat5.Range("A65536").End(xlUp).Row)
            .AddItem cl.Value
        Next cl
    End With
    
       For Each t In ws.Range("Name")
    With Me.ComboBox1
            .AddItem t.Value
            .List(.ListCount - 1, 1) = t.Offset(0, 1).Value
    End With
    Next t  

    Me.TextBox6.Value = Format(Calendar1, "Medium Date")


End Sub
โดยส่วนที่เกี่ยวข้องจะมี

Code: Select all

Dim t As Range
    Set ws = Worksheets("RENTER")

 For Each t In ws.Range("Name")
    With Me.ComboBox1
            .AddItem t.Value
            .List(.ListCount - 1, 1) = t.Offset(0, 1).Value
    End With
    Next t  
ตอนนี้แจ้ง Error subscript out of range อีกแล้วครับ :)

ช่วยดูให้หน่อยครับ ขอบคุณครับ

Password VBA : 1150 ครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#24

Post by snasui »

:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Private Sub UserForm_Initialize()
    Dim cl As Range
    Dim t As Range
    Dim Name As Range
    Set ws = Worksheets("RENTER")
    Set Name = ws.Range("A2", ws.Range("A" & Rows.Count).End(xlUp))

    With Me.ListBox1
       
        .RowSource = ""
        
        For Each cl In Oat5.Range("A2:A" & _
            Oat5.Range("A65536").End(xlUp).Row)
            .AddItem cl.Value
        Next cl
    End With
    
    For Each t In Name
    With Me.ComboBox1
            .AddItem t.Value
            .List(.ListCount - 1, 1) = t.Offset(0, 1).Value
    End With
    Next t

    Me.TextBox6.Value = Format(Calendar1, "Medium Date")

End Sub
ottokung25
Member
Member
Posts: 47
Joined: Tue May 08, 2012 10:25 am

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#25

Post by ottokung25 »

ขอถามต่ออีกนิดครับ จะให้ใน Combobox แสดงค่าทั้งสองคอลัมภ์ ต้องตั้งค่าอย่างไรครับ หาไม่เจอ :D
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#26

Post by snasui »

:D ComboBox ไม่สามารถมีได้ถึงสองคอลัมน์ครับ ที่จะมีได้คือ ListBox ช่วยจับภาพมาให้หน่อยครับว่าภาพที่ต้องการนั้นเป็นอย่างไร
ottokung25
Member
Member
Posts: 47
Joined: Tue May 08, 2012 10:25 am

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#27

Post by ottokung25 »

snasui wrote::D ComboBox ไม่สามารถมีได้ถึงสองคอลัมน์ครับ ที่จะมีได้คือ ListBox ช่วยจับภาพมาให้หน่อยครับว่าภาพที่ต้องการนั้นเป็นอย่างไร
ถ้าอย่างนั้นไม่เป็นไรครับ ขอโทษด้วยครับ นึกว่ามันทำได้ :D

ถ้าผมมีอะไรจะถามต่อนี่ให้ถามในกระทู้นี้เลยใช่หรือเปล่าครับ ( ท่าทางจะอีกเยอะ :lol: )
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#28

Post by snasui »

:D กรณีเรื่องเดียวกันควรถามในหัวข้อเดิมครับเพื่อให้ง่ายต่อการติดตามและง่ายต่อการศึกษาของเพื่อนสมาชิก หากเป็นเรื่องใหม่ควรตั้งกระทู้ใหม่ครับ
ottokung25
Member
Member
Posts: 47
Joined: Tue May 08, 2012 10:25 am

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#29

Post by ottokung25 »

สอบถามหน่อยครับ

ตอนนี้ผมต้องการที่จะเอาค่าที่เลือกใน Listbox มาใช้ครับ โดยต้องการที่จะนำเอาค่าที่อ้างอิงกับ Listbox ใน Sheet ให้ย้ายไปที่อีกชีทหนึ่งครับ

คือผมจะใช้คำสั่งอะไรในการเลือกเอาค่าที่เลือกใน Listbox ไปใช้ครับ ผมใช้ Listbox1.select มันให้เลือกแต่ True กับ False ครับ

ขอไอเดียหรือชี้เป้าตัวอย่าง Code ให้หน่อยครับ

ขอบคุณครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#30

Post by snasui »

:D ใช้การ Loop ธรรมดาครับ ยกตัวอย่างเช่น กำหนดให้ Message ทำการ Loop เพื่อแสดงค่าใน ListBox เฉพาะรายการที่ถูกเลือก

Code: Select all

dim i as integer
for i = 0 to listbox1.listcount - 1
   if listbox1.selected(i) then
       msgbox listbox1.list(i)
   end if
next i
ottokung25
Member
Member
Posts: 47
Joined: Tue May 08, 2012 10:25 am

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#31

Post by ottokung25 »

ตอนนี้ผมต้องการให้ค่าที่เลือกเอาไว้ใน Listbox2 ถ้ามีเลือกไว้ให้เอาข้อมูลของ Textbox 9 ไปใส่ใน Cell ของ Sheet ชื่อ Notebook ครับ แต่ผมงงอีกแล้วครับ มัน Error ที่บรรทัดนี้ครับ

Code: Select all

for i = 0 to listbox1.listcount - 1
มัน Error object require ครับ ผมไม่รู้ว่าลืมตัวแปรอะไรหรือเปล่า ช่วยดูให้หน่อยครับ แนบไฟล์อัพเดตมาให้ด้วยครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#32

Post by snasui »

:D ช่วยระบุชื่อ Userform และ ชื่อ Procedure มาด้วยทุกครั้งเพื่อให้เข้าถึงปัญหาได้โดยไวครับ
ottokung25
Member
Member
Posts: 47
Joined: Tue May 08, 2012 10:25 am

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#33

Post by ottokung25 »

Userform 15 ครับ

Commandbuttoun1_click ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#34

Post by snasui »

:D ลองปรับ Code เป็นตามด้านล่างครับ ให้อ้าง Collection คือ UserForm2 เข้ามาด้วยครับ

Code: Select all

For a = 0 To UserForm2.ListBox2.ListCount - 1
   If UserForm2.ListBox2.Selected(a) Then
        Oat5.Cells(final, 6) = UserForm2.ListBox2.List(a)
   End If
Next a
ottokung25
Member
Member
Posts: 47
Joined: Tue May 08, 2012 10:25 am

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#35

Post by ottokung25 »

ผมไม่เข้าใจตรงค่าที่วนลูปของ Listbox ครับ

มันจะเป็นค่า Index หรอครับ

แล้วมันจะอ้างอิงกับใน Cell ของ Sheet ได้อย่างไรครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#36

Post by snasui »

:D ค่าที่ Loop ใน ListBox ตามที่ผมยกตัวอย่างไปนั้น เป็นการหาว่าค่าใดที่เราได้ทำเครื่องหมายที่ CheckBox เอาไว้บ้าง เพื่อที่จะนำไปใช้งานต่อ เช่นตรวจสอบต่อกับค่าใน Worksheet การจะเทียบกับค่าใน Worksheet ก็ต้องเขียน Code สำหรับทำเช่นนั้นมาด้วย ติดตรงไหนก็ค่อยมาดูกันต่อครับ :D
ottokung25
Member
Member
Posts: 47
Joined: Tue May 08, 2012 10:25 am

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#37

Post by ottokung25 »

พบปัญหาอีกแล้วครับ :D ตอนนี้ไม่สามารถทำให้ข้อมูลใน Listbox2 ไปอยู่ใน Sheet Oat5(Notebook) ได้ครับ แถมยังทำให้ตอนนี้บันทึกข้อมูลแค่แถวที่สองเท่านั้น เหมือนโค๊ดไม่วนลูปหาตัวสุดท้ายที่อยู่ในเซลล์ครับ จากโค๊ดด้านล่างนี้ครับ

Code: Select all

For a = 0 To UserForm2.ListBox2.ListCount - 1
   If UserForm2.ListBox2.Selected(a) = True Then
    Oat5.Range("A65536").End(xlUp)(2, 6) = UserForm2.ListBox2.list(a)
    UserForm2.ListBox2.Selected(a) = False
   End If
Next
อยู่ใน Userform 15 ส่วน Commandbutton1_click ครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#38

Post by snasui »

:D ช่วยอธิบายลักษณะที่ต้องการวางข้อมูลด้วยครับว่าต้องการให้ Loop วางในคอลัมน์ไหน อย่างไร Code ที่เขียนมานั้นเป็นการวางที่เดิมซ้ำ ๆ ครับ
ottokung25
Member
Member
Posts: 47
Joined: Tue May 08, 2012 10:25 am

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#39

Post by ottokung25 »

ต้องการให้เอาค่าใน Oat3(Rent) ในคอลัมภ์ที่ 3 ชื่อ EQ-CODE ครับ

ขอถามต่อเลยครับ ว่าจะให้ค่าจะใน Listbox ไปเชคใน Cell ก่อนได้มั้ยครับ
ประมาณว่าถ้าเจอข้อมูลที่ตรงกับใน Listbox แล้วให้เอาข้อมูลใน Textbox9 ไปวาง

เพราะผมอยากจะให้มันเข้าไปลบข้อมูลในอีก Sheet หนึ่งด้วยครับ(เอาไว้นับจำนวนครับ)

ประมาณนี้ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการดึงข้อมูลจากใน Sheet มาใน Userform ครับ

#40

Post by snasui »

:lol: ไม่เข้าใจครับ
ottokung25 wrote:ต้องการให้เอาค่าใน Oat3(Rent) ในคอลัมภ์ที่ 3 ชื่อ EQ-CODE ครับ
ช่วยขยายความเพิ่มเติมว่า เอาค่าจากไหนไปไหนครับ
ottokung25 wrote:ขอถามต่อเลยครับ ว่าจะให้ค่าจะใน Listbox ไปเชคใน Cell ก่อนได้มั้ยครับ
ประมาณว่าถ้าเจอข้อมูลที่ตรงกับใน Listbox แล้วให้เอาข้อมูลใน Textbox9 ไปวาง
สามารถทำได้ครับ เช่นนำค่าใน ListBox ไป Loop เพื่อเปรียบเทียบกับค่าในคอลัมน์ที่ต้องการ
Post Reply