สอบถามเรื่อง VBA ครับ : ต้องการให้ช่อง textbox หลายช่องกรอกได้แต่ตัวเลข และไม่เกินจำนวนหลักที่กำหนดครับ
Posted: Sun Mar 06, 2022 8:50 pm
คือพอดีจะทำแบบเก็บข้อมูล เลยใช้ VBA ใน excel ทำครับ
ใช้ textbox เป็นช่องกรอกข้อมูล
ทีนี้คือ อยากให้ textbox (หลายช่องแต่ไม่ทั้งหมด)
- กรอกได้แต่ตัวเลข
- ไม่เกิน 8 หลักครับ
ตอนแรกศึกษามาจาก web : https://www.mrexcel.com/board/threads/v ... s.1121449/
เลยลอง code เป็นแบบนี้ครับ
ในส่วนของ class module : กำหนดชื่อเป็น textbox class
-------
ในส่วนของ Userform : กำหนดชื่อเป็น newCRF
-------
-------
ทีนี้ผมลองกำหนดช่อง textbox ที่ต้องการเป็นชื่อ TextBoxCRFQuantity1 อีกช่องเป็น TextBoxHNQuantity1
ปรากฏว่า runcode ผ่านครับ แต่ช่องที่กำหนดยังสามารถ key ตัวอักษรหรือ KeyAscii อื่นๆได้ เลยมาขอคำปรึกษา
หรือถ้าท่านใดมีวิถีที่ง่ายๆแนะนำบอกได้เลยนะครับ แต่ถ้าเป็นไปได้ขอวิถีที่ไม่ต้องกำหนดทีละ textbox หน่อยนะครับ คือมันมีเป็น 30+ น่าจะ code น่าจะยาวมากๆเลยครับ
ใช้ textbox เป็นช่องกรอกข้อมูล
ทีนี้คือ อยากให้ textbox (หลายช่องแต่ไม่ทั้งหมด)
- กรอกได้แต่ตัวเลข
- ไม่เกิน 8 หลักครับ
ตอนแรกศึกษามาจาก web : https://www.mrexcel.com/board/threads/v ... s.1121449/
เลยลอง code เป็นแบบนี้ครับ
ในส่วนของ class module : กำหนดชื่อเป็น textbox class
-------
Code: Select all
Public WithEvents TextBoxClass As MSForms.TextBox
Private Sub TextBoxClass_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
'valid entries [0-9]
Case 48 To 57
Case Else
'cancel
KeyAscii = 0
End Select
End Sub
-------
Code: Select all
Private Sub UserForm_Activate()
Dim TextBox() As New TextBoxClass
Dim i As Integer
Dim c As Control
For Each c In newCRF.Controls
If TypeName(c) = "TextBox" Then
If c.Name Like "*Quantity*" Then
i = i + 1
ReDim Preserve TextBox(1 To i)
Set TextBox(i).TextBoxClass = c
c.ControlTipText = c.Name & " - Enter Numeric Value Only"
End If
End If
Next c
End Sub
ทีนี้ผมลองกำหนดช่อง textbox ที่ต้องการเป็นชื่อ TextBoxCRFQuantity1 อีกช่องเป็น TextBoxHNQuantity1
ปรากฏว่า runcode ผ่านครับ แต่ช่องที่กำหนดยังสามารถ key ตัวอักษรหรือ KeyAscii อื่นๆได้ เลยมาขอคำปรึกษา
หรือถ้าท่านใดมีวิถีที่ง่ายๆแนะนำบอกได้เลยนะครับ แต่ถ้าเป็นไปได้ขอวิถีที่ไม่ต้องกำหนดทีละ textbox หน่อยนะครับ คือมันมีเป็น 30+ น่าจะ code น่าจะยาวมากๆเลยครับ