vba-列表框和组合框

Private Sub ComboBox1_Change()
If Me.ComboBox1.ListIndex <> -1 Then
    Me.TextBox1.Value = Me.ComboBox1.Value  '(BoundColumn )
    Me.TextBox2.Value = Me.ComboBox1.List(Me.ComboBox1.ListIndex, 1) '这里表示 的是当前选中行的第二列,因为列是从0 开始的
End If
End Sub

Private Sub ComboBox1_Enter()
Me.ComboBox1.DropDown '进入的时候,自动显示下拉列表
Me.ComboBox1.ListRows = 2 '设置显示的行数,超过的要拉下拉列表显示
End Sub

Private Sub ComboBox2_Change()
'第一种,直接添加
Me.ComboBox2.AddItem "a"
Me.ComboBox2.AddItem "b"
Me.ComboBox2.AddItem "c"

'第二种 使用常量数组
Me.ComboBox2.List = Array("A", "B")

'第三种 使用vba数组添加
Dim arr(1 To 5)
arr = Range("g2:g4")
Me.ComboBox2.List = arr

'第四种 直接和单元格链接
Me.ComboBox2.RowSource = "sheet1!g2:g4"

'删除
Me.ComboBox2.RemoveItem 1 '删除指定行
Me.ComboBox2.RemoveItem Me.ComboBox2.ListIndex '删除当前行

'提取多列内容
'list(行,列),行,列都是从0开始的

'是否可以输入列表以外的数据
Me.ComboBox2.MatchRequired = True '表示 必须 输入组合框中的内容
End Sub

Private Sub CommandButton1_Click()
Dim arr
arr = Range("g2:h6")
Me.ComboBox1.List = arr
Me.ComboBox1.TextColumn = 2 '组合框中显示哪一列的值,只作显示值
Me.ComboBox1.ColumnCount = 2 '显示多少列内容,此时为显示两列
Me.ComboBox1.BoundColumn = 1 '返回指定列的值,比如后面取value时就取这个
Me.ComboBox1.ColumnWidths = "1厘米;2厘米;3厘米;" '长,宽,高,直接写,用分号隔开
End Sub
'Me.ComboBox1.DropButtonStyle = fmDropButtonStyleEllipsis 设置显示方式


Private Sub ListBox1_Click()
Me.ListBox1.ListStyle '设置样式,一般是有无多选框
If Me.ListBox1.Selected(X) = True Then '可以用来判定x行是否被选中
Me.ListBox1.ListCount '列表框的条目个数
Me.ListBox1.MultiSelect = fmMultiSelectExtended '为0时,只能选一个,为1时,用鼠标多选或取消选择,为2时,需要要按shift 或ctrl 才能多选
End Sub

Private Sub UserForm_Click()
Me.ListBox1.ColumnCount = 2
Me.ListBox1.TextColumn = 2
Me.ListBox1.BoundColumn = 2
Me.ListBox1.RowSource = "Sheet1!g2:h6" '直接从工作表中导入数据
Me.ListBox1.ColumnHeads = True '是否显示列标题,只有从工作表中导入数据源时,而且数据源必须 不包括标题行才有用
End Sub



posted on 2021-05-23 20:12  松梅  阅读(2856)  评论(0编辑  收藏  举报

导航