Excel VBA 窗体组合框用法?
ExcelVBA窗体组合框,如果选中下拉菜单的某一项,再点击确定按钮,就运行另一个窗体(图片上忘记添加确定按钮图标了)。请问该如何写这个VBA语言?谢谢......
Excel VBA 窗体组合框,如果选中下拉菜单的某一项,再点击确定按钮,就运行另一个窗体(图片上忘记添加确定按钮图标了)。请问该如何写这个VBA语言?谢谢...
展开
1个回答
展开全部
第一种使用AddItem,代码:
Private Sub UserForm_Initialize()
ComboBox1.AddItem "A"
ComboBox1.AddItem "B"
ComboBox1.AddItem "C"
End Sub
上面的代码一次向组合框中添加一个项目,共添加了三条项目。
第二种方法使用数组,代码:
Private Sub UserForm_Initialize()
ComboBox1.List = Array("A", "B", "C")
End Sub
事先将要添加的项目放到一个数组中,然后使用组合框的List属性。
第三种方法使用工作表区域,事先将要添加的项目放到工作表中,例如F1到F3分别写入A、B、C,然后运行下面的代码:
Private Sub UserForm_Initialize()
ComboBox1.RowSource = "Sheet1!F1:F3"
End Sub
上面的代码用的是ComboBox的RowSource属性,值是相应的单元格区域。
下面再来看怎样向组合框中加入多列项目,这里只介绍RowSource方法,仍旧是事先将我们要加入的项目放到工作表的相应区域,然后执行下面的代码:
Private Sub UserForm_Initialize()
ComboBox1.RowSource = "Sheet1!A2:C4"
ComboBox1.ColumnCount = 3 '设置显示的列数
ComboBox1.ColumnHeads = True '是否包括头部
ComboBox1.TextColumn = 2'设置显示值的列号
ComboBox1.BoundColumn = 3'设置默认值的列号
End Sub
Sheet1的A2:C4是我们的数据区域,ColumnCount属性表示要显示几列,这里设置成3列,ColumnHeads表示是否包括头部,True代表包括头部(注意这里A2:C4的范围并没有把头部包括进去),可以自己看下效果。我们这里有3列,但是组合框中只能显示一个值,那显示哪个值呢?用TextColumn属性来表示,2表示在组合框中显示的是第2列的值,例如你选择的是第一行数据,那在组合框中显示的值就是12。组合框ComboBox还有一个Value属性,同样的,如果是多列Value到底是指哪一列的值呢?这个就得用到BoundColumn属性了,3就表示ComboBox1.value就是第三列的值。那问题又来了,如果我们想要调用第一列或第二列的值怎么办?有办法,看下面的代码:
Private Sub CommandButton2_Click()
MsgBox ComboBox1.List(ComboBox1.ListIndex, 0)
End Sub
ComboBox1.List(ComboBox1.ListIndex, 0)就表示第1列的值,将0换成1就表示第2列的值,换成2就表示第3列的值,看出来了吧,列标是从0开始而不是从1开始的。
Private Sub UserForm_Initialize()
ComboBox1.AddItem "A"
ComboBox1.AddItem "B"
ComboBox1.AddItem "C"
End Sub
上面的代码一次向组合框中添加一个项目,共添加了三条项目。
第二种方法使用数组,代码:
Private Sub UserForm_Initialize()
ComboBox1.List = Array("A", "B", "C")
End Sub
事先将要添加的项目放到一个数组中,然后使用组合框的List属性。
第三种方法使用工作表区域,事先将要添加的项目放到工作表中,例如F1到F3分别写入A、B、C,然后运行下面的代码:
Private Sub UserForm_Initialize()
ComboBox1.RowSource = "Sheet1!F1:F3"
End Sub
上面的代码用的是ComboBox的RowSource属性,值是相应的单元格区域。
下面再来看怎样向组合框中加入多列项目,这里只介绍RowSource方法,仍旧是事先将我们要加入的项目放到工作表的相应区域,然后执行下面的代码:
Private Sub UserForm_Initialize()
ComboBox1.RowSource = "Sheet1!A2:C4"
ComboBox1.ColumnCount = 3 '设置显示的列数
ComboBox1.ColumnHeads = True '是否包括头部
ComboBox1.TextColumn = 2'设置显示值的列号
ComboBox1.BoundColumn = 3'设置默认值的列号
End Sub
Sheet1的A2:C4是我们的数据区域,ColumnCount属性表示要显示几列,这里设置成3列,ColumnHeads表示是否包括头部,True代表包括头部(注意这里A2:C4的范围并没有把头部包括进去),可以自己看下效果。我们这里有3列,但是组合框中只能显示一个值,那显示哪个值呢?用TextColumn属性来表示,2表示在组合框中显示的是第2列的值,例如你选择的是第一行数据,那在组合框中显示的值就是12。组合框ComboBox还有一个Value属性,同样的,如果是多列Value到底是指哪一列的值呢?这个就得用到BoundColumn属性了,3就表示ComboBox1.value就是第三列的值。那问题又来了,如果我们想要调用第一列或第二列的值怎么办?有办法,看下面的代码:
Private Sub CommandButton2_Click()
MsgBox ComboBox1.List(ComboBox1.ListIndex, 0)
End Sub
ComboBox1.List(ComboBox1.ListIndex, 0)就表示第1列的值,将0换成1就表示第2列的值,换成2就表示第3列的值,看出来了吧,列标是从0开始而不是从1开始的。
追问
您好,您说的非常细致,条理清晰,非常感谢!您肯定是非常懂这个,才能如此表达。
还有个问题,如果在组合框中选择A,点击按钮1后,显示窗口6;选择B并点击按钮1后,显示窗口7;选择C并点击按钮1后,显示窗口8。这个该如何写写程序?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询