我有一个包含3列(lbxStN
)的列表框(0-fmMultiSelectSingle
)
我想在此列表中进行选择(仅一个),并使列表中每列中的数据显示在特定工作表中的特定单元格中(工作表:DeN
)。列表F19
,第二列C22
和第三列H22
中的第一列。单击按钮(cmdBtnSelect2
)后
列表框的数据存储在同一工作簿中的不同工作表中。
Private Sub cmdBtnSelect2_Click()
Dim i As Long
Dim myVar4 As String
Dim myVar5 As String
Dim myVar6 As String
For i = 0 To lbxStN.ListCount - 1
If lbxStN.Selected(i) = True Then
lbxStN.List(i, 0).Value = myVar4
lbxStN.List(i, 1).Value = myVar5
lbxStN.List(i, 2).Value = myVar6
End If
Next
ThisWorkbook.Sheets("DeN").Range("F19") = myVar4
ThisWorkbook.Sheets("DeN").Range("C22") = myVar5
ThisWorkbook.Sheets("DeN").Range("H22") = myVar6
End Sub
如果我运行代码,则会出现'424' Object required
错误
这意味着我错过了一些基本的东西。
答案 0 :(得分:0)
对于您打算执行的操作,无需创建新变量。可以将所选项目的值直接分配给单元格。如下
Private Sub cmdBtnSelect2_Click()
Dim i as Integer
For i = 0 To lbxStN.ListCount - 1
If lbxStN.Selected(i) Then
ThisWorkbook.Sheets("DeN").Range("F19") = lbxStN.List(i, 0)
ThisWorkbook.Sheets("DeN").Range("C22") = lbxStN.List(i, 1)
ThisWorkbook.Sheets("DeN").Range("H22") = lbxStN.List(i, 2)
Exit For
End If
Next i
End Sub
前一个子例程迭代列表中的每个iteam,并检查项是否被选中。如果选择了该项,则会将每列分配给每个单元格。 Exit For
将退出迭代,因为无需继续查找更多选定项目。
我使用以下子例程测试代码以将项添加到列表中。我认为如果您尝试进行复杂的分配,将它与您的进行比较是个好主意。
Private Sub CommandButton1_Click()
lbxStN.Clear
lbxStN.AddItem "a"
lbxStN.List(lbxStN.ListCount - 1, 1) = "a2"
lbxStN.List(lbxStN.ListCount - 1, 2) = "a3"
lbxStN.AddItem "b"
lbxStN.List(lbxStN.ListCount - 1, 1) = "b2"
lbxStN.List(lbxStN.ListCount - 1, 2) = "b3"
lbxStN.AddItem "c"
lbxStN.List(lbxStN.ListCount - 1, 1) = "c2"
lbxStN.List(lbxStN.ListCount - 1, 2) = "c3"
End Sub
我通常会通过阅读别人的代码并尝试理解它来改善编码
干杯!