Excel 单击列表框中的某个项目时填充文本框数据
我有一个列表框(例如:数据来自属性菜单中的rowsource的Excel 单击列表框中的某个项目时填充文本框数据,excel,vba,listbox,Excel,Vba,Listbox,我有一个列表框(例如:数据来自属性菜单中的rowsource的A4:A100) 如果有人单击列表框(单元格A4)中的顶部项目,那么在文本框中,我想显示它旁边单元格中的任何内容(单元格B4),在下一个文本框中,我想显示单元格C4中的任何内容,等等 这对我来说是新的,所以请简单地使用您的术语-到目前为止,我有: Private Sub ListBox1_AfterUpdate() Me.TextBox1.Value = Application.WorksheetFunction.VLookup(Li
A4:A100
)
如果有人单击列表框(单元格A4
)中的顶部项目,那么在文本框中,我想显示它旁边单元格中的任何内容(单元格B4)
,在下一个文本框中,我想显示单元格C4
中的任何内容,等等
这对我来说是新的,所以请简单地使用您的术语-到目前为止,我有:
Private Sub ListBox1_AfterUpdate()
Me.TextBox1.Value = Application.WorksheetFunction.VLookup(ListBox1.Value, Range("A1:B1"), 4, False)
End Sub
我哪里做错了
使用以下方法:
Private Sub ListBox1_AfterUpdate()
Me.TextBox1.Value = Application.WorksheetFunction.VLookup(Me.ListBox1.Value, Sheets("the_sheet_name").Range("A1:D100"), 2, False)
Me.TextBox2.Value = Application.WorksheetFunction.VLookup(Me.ListBox1.Value, Sheets("the_sheet_name").Range("A1:D100"), 3, False)
Me.TextBox3.Value = Application.WorksheetFunction.VLookup(Me.ListBox1.Value, Sheets("the_sheet_name").Range("A1:D100"), 4, False)
End Sub
如果您使用范围名称
会更好,因为您可以在工作簿中“全局”使用它,然后您可以不使用工作表名称
部分
Private Sub ListBox1_AfterUpdate()
Me.TextBox1.Value = Application.WorksheetFunction.VLookup(Me.ListBox1.Value, Range("myRange"), 2, False)
Me.TextBox2.Value = Application.WorksheetFunction.VLookup(Me.ListBox1.Value, Range("myRange"), 3, False)
Me.TextBox3.Value = Application.WorksheetFunction.VLookup(Me.ListBox1.Value, Range("myRange"), 4, False)
End Sub
其中,Range(“myRange”)
是工作表(“工作表名称”)
中的名称范围,范围为范围(“A1:D100”)
您可以在更新后的子runtineListBox1\u中使用代码Me.Textbox1.value=…
,或单击ListBox1\u更改
嗯,当你使用VlookUp
时,你会说:
VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
VloopUp先生,在该单元格/列中查找该值,并在列编号#中返回该值,数据未排序=False |排序=True
如果在列K
中取范围(“K1:N100”)
,您不知道在哪一行中有您要查找的值,这就是为什么要使用VlookUp
,并且您说,返回列1或2或3或4(K
-N
),如果需要列O
中的值,则需要将范围设置为范围(“K1:O100”)
,并要求返回列5,因为,不是表中的列数,而是所选范围内的列数
有关详细信息,请参阅此
编辑#2
正如您在注释中所要求的,格式化从VlookUp
返回的值的方法是使用format
a = Format(Application.WorksheetFunction.VLookup(Me.ListBox1.Value, Range("myRange"), 2, False), "dd-mmm-yyyy")
其中:
a
:是一个可以存储的变量,可以是字符串
或变量
类型
格式
:是执行操作的函数
“dd-mmm-yyyy”
:是您想要的日期格式。可以是你需要的。例:
mmmm >>> January
yyyy >>> 2016
dd >>> 02
d >>> 2
dddd >>> Monday
mmm >>> Jan
mm >>> 01
m >>> 1
祝你玩得开心
在这里,您可以了解更多信息。您可以避免偷看
Private Sub ListBox1_AfterUpdate()
Dim ws As Worksheet
Dim iRow As Long
Set ws = ThisWorkbook.Worksheets("textbox")
With Me
iRow = Me.ListBox1.ListIndex + 4
.TextBox1.Value = ws.Cells(iRow, 2)
.TextBox2.Value = ws.Cells(iRow, 3)
.TextBox3.Value = ws.Cells(iRow, 4)
End With
End Sub
太棒了,真是太棒了,谢谢你!你能更详细地解释一下这个部分吗?因为我看不出它是如何工作的“范围(“A1:B100”),2,False”。如果我把它改为A1:C100,那么它将从C列搜索。难以置信!很高兴找到这个网站,发现你这么有帮助。谢谢,祝你在未来好运进一步提问,道歉-你给我的很好,但只是注意到日期以不同的格式显示-这是一个简单的修复,比如修改文本框的属性吗?我花了点时间把它放在正确的位置,但它起了作用!在过去的一个小时里,我学会了更多的与你交谈,这比我过去几天试图通过互联网获取的东西还要多。高度赞赏