此问题涉及另一个问题:Listbox populate with specifc rows
在这种情况下,列表框会动态填充工作表数据库的数据。
问题是: 如何在列表框中选择行(名称)并编辑其工作表的引用?我解释一下。我想到选择一个列表框的行,然后选择一个组合框的项目并点击一个按钮进行确认,这样组合框的项目就会填满工作表上的某个单元格。
这是用户形式
答案 0 :(得分:0)
您可以通过在userform代码窗格中添加以下代码:
Private Sub CommandButton1_Click()
Dim Data() As Variant '<--| use an array to store data to eventually fill destination worksheet cells
Dim destSht As Worksheet '<--| this will be set to the "destination" worksheet
Dim i As Long
With Me
With .ComboBox1 '<--| refer to combobox (change "ComboBox1" with your actual name)
If .ListIndex = -1 Then Exit Sub '<--| exit sub if no value selected
Set destSht = Worksheets(.value) '<--| set the "destination" worksheet to the one with the name selected in Combobox
End With
With .ListBox1 '<--| refer to listbox (change "ListBox1" with your actual name)
If .ListIndex = 0 Then Exit Sub '<--| exit sub if selected the listbox header row
ReDim Data(1 To 1, 1 To .ColumnCount) '<--resize data array to match listbox columns number
For i = 1 To .ColumnCount '<--| loop through listbox columns
Data(1, i) = .List(.ListIndex, i - 1) '<--| fill data array with selected row data (Listbox.List is zero-based)
Next i
End With
With destSht '<--| refer to "destination" sheet
.Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(, 5).value = Data '<--| paste listbox selected row values to selected worksheet after its column "A" last non blank cell
End With
End With
End Sub
你应该添加&#34;目的地&#34;的最小处理。工作表设置,以防止无效的名称处理
答案 1 :(得分:0)
我尽我所能。不是很优雅。 sheet2和listbox上的第一列是一个连续的数字,因此当单击listbox行时,我将该数字复制到sheet3中,这样我就能识别sheet2上的行。
Private Sub asignar_Click()
Dim z As Integer
z = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To z
If Cells(i, 1) = Sheets("Hoja3").Range("A1") Then
Sheets("Hoja2").Cells(i, 21) = destinos.Value
Sheets("Hoja2").Cells(i, 20) = ""
End If
Next i
然后在sheet2上的sheet3上搜索匹配的内容。
\let\Subsectionmark\subsectionmark
\def\subsectionmark#1{\def\Subsectionname{#1}\Subsectionmark{#1}}
有效。问题是我不能在此之后刷新列表框。
我很感谢您的兴趣user3598756。