- 帖子
- 231
- 主題
- 55
- 精華
- 0
- 積分
- 293
- 點名
- 0
- 作業系統
- winxp
- 軟體版本
- office2003
- 閱讀權限
- 20
- 性別
- 男
- 來自
- KEELUNG
- 註冊時間
- 2010-7-24
- 最後登錄
- 2018-8-28
|
[發問] 如何在multipage表單內將文字方塊類別進行輸入限制
各位大大好:
小弟對物件類別模組,
一直無法體會其含意。
現小弟想引用一範例並
稍做修改為multipage模式在其
page1及page2內各有五個
textbox文字方塊。
現利用類別模組來將文字方塊類別化
以進行輸入限制。
小弟發現在page1可達成其輸入限制,
但在page2的文字方塊卻不能逹其效果。
不知其原因為何呢?
以下語法如下:
表單→userform1
Private Sub UserForm_Initialize()
Select Case UserForm1.MultiPage1.Value
Case 0
Dim i As Long
ReDim myTb(1 To 5)
For i = 1 To 5
Set myTb(i) = New myTbClass
Set myTb(i).Tb = Me.Controls("TextBox" & CStr(i))
Next
myTb(1).ck = 1
myTb(2).ck = 2
myTb(3).ck = 3
myTb(4).ck = 2
myTb(5).ck = 1
Case 1
Dim j As Long
ReDim myTb(6 To 10)
For j = 6 To 10
Set myTb(j) = New myTbClass
Set myTb(j).Tb = Me.Controls("TextBox" & CStr(j))
Next
myTb(6).ck = 1
myTb(7).ck = 2
myTb(8).ck = 3
myTb(9).ck = 2
myTb(10).ck = 1
End Select
End Sub
module1
Sub ufshow()
UserForm1.Show vbModeless
End Sub
物件類別模組→myTbClass
Option Explicit
'類別模組myTbClass
Private WithEvents myTb As MSForms.TextBox
Private myCkType As Long
Public Property Set Tb(setTb As MSForms.TextBox)
Set myTb = setTb
End Property
Public Property Get Tb() As MSForms.TextBox
End Property
Public Property Let ck(setCk As Long)
myCkType = setCk
End Property
Public Property Get ck() As Long
End Property
Private Sub myTb_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case myCkType
Case 1
'拒絕數字以外的輸入
If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
KeyAscii = 0: Beep
End If
Case 2
'拒絕數字,"-"以外的輸入
If (KeyAscii >= Asc("0") And _
KeyAscii <= Asc("9")) Or KeyAscii = Asc("-") Then
Else
KeyAscii = 0: Beep
End If
Case 3
'拒絕數字,"英文大寫"以外的輸入
If (KeyAscii >= Asc("0") And KeyAscii <= Asc("9")) Or _
(KeyAscii >= Asc("A") And KeyAscii <= Asc("Z")) Then
Else
KeyAscii = 0: Beep
End If
End Select
End Sub
謝謝各位大大。 |
-
-
txtBox.rar
(13.24 KB)
|