我想要的是从组合框中选择一个名称,然后来自该名称所在行的信息
案例-B
看起来您想从列和行名称旁边的列中检索信息。如果名称在单元格 B4 中,那么您希望 textbox1 的值是单元格 C4 的值,textbox2 的值是单元格 D4,依此类推。
案例A的代码:
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
像这样命名您的文本框:TextBox1、TextBox2、TextBox3 等等。
根据您拥有的文本框数量更改代码中的循环次数。