'设置文本框和列表框的大小及位置
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim b As Boolean, arr
If Target.Column <> 1 Or Target.Row < 2 Then b = True '如果用户选择的单元格不是第1列或者属于第1行
If Target.Columns.Count > 1 Or Target.Rows.Count > 1 Then b = True '如果用户选择的单元格数量大于1
If b Then
False '不可见 =
False '不可见 =
Exit Sub '退出程序
End If
With Worksheets("示例") '下拉列表来源内容的所在工作表
arr = .Range("d2:d" & .Cells(Rows.Count, "d").End(3).Row) '数据源
End With
With TextBox1
"" =
True '可见 =
Target.Top '文本框顶部位置 =
Target.Left '文本框左侧位置 =
Target.Height '文本框高度 =
Target.Width '文本框宽度 =
'激活文本框
End With
With ListBox1
True '可 =
Target.Offset(0, 1).Top =
Target.Offset(0, 1).Left =
Target.Height * 5 =
Target.Width =
arr '写入数据源数据 =
End With
End Sub
'根据文本框的输入值动态匹配数据
Private Sub TextBox1_Change()
Dim arr, brr, i&, k&
With Worksheets("示例") '下拉列表来源内容的所在工作表
arr = .Range("d2:d" & .Cells(Rows.Count, "d").End(3).Row) '数据源
End With
If TextBox1.Text = "" Then ListBox1.List = arr: Exit Sub
ReDim brr(1 To UBound(arr))
For i = 1 To UBound(arr)
If InStr(1, arr(i, 1), TextBox1.Text, vbTextCompare) Then '忽略字母大小写
k = k + 1
arr(i, 1) =
End If
Next
brr '写入匹配后的数据 =
End Sub
'如果双击列表框的内容则写入活动单元格
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
ActiveCell = ListBox1.Text
With ListBox1
'清空列表框
False =
End With
With TextBox1
"" =
False =
End With
End Sub
With Worksheets("示例") '下拉列表来源内容的所在工作表
arr = .Range("d2:d" & .Cells(Rows.Count, "d").End(3).Row) '数据源
End With
⏩需要系统学习Excel,却找不到优质教程?学习Excel的过程中遇到疑难问题,却找不到人及时作出解答?
加入我的付费社群,学习+训练+答疑,与6000+在线会员一起,同微软最有价值专家MVP同行,全面精进Excel之道
🚂>>~
加入我的付费会员,全面学习Excel
透视表 函数 图表 VBA PQ想学啥学啥
👀
本文由公众号“Excel星球”首发。
点击阅读原文系统学习Excel!