: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
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

Loop แบบมีเงื่อนไข

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

Loop แบบมีเงื่อนไข

#1

Post by Bafnet »

สวัสดีครับอาจารย์ มีเรื่องรบกวนอีกแล้วครับ ผมสร้างเอกสารที่มี OptionButton ซึ่งได้ตั้งชื่อ Groupnameของแต่ละชุดแล้ว
โดยสร้างบนชีต
ผมมีตารางข้อมูลที่ต้องการสั่งLoop แล้วนำค่าไปแสดงที่หน้าเอกสาร (Loopจนกว่าจะพิมพ์ครบทุกข้อมูล) มีคำสั่งดังนี้(เขียนแบบผมนะ :lol: )
Private Sub CommandButton1_Click()
Dim Ing As Long, rs As Range, ry As Range
Sheet3.Range("AA11").Value = 1
On Error Resume Next
Do While Sheet3.Range("AA11").Value <> Sheet3.Range("Z11").Value 'ให้ทำจนกว่าลำดับค่าเริ่มต้นจะเท่ากับลำดับค่าที่มากที่สุด
With Worksheets("Open2")
Ing = Application.Match(Sheet3.Range("AB11").Value, Sheet3.Range("AA:AA"), 0)
Set rs = Sheet3.Range("AA" & Ing).Resize(, 8)
Set ry = Sheet3.Range("AI1")
End With
rs.Copy: ry.PasteSpecial xlPasteValues
Application.CutCopyMode = False
If Sheet1.Range("Z14").Value = 1 Then 'ผมกำหนดค่า Z14=IF(AI5="นาย",1,IF(AI5="นาง",2,IF(AI5="น.ส",3,FALSE))) ,AI5=LEFT(AI7,3) ,AI7=ชื่อลูกค้า)
Sheet1.OptionButton13.Value = True 'แสดงนาย
Sheet1.OptionButton14.Value = False
Sheet1.OptionButton15.Value = False
End If
If Sheet1.Range("Z14").Value = 2 Then
Sheet1.OptionButton14.Value = True 'แสดงนาง
Sheet1.OptionButton13.Value = False
Sheet1.OptionButton15.Value = False
End If
If Sheet1.Range("Z14").Value = 3 Then
Sheet1.OptionButton15.Value = True 'แสดงนางสาว
Sheet1.OptionButton13.Value = False
Sheet1.OptionButton14.Value = False
End If
If Sheet3.Range("Z15").Value = True Then ' Z15=IF(AI5="นาย",TRUE,FALSE),เพื่อระบุเพศ
Sheet1.OptionButton17.Value = True 'เพศชายแสดง
Sheet1.OptionButton18.Value = False 'เพศหญิง
End If
If Sheet3.Range("Z15").Value = False Then
Sheet1.OptionButton18.Value = True 'เพศหญิงแสดง
Sheet1.OptionButton17.Value = False 'เพศชาย
End If
Sheet1.TextBox1.Value = Sheet3.Range("AP1").Text
Sheet1.TextBox1.Value = Sheet3.Range("AN1").Text
Sheet1.Range("O14").Value = Sheet3.Range("AI1").Value
Sheet1.Range("X27").Value = Sheet3.Range("AL1").Value
Sheet1.PrintOut
Sheet3.Range("AA12").Value = Sheet3.Range("AA11").Value + 1
Sheet3.Range("AA11").Value = Sheet3.Range("AA12").Value
Loop
If Sheet3.Range("AA11").Value = Sheet3.Range("Z11").Value Then
Exit Sub
End If
If Err > 0 Then
Exit Sub
End If
End Sub
การloop เพื่อส่งข้อมูลก็โอเคครับมีข้อมูลในตาราง 10 ข้อมูลก็สามารถพิมพ์เอกสารของลูกค้าแต่ละรายได้ครบตามจำนวน
แต่ประเด็นคือ OptionButton ไม่ยอมแสดงค่าตามเงื่อนไขที่ตั้งไว้
1.JPG
พยายามคิดแก้ยังไงก็ไม่สำเร็จ(16.30-1.59 น.) :flw: รบกวนอาจารย์สอนหน่อยครับ
You do not have the required permissions to view the files attached to this post.
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

Re: Loop แบบมีเงื่อนไข

#2

Post by Bafnet »

อาจารย์ครับรบกวนอีกสักเรื่องผมสัยจังครับ
ผมรันงานที่ผมทำขึ้นบนเอ็กเซล 2003 ก็รันได้
แต่พอรันบนเอ็กเซล 2010 มันขึ้นลักษณะนี้ ทั้งๆที่เคยรันได้เป็นเพราะสาเหตุใดครับ
1.jpg
เป็นบ่อยมากครับบนวินโดว์7
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Loop แบบมีเงื่อนไข

#3

Post by snasui »

:D จาก Code ด้านบน ช่วยแนบไฟล์ Excel ที่เป็นตัวอย่างมาด้วยครับ จะได้สะดวกในการทดสอบ
User avatar
โดดเดี่ยวผู้น่ารัก
Member
Member
Posts: 244
Joined: Tue Dec 14, 2010 7:38 am

Re: Loop แบบมีเงื่อนไข

#4

Post by โดดเดี่ยวผู้น่ารัก »

เป็นปัญหา Excel error เหมือนกันเลยค่ะ ไม่รู้เพราะอะไร
...มันจำเป็นด้วยหรือที่ต้องอยู่ในกฎเกณฑ์ที่ใครบางคนกำหนดว่า..รักควรเป็นอย่างไร...
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

Re: Loop แบบมีเงื่อนไข

#5

Post by Bafnet »

สวัสดีครับอาจารย์ เรื่องที่ได้เรียนถามไป ผมก็ยังคงมีปัญหา แต่ก็แก้ไขโดยการใช้ Checkbox ของเครื่องมือฟอร์มแทนของทูลบ็อกในวีบี
บนเครื่องมือของฟอร์มมีการกำหนดเฟรมได้แต่ไม่สามารถกำหนดรูปแบบได้เหมือนกับเฟรมของทูลบ็อกในวีบี
อาจารย์ครับผมมีปัญหาอีกเรื่องคืออยากทราบว่าเช่นบนUSERFORM ผมใช้ Multipage ประกอบด้วยTEXTBoxหลายอัน
ผมต้องการให้TextBox เหล่านั้นเคลียข้อความเมื่อเปลี่ยนหน้า ลักษณะดังนี้
Private Sub MultiPage2_Change()
Label84.Visible = False
Label85.Visible = False
Label86.Visible = False
Label87.Visible = False
Sheet1.Range("G21").Value = ""
Sheet1.Range("G25").Value = ""
Sheet1.Range("E22").Value = ""
Sheet1.Range("F22").Value = ""
Sheet1.Range("AZ2:BF5").Value = ""
TextBox38.Text = ""
TextBox39.Text = ""
TextBox41.Text = ""
TextBox43.Text = ""
TextBox44.Text = ""
TextBox45.Text = ""
TextBox46.Text = ""
TextBox47.Text = ""
TextBox48.Text = ""
TextBox49.Text = ""
TextBox50.Text = ""
TextBox51.Text = ""
TextBox52.Text = ""
TextBox53.Text = ""
TextBox54.Text = ""
TextBox55.Text = ""
TextBox56.Text = ""
txtrebook.Text = ""
txtbook.Text = ""
Cbocode.Text = ""
ComboBox10.Text = ""
ComboBox10.Text = ""
On Error Resume Next
myPic = "C:\Program Files\BES 4U\DATA\pic\1.jpg"
Image11.Picture = LoadPicture(myPic)
If Err > 0 Then
Exit Sub
End If
End sub

ประเด็นคือมันมีคำสั่งหรือวิธีเขียนแบบว่าสั่งที่เดียวทุกTextBoxที่อยู่หน้านี้เคลียข้อความทั้งหมด
Private Sub MultiPage2_Change()
ALL TextBox.Text="" :lol: อยากได้ประมาณนี้ครับ พอมันเยอะๆแล้วเริ่มมึนครับ อาจารย์ช่วยหน่อยนะครับ แนะนำผมด้วย :roll:
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Loop แบบมีเงื่อนไข

#6

Post by snasui »

:D ใช้การ Loop หา TextBox เข้ามาช่วยได้ครับ เช่น

Code: Select all

Sub TextBookCount()
Dim Ctrl As Control
    For Each Ctrl In UserForm1.Controls
        If TypeName(Ctrl) = "TextBox" Then
            Ctrl = ""
        End If
     Next Ctrl
End Sub
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

Re: Loop แบบมีเงื่อนไข

#7

Post by Bafnet »

:lol: ขอบคุณมากๆครับ เป็นคำสั่งที่ให้ตรวจสอบว่าcontol ตัวที่ชื่อ textBox
หายเหนื่อยครับ ขอบคุณครับ :mrgreen:
Post Reply