我正在尝试从保存在路径“ C:\ Users \ se72497 \ Desktop”中的文件中添加项目,该文件包含在名为“ Departamentos”的工作表的第一列中,我想在组合框中添加一系列值。
我的组合框收到了部门名称。
Private Sub UserForm_Initialize()
Dim filename As Workbook
Set filename = Workbooks.Open("C:\Users\se72497\Desktop\Tablas_Macro.xlsx")
With filename.Sheets("Departamentos")
dept.List = Range("A2", .Range("A" & Rows.Count).End(xlUp).Value)
End With
End Sub
我尝试执行此代码,但它返回了运行时错误:
为什么vba向我返回此错误?
答案 0 :(得分:2)
.Value
放在错误的位置。 (或者您可以说括号放在错误的位置)。更正此问题,您可以:
.Range("A2", .Range("A" & Rows.Count).End(xlUp)).Value
在您当前的代码中,.Value
是在Range
调用内 ,因此您尝试使用单元格的 value ,而不是单元格本身作为第二个参数。
您想要它在外面。
否则,如果最后一个单元格的值为“ foo”,则您的代码等效于
Range("A2", "foo")
这当然不是您想要的。
答案 1 :(得分:-1)
因此,当您单击pn时,您的组合框数据将被加载,
'先决条件使用变量rstart命名单元格A2
Private Sub UserForm_Initialize()
Dim ws As Worksheet: Set ws = Worksheets("Departamentos")
Dim i As Integer: i = 0
Dim lRow As Long
Dim sAddress As String
On Error GoTo errhandling
If Me.nameofcombobox.Value = vbNullString Then
MsgBox "Select value to continue!"
Else
With ws
lRow = .Range("Departamentos").Rows.Count
'name the cell a2 as rstart
Do Until .Range("rStart").Offset(0, i).Value = Me.nameofcombobox.Value
i = i + 1
Loop
sAddress = .Range("rStart").Offset(0, i - 1).Address
.Range(sAddress & ":" & Left(sAddress, 4) & lRow).Value = .Range(sAddress & ":" & Left(sAddress, 4) & lRow).Value
End With
End If
On Error GoTo 0
MsgBox "Completed without errors", vbInformation, "Success"
FunctionOutput: 设置ws = Nothing
退出子
处理: MsgBox“发生以下错误:”&Err.Description,vbCritical,“错误” 恢复功能输出
End Sub