用于编辑工作表的列表框选择

时间:2016-08-28 04:20:01

标签: vba listbox

此问题涉及另一个问题:Listbox populate with specifc rows

在这种情况下,列表框会动态填充工作表数据库的数据。

问题是: 如何在列表框中选择行(名称)并编辑其工作表的引用?我解释一下。我想到选择一个列表框的行,然后选择一个组合框的项目并点击一个按钮进行确认,这样组合框的项目就会填满工作表上的某个单元格。

这是用户形式

userform2

2 个答案:

答案 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。