用户将首先输入成员数。如果用户输入1个成员,则只显示1个文本框供用户输入。如果用户输入10个成员,则将显示所有10个文本框。它适用于If Else,但这对我来说是十分繁琐的。我不知道如何将它从If Else更改为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
答案 0 :(得分:0)
试试这个
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