: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

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
kittiwatw
Member
Member
Posts: 19
Joined: Fri Nov 15, 2019 8:33 am

ต้องการนำข้อมูลใน listbox มาแสดงใน sheet

#1

Post by kittiwatw »

สวัสดีค่ะ พอดีติดปัญหา นั่งคิดมาทั้งวันเลยจะทำยังไงดี

ต้องการนำข้อมูลที่อยู่ใน list box มาแสดงใน sheet "AU-..." เมื่อกดปุ่ม "Generate Checklist" สิ่งที่ต้องการให้โชว์ใน sheet นั้น คือข้อมูล "Detail" , "Process ID" และ "Checklist ID"

ซึ่งข้อมูลที่ดึงมานั้นมาจาก 2 แหล่ง ตามที่คิดไว้ คือ
แหล่งที่ 1 Process Form ข้อมูลที่อยู่ใน combobox1(Process) และ ข้อมูลที่อยู่ใน list box ด้านขวามือ
แหล่งที่ 2 ข้อมูล Checklist ID ที่อยู่ใน sheet "All Checklist"

:D ขอคำแนะนำหน่อยนะคะและขอบคุณสำหรับความช่วยเหลือค่ะ

พอดีไม่มีความรู้เรื่อง programming เลย เพิ่งมาเขียน vba ได้ อาทิตย์หนึ่ง อาศัยหาความรู้จาก internet แล้วศึกษาด้วยตนเอง ลองผิดลองดู ดูค่ะ :flw:
You do not have the required permissions to view the files attached to this post.
kittiwatw
Member
Member
Posts: 19
Joined: Fri Nov 15, 2019 8:33 am

Re: ต้องการนำข้อมูลใน listbox มาแสดงใน sheet

#2

Post by kittiwatw »

ปัจจุบัน เขียน code ออกมาแบบนี้ค่ะ แต่ว่าปัญหาที่พบต่อมาก็คือ เมื่อเราทำการเลือก process ต่อไป เพื่อให้ checklist มาแสดงใน sheet "AU-..." ต่อท้ายรายการก่อนหน้านี้ พบว่า โปรมแกรม error ค่ะ

รบกวนช่วยดูให้หน่อยได้ไหมคะ ว่าต้องแก้ตรงไหนบ้าง ขอบคุณมากนะคะ

แนบไฟล์ล่าสุดมาให้ด้วยค่ะ

Code: Select all

Private Sub btGenChecklist_Click()
   Dim rowIndex As Integer
    rowIndex = 19
      For Each myCell In lbInitializeRight.List
   ActiveSheet.Cells(rowIndex, 3).Value = Sheet6.Cells(Trim(Split(myCell, ":")(0)), 6) 'detail
   ActiveSheet.Cells(rowIndex, 6).Value = Sheet6.Cells(Trim(Split(myCell, ":")(0)), 2) 'processid
   ActiveSheet.Cells(rowIndex, 7).Value = Sheet6.Cells(Trim(Split(myCell, ":")(0)), 3) 'checklistid
      rowIndex = rowIndex + 1
  Next myCell
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: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ต้องการนำข้อมูลใน listbox มาแสดงใน sheet

#3

Post by snasui »

:D ตัวอย่างการนำข้อมูลใน ListBox ไปวางต่อท้ายค่าในเซลล์ครับ

Code: Select all

'Other code
rowIndex = Sheets("AU-01").Range("c" & Rows.Count).End(xlUp).row
For i = 1 To lbInitializeRight.ListCount
    ActiveSheet.Cells(rowIndex, 3).Value = Sheet6.Cells(Trim(Split(lbInitializeRight.List(i - 1), ":")(0)), 6) 'detail
    ActiveSheet.Cells(rowIndex, 6).Value = Sheet6.Cells(Trim(Split(lbInitializeRight.List(i - 1), ":")(0)), 2) 'processid
    ActiveSheet.Cells(rowIndex, 7).Value = Sheet6.Cells(Trim(Split(lbInitializeRight.List(i - 1), ":")(0)), 3) 'checklistid
    rowIndex = rowIndex + i
Next i
'Other code
kittiwatw
Member
Member
Posts: 19
Joined: Fri Nov 15, 2019 8:33 am

Re: ต้องการนำข้อมูลใน listbox มาแสดงใน sheet

#4

Post by kittiwatw »

สวัสดีค่ะ อาจารย์ :D

ลองนำ code ที่อาจารย์ปรับแก้มาให้ complie ดู ผลลัพธ์ได้ภาพค่ะ :flw:

ข้อมูล checklist อันแรก ไปแทนที่ header ของ table และข้อมูลไม่ได้เรียงบรรทัดลงมา มีการเว้นบรรทัด :flw:

รวบกวนขอคำแนะนำจากอาจารย์หน่อยนะคะ ว่ามีตรงไหนผิดพลาดหรือเปล่าค่ะ

ขอบพระคุณมากค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ต้องการนำข้อมูลใน listbox มาแสดงใน sheet

#5

Post by snasui »

:D ควรแนบไฟล์พร้อม Code ที่แก้มาด้วยจะได้เห็นว่าแก้ตรงไหน อย่างไรครับ

ถ้าแก้ถูกต้องจะต้องไม่เว้นบรรทัด เพราะไม่มีบรรทัดไหนใน Code ที่ผมปรับให้เว้นบรรทัดครับ
kittiwatw
Member
Member
Posts: 19
Joined: Fri Nov 15, 2019 8:33 am

Re: ต้องการนำข้อมูลใน listbox มาแสดงใน sheet

#6

Post by kittiwatw »

นำ Code ที่อาจารย์ให้มาแปะลงไปแทนที่ code ชุดเดิมของตัวเองเลยค่ะ แล้วลอง complie

แนบไฟล์มาให้ด้วยค่ะ

Code: Select all

Private Sub btGenChecklist_Click()
   Dim rowIndex As Integer
    rowIndex = Sheets("AU-01").Range("c" & Rows.Count).End(xlUp).row
For i = 1 To lbInitializeRight.ListCount
    ActiveSheet.Cells(rowIndex, 3).Value = Sheet6.Cells(Trim(Split(lbInitializeRight.List(i - 1), ":")(0)), 6) 'detail
    ActiveSheet.Cells(rowIndex, 6).Value = Sheet6.Cells(Trim(Split(lbInitializeRight.List(i - 1), ":")(0)), 2) 'processid
    ActiveSheet.Cells(rowIndex, 7).Value = Sheet6.Cells(Trim(Split(lbInitializeRight.List(i - 1), ":")(0)), 3) 'checklistid
    rowIndex = rowIndex + i
Next i
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: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ต้องการนำข้อมูลใน listbox มาแสดงใน sheet

#7

Post by snasui »

:D ปรับ Code ใหม่เป็นตามภาพครับ

Code: Select all

'Other code
For i = 1 To lbInitializeRight.ListCount
    ActiveSheet.Cells(rowIndex + i, 3).Value = Sheet6.Cells(Trim(Split(lbInitializeRight.List(i - 1), ":")(0)), 6) 'detail
    ActiveSheet.Cells(rowIndex + i, 6).Value = Sheet6.Cells(Trim(Split(lbInitializeRight.List(i - 1), ":")(0)), 2) 'processid
    ActiveSheet.Cells(rowIndex + i, 7).Value = Sheet6.Cells(Trim(Split(lbInitializeRight.List(i - 1), ":")(0)), 3) 'checklistid
Next i
'Other code
การทดสอบการรัน Code เรียกว่า "ทดสอบ" ไม่เรียกว่า "Compile" ส่วนการ Compile คือการเข้าเมนู Debug > Compile VBAProject เพื่อจะทดสอบว่า Code ถูกต้องตรงตาม Statement ที่ควรจะเป็น มีการประกาศตัวแปรก่อนใช้งานหรือไม่ ฯลฯ ครับ
kittiwatw
Member
Member
Posts: 19
Joined: Fri Nov 15, 2019 8:33 am

Re: ต้องการนำข้อมูลใน listbox มาแสดงใน sheet

#8

Post by kittiwatw »

ขอขอบคุณ อาจารย์_/\_ สำหรับคำแนะนำในการเรียกการ "ทดสอบ" อย่างถูกต้องนะคะ :D

มีเพิ่มเติมค่ะ อาจารย์ ตอนนี้ที่เขียน code ได้ทำการกำหนด rowIndex = 18 จากนั้นวน loop ให้ + rowIndex ไปเรื่อยๆตามที่ อาจารย์แนะนำ

ปัญหาที่พบต่อมาคือ ถ้าเราต้องการเลือก รายการ checklist ใหม่ กลายเป็นว่า สิ่งที่เลือกใหม่นั้น มาทับข้อความก่อนหน้านี้ค่ะ :flw:

ตัวอย่างเช่น
เลือกครั้งที่ 1 Process "Test" เลือก Phase "Planning" เลือก checklist 1-3 กด Gen...
เลือกครั้งที่ 2 Process "Test" เลือก Phase "Test Execution" เลือก Checklist 1-2 กด Gen...

เราสามารถแก้ไขค่า rowIndex เป็นอะไรได้บ้างคะ

ขอบคุณสำหรับความช่วยเหลือค่ะ

Code: Select all

Private Sub btGenChecklist_Click()
   Dim rowIndex As Integer
rowIndex = 18
For i = 1 To lbInitializeRight.ListCount
    ActiveSheet.Cells(rowIndex + i, 3).Value = Sheet6.Cells(Trim(Split(lbInitializeRight.List(i - 1), ":")(0)), 6) 'detail
    ActiveSheet.Cells(rowIndex + i, 6).Value = Sheet6.Cells(Trim(Split(lbInitializeRight.List(i - 1), ":")(0)), 2) 'processid
    ActiveSheet.Cells(rowIndex + i, 7).Value = Sheet6.Cells(Trim(Split(lbInitializeRight.List(i - 1), ":")(0)), 3) 'checklistid
Next i
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: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ต้องการนำข้อมูลใน listbox มาแสดงใน sheet

#9

Post by snasui »

kittiwatw wrote: Mon Nov 25, 2019 10:13 pm เราสามารถแก้ไขค่า rowIndex เป็นอะไรได้บ้างคะ
:D สังเกตได้ที่โพสต์ #3 ว่าผมตอบไปเป็นเช่นไร ให้ใช้ตามนั้น งานลักษณะที่จะต้องเพิ่มบรรทัดไปเรื่อย ๆ เราจะไม่กำหนดให้เท่ากับค่าคงที่ใด ๆ ครับ
kittiwatw
Member
Member
Posts: 19
Joined: Fri Nov 15, 2019 8:33 am

Re: ต้องการนำข้อมูลใน listbox มาแสดงใน sheet

#10

Post by kittiwatw »

ต้องขอโทษ อาจารย์ด้วยค่ะ :D ที่ดูรายละเอียดไม่ถี่ถ้วน ตอนนี้ทดสอบ code ได้ถูกต้องตามความต้องการแล้วค่ะ
Post Reply