คือผม ลองใช้ for สร้าง commandbutton มาสัก 10
ทีนี้ ผมจะ for สร้าง sub อีกได้ไหมครับ คือ คำสั่งมันก็ คล้าย ๆ กันอะครับ
ถ้าจะให้พิมพืเนี่ย มันเยอะไปอะครับ เพราะ จำเป็นต้องใช้ 30 กว่าปุ่ม ตาลายเลยครับ
ขอบคุณ ครับ
สร้าง function อันเดียวให้สามารถเรียกใช้กี่ครั้งก็ได้ครับ (เป็นหลักการของ function อยู่แล้ว)
เขียนโค้ดคล้ายๆ กันซ้ำๆ ก็เป็น duplicate สิครับ
อ้างถึงจาก: ikarozu ใน 23 มกราคม 2013, 14:48:15
สร้าง function อันเดียวให้สามารถเรียกใช้กี่ครั้งก็ได้ครับ (เป็นหลักการของ function อยู่แล้ว)
เขียนโค้ดคล้ายๆ กันซ้ำๆ ก็เป็น duplicate สิครับ
คือผมจะ ใส่โค้ด ตอนเกิด อีเว้น คลิกของ commandbutton ที่ for มานะครับ
แล้วจะเอา function ไปใส่ตรงไหน อะครับ
ขอบคุณครับ
ลองสร้าง Module แล้วเขียน function ใน module นั้น
แล้วก็เรียกใช้ function ใน module จาก event ของปุ่มดูครับ
ผมว่าถ้าปุ่มจำนวน 30 ปุ่ม ตายตัว ก็สร้างไว้เลยดีกว่ามั้งครับ ไม่ต้องไปเขียนโค้ดสร้างปุ่ม
อีกทั้งจะกำหนด Event อะไรก็กำหนดง่ายด้วยครับ
ถ้าขี้เกียจพิมพ์ก็พิมพ์แค่ปุ่มเดียว Copy & Paste เปลี่ยนแค่ชื่อปุ่ม เพราะคำสั่งก็เรียกเหมือนกัน ตามที่ท่านบอก
ถึงแม้ปุ่มจะเหมือนกัน เรียกฟังก์ชั่นเดียวกัน ก็สามารถที่จะกำหนดได้ว่าให้แต่ละปุ่มส่งอะไรไปต่างกันได้ด้วย อยู่ที่ฟังก์ชั่นที่ท่านเขียนด้วยครับ
มันจะมี addcommand ตอน new create button ครับ
ลองดูผมเคยเล่นอยู่ ตอน add command ก็เลือกไป sub หรือ function ที่ต้องกรจะให้ทำงานครับ
แล้ว function นั้น คุณสามารถใส่ param ได้ด้วย :o นั่นแหล่ะ คือ คำตอบ :P แต่ข้อเสียคุณจะต้องสร้าง location ให้มันด้วยต้องกะเอาครับ
ขอบคุณทุกท่าน มากครับ : ) :wanwan017:
+1 ให้ทุกท่านครับ
เพื่อให้โค๊ดสั้น ส่วนมากผมจะสร้าง CommandButton Array ไว้ใน Form ก่อน 1 ตัว
ในตัวอย่างนี้ผมให้ชื่อ cmdButton โดยให้ Index = 0 และ Visible = 0
แล้วเขียน Sub cmdButton_Click ไว้เลย เช่น
Private Sub Form_Load()
Dim i&
For i = 1 To 30
Load cmdButton(i)
With cmdButton(i)
.Left = cmdButton((i - 1) Mod 10).Left + .Width
.Top = cmdButton(0).Top + .Height * Int((i - 1) \ 10)
.Caption = "Button " & i
.Visible = True
End With
Next
End Sub
Private Sub cmdButton_Click(Index As Integer)
MsgBox cmdButton(Index).Caption
End Sub
อ้างถึงจาก: Extra Cash ใน 23 มกราคม 2013, 19:53:52
เพื่อให้โค๊ดสั้น ส่วนมากผมจะสร้าง CommandButton Array ไว้ใน Form ก่อน 1 ตัว
ในตัวอย่างนี้ผมให้ชื่อ cmdButton โดยให้ Index = 0 และ Visible = 0
แล้วเขียน Sub cmdButton_Click ไว้เลย เช่น
Private Sub Form_Load()
Dim i&
For i = 1 To 30
Load cmdButton(i)
With cmdButton(i)
.Left = cmdButton((i - 1) Mod 10).Left + .Width
.Top = cmdButton(0).Top + .Height * Int((i - 1) \ 10)
.Caption = "Button " & i
.Visible = True
End With
Next
End Sub
Private Sub cmdButton_Click(Index As Integer)
MsgBox cmdButton(Index).Caption
End Sub
ใช่เลยครับผม ขอบคุณมากครับ ผมก็ ทำตามวิธีของท่าน ผม คิดมาตั้งนาน ทำยังงัยก็ไม่ได้ มาได้ ตอน ต้องสร้าง cmb ไว้ ก่อน 1 ตัวโดย ตัวนั้น ต้องเป็น array
ขอบคุณอีกรอบครับ