Page 1 of 1

ต้องการให้สร้างTextboxอัตโนมัติตามจำนวนที่รับค่า

Posted: Wed Oct 23, 2019 1:21 am
by tanusorn
สวัสดีครับ ต้องการให้สร้างTextboxอัตโนมัติตามจำนวนที่รับค่ามา ใน userform ใหม่ครับ ตามภาพครับ ควรเขียน code ยังไงหรือมีคำสั่งไหนที่สามารถทำได้ไหมครับ
1.jpg
ตอนนี้ผมลองเขียนโค้ดได้แค่การรับค่าและเด้งไป userform ใหม่ครับ

Code: Select all

Private Sub CommandButton1_Click()
    Dim machinenum As Integer
    Dim mannum As Integer
    Dim worknum As Integer
    machinenum = TextBox1
     mannum = TextBox2
    worknum = TextBox3
    UserForm3.Hide
    UserForm2.Show
End Sub
ขอบคุณครับ

Re: ต้องการให้สร้างTextboxอัตโนมัติตามจำนวนที่รับค่า

Posted: Wed Oct 23, 2019 7:41 am
by snasui
:D มีคำสั่งที่ทำได้แต่ต้องเขียน Code พวกนั้นมาเองก่อน จะทำสิ่งใดก็ต้องมีคำสั่งนั้น จะผิดจะถูกไม่ใช่ประเด็น ประเด็นคือเขียนมาก่อน ติดแล้วค่อยถามกันต่อ คำสั่งที่เขียนมายังไม่มี Code สำหรับการเพิ่ม Object การปรับขนาด การจัดเรียง ฯลฯ ครับ

การให้สร้าง Object แบบที่ถามมานี้เรียกว่า On the fly มีความยุ่งยากในการจัดการเพราะต้องวางให้เป็นระเบียบ ตรงกับ Object ที่มีก่อนหน้า ทางเลือกหนึ่งคือสร้างเอาไว้ก่อนล่วงหน้าให้พอกับงานที่ต้องใช้ จากนั้นค่อยซ่อนหรือยกเลิกการซ่อนตามค่าที่ผู้ใช้งานกรอก ปรับขนาด Form ให้เห็น Object เท่าจำนวนบรรทัดที่ผู้ใช้กรอกเช่นนี้เป็นต้น การทำงานลักษณะนี้จะง่ายกว่า สร้าง ลบ จัดเรียงใหม่ ในการทำงานแต่ละครั้งที่ต้องเขียน Code จำนวนมากครับ

Re: ต้องการให้สร้างTextboxอัตโนมัติตามจำนวนที่รับค่า

Posted: Wed Oct 23, 2019 1:31 pm
by tanusorn
ขอบคุณสำหรับคำแนะนำครับ จะนำไปปรับปรุงแก้ไขและนำไปพัฒนาตนเองต่อไปครับ

Re: ต้องการให้สร้างTextboxอัตโนมัติตามจำนวนที่รับค่า

Posted: Thu Oct 24, 2019 11:37 pm
by tanusorn
ตอนนี้ผมลองเขียนโค้ดรับค่าจำนวน Textbox ที่ต้องการมาเก็บไว้ในรูปแบบ Array และผมต้องการให้มันวน loop เพื่อแสดงTextbookตามจำนวนค่าที่รับมา ไม่สำเร็จครับ มันขึ้นว่า Sub or Function not defined ครับ

นี่โค้ดที่ลองเขียนครับ

Code: Select all

Private Sub CommandButton1_Click()
   Dim machinenum As Integer
 Dim mannum As Integer
 Dim worknum0 As Integer
 Dim worknum(100) As Integer
 Dim i As Integer
 'machinenum = TextBox1
 'mannum = TextBox2
 worknum0 = TextBox3
 For i = 0 To worknum0
   If i <> 0 Then
   worknum(i) = i
  worknum0 = worknum0 - 1
 End If
Next i

TextBox4.Visible = False
TextBox5.Visible = False
TextBox6.Visible = False
TextBox7.Visible = False
TextBox8.Visible = False

For i = 0 To UBound(worknum)
 If i <> 0 Then
textbox(3 + i).Visible = True
worknum0 = worknum0 - 1
End If
Next i

End Sub
ภาพหน้าต่าง Userform ครับ ตอนนี้ลองปรับให้การรับค่าข้อความและ จำนวนช่องให้ปรากฎใน Userform เดียวกันแล้วครับ
Untitled.png

Re: ต้องการให้สร้างTextboxอัตโนมัติตามจำนวนที่รับค่า

Posted: Fri Oct 25, 2019 9:13 pm
by snasui
:D กรุณาแนบไฟล์ล่าสุดมาด้วยจะได้ช่วยทดสอบให้ได้ครับ