Private Sub ComboBox1_Click()
Dim c As Range: Dim i
With ComboBox1
Set c = Range(.List(.ListIndex, 0))
End With
For i = 1 To 3
Controls("TextBox" & i).Value = c.Offset(i, 0)
Next
End Sub
Private Sub UserForm_Initialize()
Dim rg As Range: Dim cell As Range
With Sheets("Sheet1")
Set rg = .Range("A1", .Range("A1").End(xlToRight))
End With
With ComboBox1
.ColumnCount = 2
.ColumnWidths = "0,25"
End With
For Each cell In rg
With ComboBox1
.AddItem Replace(cell.Address, "$", "")
.List(.ListCount - 1, 1) = cell.Value
End With
Next
End Sub
案例B代码
Private Sub ComboBox1_Click()
Dim c As Range: Dim i
With ComboBox1
Set c = Range(.List(.ListIndex, 0))
End With
For i = 1 To 3
Controls("TextBox" & i).Value = c.Offset(0, i)
Next
End Sub
Private Sub UserForm_Initialize()
Dim rg As Range: Dim cell As Range
With Sheets("Sheet1")
Set rg = .Range("A2", .Range("A2").End(xlDown))
End With
With ComboBox1
.ColumnCount = 2
.ColumnWidths = "0,25"
End With
For Each cell In rg
With ComboBox1
.AddItem Replace(cell.Address, "$", "")
.List(.ListCount - 1, 1) = cell.Value
End With
Next
End Sub
1条答案
按热度按时间ljsrvy3e1#
我很难理解你想要什么。
(E.g.所选名称在B4中)textBox 1导入单元格B5中的信息,textBox 2导入单元格B6中的信息,依此类推
案例A
看起来您想从名称为...的单元格下的行中检索信息。
但从下面引用:
我想要的是从组合框中选择一个名称,并从名称为的行中选择信息
案例B
看起来你想从列名和行名旁边的列中检索信息。如果名称在单元格B4中,那么你想textbox 1的值是单元格C4的值,textbox 2的值是单元格D4,依此类推。
病例A代码:
案例B代码
将文本框命名为:TextBox 1、TextBox 2、TextBox 3等。根据文本框的数量更改代码中的循环数。
基本上该代码“偷偷地”做了一个两列的组合框,其中第一列包含的单元格地址是隐藏的(列宽为0)。
当组合框中的项目被选择时,使用来自所选择项目的组合框隐藏列的地址,它用该值填充每个文本框。
请注意,使用这种代码,您不能跳过要在文本框中显示的列/行值。示例案例A:选定单元格A1中的名称时,您希望TextBox 1显示单元格A2的值,TextBox 2显示单元格A4的值。选定单元格A2中的名称时,您希望TextBox 1显示单元格B2的值,TextBox 2显示单元格D2的值。