Try this
Dim Ctrl As Control
Dim CtrlNum As Long
For Each Ctrl In Me.Controls
If Ctrl.Name Like "txtMember##" Then
CtrlNum = CLng(Right$(Ctrl.Name, 2))
Ctrl.Visible = txtNoMember.Value >= CtrlNum
End If
Next
سؤال
The user will enter the number of members first. If the user enter 1 member then only 1 textbox will appear for the user to enter. If the user enter 10 member then all 10 textbox will appear. It works for If Else but it is tedious for me to do it 10 times. I don't know how do I change it from If Else to For Loop
'Using If Else
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Select Case txtNoMember.Value
Case Is = 1
txtMember01.Visible = True
txtMember02.Visible = False
txtMember03.Visible = False
txtMember04.Visible = False
txtMember05.Visible = False
txtMember06.Visible = False
txtMember07.Visible = False
txtMember08.Visible = False
txtMember09.Visible = False
txtMember10.Visible = False
Case Is = 2
txtMember01.Visible = True
txtMember02.Visible = True
txtMember03.Visible = False
txtMember04.Visible = False
txtMember05.Visible = False
txtMember06.Visible = False
txtMember07.Visible = False
txtMember08.Visible = False
txtMember09.Visible = False
txtMember10.Visible = False
Case Is = 3
txtMember01.Visible = True
txtMember02.Visible = True
txtMember03.Visible = True
txtMember04.Visible = False
txtMember05.Visible = False
txtMember06.Visible = False
txtMember07.Visible = False
txtMember08.Visible = False
txtMember09.Visible = False
txtMember10.Visible = False
Exit Sub
End Select
End Sub
'Using Loop
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim rStartAS As Long
Dim rEndAS As Long
rEndAS = CLng(txtNoMember.Value)
For rStartAS = 1 To rEndAS
Controls("txtMember" & Format(rStartAS, "00")).Visible = True
Next
End Sub
المحلول
Try this
Dim Ctrl As Control
Dim CtrlNum As Long
For Each Ctrl In Me.Controls
If Ctrl.Name Like "txtMember##" Then
CtrlNum = CLng(Right$(Ctrl.Name, 2))
Ctrl.Visible = txtNoMember.Value >= CtrlNum
End If
Next