Vba 循环遍历控件名称并隐藏帧中包含正确编号的所有控件
我要做的是在Word用户窗体上,如果我在组合框(cb_CountCohromes)(选项为1-10)中选择一个数字,那么任何包含该数字+1的控件(选项按钮或文本框)(因此,如果我选择5,则具有6-10的控件)都将不可见 话虽如此,我确实让它发挥了作用,但我知道它没有效率。Vba 循环遍历控件名称并隐藏帧中包含正确编号的所有控件,vba,ms-word,Vba,Ms Word,我要做的是在Word用户窗体上,如果我在组合框(cb_CountCohromes)(选项为1-10)中选择一个数字,那么任何包含该数字+1的控件(选项按钮或文本框)(因此,如果我选择5,则具有6-10的控件)都将不可见 话虽如此,我确实让它发挥了作用,但我知道它没有效率。 下面是开始,但我意识到,对于每种情况,必须再看到10组下面的内容乘以10个不同的If语句。有没有一种方法可以说If cb_Countcohrts=“1”找到此框架中不包含队列1的所有控件并将其隐藏…If cb_CountCoh
下面是开始,但我意识到,对于每种情况,必须再看到10组下面的内容乘以10个不同的If语句。有没有一种方法可以说If cb_Countcohrts=“1”找到此框架中不包含队列1的所有控件并将其隐藏…If cb_CountCohrots=“5”然后隐藏包含队列6、7、8、9、10的所有内容?提前感谢您的帮助
Private Sub cb_CountCohorts_Change()
If cb_CountCohorts = "1" Then
txt_cohort1.Visible = True
txt_cohort2.Visible = False
txt_cohort3.Visible = False
txt_cohort4.Visible = False
txt_cohort5.Visible = False
txt_cohort6.Visible = False
txt_cohort7.Visible = False
txt_cohort8.Visible = False
txt_cohort9.Visible = False
txt_cohort10.Visible = False
我也试过了,但似乎也没有达到我想要的效果
Private Sub cb_CountCohorts_Change()
For i = 2 To 10
Set VarText = frm_master.Controls("txt_cohort" & i)
If cb_CountCohorts.Value > VarText.Value Then
VarText.Visible = False
End If
Next i
End Sub
未经测试,但这应该有效:
Dim c As Control
For Each c In Me.Controls
If InStr(TypeName(c),"cohort") Then
c.Visible = False
End If
Next
大概是这样的:
Private Sub cb_CountCohorts_Change()
Dim v As Long, i As Long
v = CLng(cb_CountCohorts.Value)
For i = 2 To 10
Me.Controls("txt_cohort" & i).Visible = (i <= v)
'any other controls here....
Next i
End Sub
Private Sub cb\u countcourts\u Change()
暗v一样长,我一样长
v=CLng(cb_CountCohromes.值)
对于i=2到10
控件(“txt_队列”&i).Visible=(我知道我在其他地方看到了这个…(谢谢!)我想我还是个新手,我不知道如何把它串起来,因为我会为cb_CountCoquest做一个if语句,看看它是否等于一个数字1-10,然后再做一个Instr,看看它是否包含一个关键字/数字在字符串中,然后就不得不隐藏高于该数字的所有内容。我想得太多了吗?有什么方法可以做到这一点吗e如果txt_队列是名称的一部分,它将隐藏控件…例如,我有一个txt_队列1文本框和一个txt_队列1_付费1…有没有一种方法可以用一行隐藏两者?
Private Sub cb_CountCohorts_Change()
Dim v As Long, c, i As Long, arr
v = CLng(cb_CountCohorts.Value)
For Each c In Me.Controls
If c.Name Like "txt_cohort#*" Then
arr = Split(c.Name, "_")
i = CLng(Replace(arr(1), "txt_cohort", ""))
c.Visible = (i <= v)
End If
Next c
End Sub