: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

เรียนสอบถามการใช้ VB Code วน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
GobWeravong
Member
Member
Posts: 86
Joined: Mon Mar 02, 2020 6:38 pm
Excel Ver: 2016

เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#1

Post by GobWeravong »

เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข เนื่องจากต้องการใช้ VB Code แบบวน loop โดยที่ต้องมีการทำ Loop ทั้งคู่ แต่ตัวที่ทำ Loop อีกตัวจะคงเดิม และอีกตัวมีการเปลี่ยน(โดยตัวที่เปลี่ยนจะเปลี่ยนชื่อ VB Code แบบเป็นตัวเลขครับ ซึ่งรายละเอียดตามไฟล์แนบครับ (รายละเอียดเพิ่มเติมตามไฟล์แนบครับ) เนื่องจากเรื่อง Loop เข้าใจยากมากๆ ซึ่งผม Loop ได้เฉพาะ RunAll วนไปมาครับ ตัวอย่าง เช่น
Call Week1_Day1 ไป Call RunAll
Call Week1_Day2 ไป Call RunAll
Call Week1_Day3 ไป Call RunAll .....
Call Week1_Day7 ไป Call RunAll

Call Week2_Day1 ไป Call RunAll ไปถึง....
Call Week2_Day7 ไป Call RunAll
ไปเรื่อยๆ จนครบ
Call Week7_Day7 ไป Call RunAll

เมื่อครบ ก็กลับมาเริ่มต้นใหม่ครับ ขอบคุณมากๆครับ
You do not have the required permissions to view the files attached to this post.
User avatar
logic
Gold
Gold
Posts: 1510
Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365

Re: เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#2

Post by logic »

อ่านแล้วน่าจะให้เลือกเลยว่า Week ไหน Day ไหน ทำแค่ปุ่มเดียว คลิกแล้วกรอก Week, กรอก Day ลงไปเลย

ลองดูแบบนี้ครับ

Code: Select all

Sub CopyDayWeek()
    On Error Resume Next
    Dim w As Integer: w = InputBox("Week")
    Dim d As Integer: d = InputBox("Day")
    Range("b4").Value = Range("b4").Offset(w, d).Value
    Range("c12").Value = Range("b4").Value
End Sub
GobWeravong
Member
Member
Posts: 86
Joined: Mon Mar 02, 2020 6:38 pm
Excel Ver: 2016

Re: เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#3

Post by GobWeravong »

เรียน คุณ logic เนื่องจากไฟล์นี้เป็นการจำลองข้อมูลเพื่อนำมาสอบถาม แต่ใน file จริง ในช่อง C4หรือทกๆช่องที่เป็นเลข 11-77 จะเป็นข้อมูล Data ของแผนงานแต่ละวัน โดยโปรแกรมจะต้องนำ Data เหล่านี้ไปวางในช่อง B4 ครับ และนำสิ่งที่ต้องการคือต้องการทำ Loop เพื่อให้โปรแกรมทำงาน loop โดยนำข้อมูลไปลงในช่อง B4 ครับ โดยวน loop ไปเรื่อยๆครับ รายละเอียดผมทำมาใหม่ตามไฟล์แนบครับ ขอบคุณมากๆครับ
You do not have the required permissions to view the files attached to this post.
GobWeravong
Member
Member
Posts: 86
Joined: Mon Mar 02, 2020 6:38 pm
Excel Ver: 2016

Re: เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#4

Post by GobWeravong »

ภาพประกอบ process การทำงานที่ต้องการทำ LOOP ครับ(มีในไฟล์แนบครับ)
You do not have the required permissions to view the files attached to this post.
User avatar
logic
Gold
Gold
Posts: 1510
Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365

Re: เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#5

Post by logic »

หรือจะเป็นแบบนี้ครับ

Code: Select all

Sub CopyDayWeek()
    For Each cell In [c4:i8]
        [b4].Value = cell.Value: [c12].Value = [b4].Value
    Next cell
End Sub
ใส่ปุ่มเดียวเหมือนกันวนไปทุกเซลล์ใน c4:i8
GobWeravong
Member
Member
Posts: 86
Joined: Mon Mar 02, 2020 6:38 pm
Excel Ver: 2016

Re: เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#6

Post by GobWeravong »

หมายถึง code ตัวนี้ครับ มีวิธีทำ loop อย่างไรครับ ให้สั้นๆและง่าย เนื่องจากตอนนี้ผมใช้วิธี copy call ตามภาพ จนครบ 35x2=70 บรรทัดเลยครับ

Code: Select all

 
Sub Run_Week1_Loop1()
Call Copy_Week1_Day1
Call Run_All
Call Copy_Week1_Day2
Call Run_All
Call Copy_Week1_Day3
Call Run_All
'....
'....
'....
Call Copy_Week5_Day6
Call Run_All
Call Copy_Week5_Day7
Call Run_All
'For i = 1 To 35
'Call Run_All
'Next i
End Sub
User avatar
logic
Gold
Gold
Posts: 1510
Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365

Re: เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#7

Post by logic »

อ่านแล้วไม่เข้าใจ ขอผ่านครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#8

Post by snasui »

:D แสดงว่ามีการเขียนเอาไว้แล้วและต้องการจะไป Loop เรียกใช้ เช่นนี้ใช่หรือไม่ครับ

ถ้าผมเข้าใจถูกต้อง ตัวอย่าง Code ก็จะเป็นเช่นด้านล่างนี้ครับ

Code: Select all

Sub Run_Week1_Loop1()
    Dim i As Integer
    On Error Resume Next
    For i = 1 To 35
       Application.Run "Copy_Week1_Day" & i
       Call Run_All
    Next i
End Sub
GobWeravong
Member
Member
Posts: 86
Joined: Mon Mar 02, 2020 6:38 pm
Excel Ver: 2016

Re: เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#9

Post by GobWeravong »

ผมหมายถึง code ตัวนี้ครับ มีวิธีทำ loop อย่างไรครับ ให้สั้นๆและง่าย เนื่องจากตอนนี้ผมใช้วิธี copy call ตามภาพ จนครบ 35x2=70 บรรทัดเลยครับ เนื่องจาก file จริงๆ Copy_Week1_Day1 จะมี process ของการทำงานของ code อีกมากมายครับ และ Run_All เช่นกันครับ เพียงแต่อยากทราบวิธีการใช้ loop เพื่อลด code ตามด้านล่างนี้ครับ ยกตัวอย่างเช่น
ใช้ ตัวนี้เพื่อ RunAll ครบ 35 ครั้งครับ แต่ตัวอย่างใน code ยังมี Copy_Week1_Day1 จนถึง 35 ซึ่งต้องทำ loop สลับกันทำงานครับ ซึ่งผลไม่แน่ใจว่าทำ loop อย่างไรครับ ตัวอย่างดังนี้ครับ
'For i = 1 To 35
'Call Copy_Week(1)_Day(1) ........ สามารถ loop วนจาก คำว่า Week1_Day1, Week1_Day2......ไปจนถึง Week5_Day7 ครับ
'Call Run_All
'Next i

Code: Select all

Sub Run_Week1_Loop1()
Call Copy_Week1_Day1
Call Run_All
Call Copy_Week1_Day2
Call Run_All
Call Copy_Week1_Day3
Call Run_All
' คำสั่ง Run ยาวไปถึง Week5_Day7 ซึ่งยาวถึง 70 บรรทัดครับ อยากใช้การคำสั่ง loop ครับ

Call Copy_Week5_Day6
Call Run_All
Call Copy_Week5_Day7
Call Run_All
End Sub
GobWeravong
Member
Member
Posts: 86
Joined: Mon Mar 02, 2020 6:38 pm
Excel Ver: 2016

Re: เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#10

Post by GobWeravong »

snasui wrote: Fri May 07, 2021 7:32 pm :D แสดงว่ามีการเขียนเอาไว้แล้วและต้องการจะไป Loop เรียกใช้ เช่นนี้ใช่หรือไม่ครับ

ถ้าผมเข้าใจถูกต้อง ตัวอย่าง Code ก็จะเป็นเช่นด้านล่างนี้ครับ

Code: Select all

Sub Run_Week1_Loop1()
    Dim i As Integer
    On Error Resume Next
    For i = 1 To 35
       Application.Run "Copy_Week1_Day" & i
       Call Run_All
    Next i
End Sub
เรียน คุณ snasui ใช่แล้วครับ เดี๋ยวผมลองทดสอบดูครับ ขอบคุณมากๆครับ
GobWeravong
Member
Member
Posts: 86
Joined: Mon Mar 02, 2020 6:38 pm
Excel Ver: 2016

Re: เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#11

Post by GobWeravong »

เรียน คุณ snasui ครับ ขอบคุณมากๆครับ จาก code ที่ให้มาครับ ใช่หลักการที่ต้องการแล้วครับ แต่จะมีเพิ่มเติมคือมี Call Run_All ด้วยครับ ที่จะต้อง run คู่กันครับ (โดยสลับฟันปลากับ code นี้ครับ "Application.Run "Copy_Week1_Day" & i")
ด้านล่างคือตัวย่างแบบไม่ loop ครับ (และ ค่าWeek จะมีค่าวน 1-5 และ dayมีวน 1-7 ครับตามนี้ครับ)

Code: Select all

Call Copy_Week1_Day1
Call Run_All

Call Copy_Week1_Day2
Call Run_All

Call Copy_Week1_Day3
Call Run_All

' คำสั่ง Run ยาวไปถึง Week5_Day7 ซึ่งยาวถึง 70 บรรทัดครับ อยากใช้การคำสั่ง loop ครับ

Call Copy_Week5_Day6
Call Run_All

Call Copy_Week5_Day7
Call Run_All

End Sub
[\code]
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#12

Post by snasui »

:D ผมเขียนไว้เรียบร้อยแล้วในโพสต์ #8 ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#13

Post by snasui »

GobWeravong wrote: Fri May 07, 2021 7:53 pm

Code: Select all

Call Copy_Week5_Day6
Call Run_All

Call Copy_Week5_Day7
Call Run_All
:D จากความต้องการนี้แสดงว่าจะ Loop ทั้ง Week และ Day

ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Sub Run_Week1_Loop1()
    Dim i As Integer, j As Integer
    On Error Resume Next
    For i = 1 To 7
        For j = 1 To 5
            Application.Run "Copy_Week" & "j" & "_Day" & i
            Call Run_All
        Next j
    Next i
End Sub
GobWeravong
Member
Member
Posts: 86
Joined: Mon Mar 02, 2020 6:38 pm
Excel Ver: 2016

Re: เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#14

Post by GobWeravong »

เรียน​ คุณ​ snasui​ ขอบคุณมากๆครับ​ เดึ๋ยวผมทดสอบอีกครั้งครับ
GobWeravong
Member
Member
Posts: 86
Joined: Mon Mar 02, 2020 6:38 pm
Excel Ver: 2016

Re: เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#15

Post by GobWeravong »

เรียน คุณ snasui ครับ ผมลองทดสอบแล้ว มันไวมากๆครับ เหมือนว่า มันไม่ copy เลขไปวาง และไปวางอีกช่องด้วยครับ เพราะลองลบเลขให้เหลือเลข 1 ตัวเดียวที่ C4 และกดปุ่มดู ทำให้ B4 และ C12 ก็ไม่มีค่าเลข 1 ครับ

Code: Select all

Sub Run_Week1_Loop1()
    Dim i As Integer, j As Integer
    On Error Resume Next
    For i = 1 To 7
        For j = 1 To 5
            Application.Run "Copy_Week" & "j" & "_Day" & i
            Call Run_All
        Next j
    Next i
End Sub
[\code]
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#16

Post by snasui »

:D กรุณาอธิบายมาใหม่ว่าผลจาก Code เป็นอย่างไร สิ่งที่ต้องการเป็นอย่างไร

ควรปรับปรุง Code มาเองก่อนเสมอ ถามกันเฉพาะที่เป็นปัญหาครับ

ในการใช้ Code จะต้อง Debug ให้เป็น วิธีการ Debug อย่างง่าย ๆ คือคลิกไปที่ Code แล้วกดแป้น F8 ซ้ำ ๆ เพื่อดูการทำงานทีละ Step ครับ

ก่อนอื่นปรับ Code บรรทัดนี้เปลี่ยน "j" เป็น j เนื่องจากผมลบใส่ " เกินครับ

Code: Select all

Application.Run "Copy_Week" & j & "_Day" & i
GobWeravong
Member
Member
Posts: 86
Joined: Mon Mar 02, 2020 6:38 pm
Excel Ver: 2016

Re: เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#17

Post by GobWeravong »

เรียน คุณ snasui ขอบคุณมากๆครับ เดี๋ยวผมลองทดสอบ debug ตามคำแนะนำก่อนครับ
GobWeravong
Member
Member
Posts: 86
Joined: Mon Mar 02, 2020 6:38 pm
Excel Ver: 2016

Re: เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#18

Post by GobWeravong »

เรียน คุณ snasui ได้แล้วครับ ขอบพระคุณเป็นอย่างสูงครับ เปลี่ยนบรรทัดนี้ตามคำแนะนำครับ "j" เป็น j

Code: Select all

Application.Run "Copy_Week" & j & "_Day" & i
[\code]
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เรียนสอบถามการใช้ VB Code วน Loop แบบมีหลายเงื่อนไข

#19

Post by snasui »

:D ยินดีด้วยครับ

ตัวปิด Code คือ [/code] ไม่ใช่ [\code] เห็นใส่ผิดมาแทบทุกครั้งครับ
Post Reply