我在VBA工作 - Excel 2016
我正在尝试从一个工作表调用的用户窗体中获取输入,找到另一个工作表上的下一个空行并插入该值。但是我不断收到运行时错误 - “对象范围”_Worksheet失败。表格是从另一种形式中调用的。
我尝试了各种解决方案,但似乎没有任何效果。
我在其他地方使用几乎相同的代码,当调用表单并将值插入同一张表时,该代码有效,因此得出结论,必须将其放在访问另一张表中。
这条线失败了:
ActiveWorkbook.Worksheets("Suppliers").Range("A" & NextRow) = SupplierName
我正在使用的代码如下。
Private Sub addSupplierConfirm_Click()
'Initialise variables
Dim SupplierName As String
'Assign variables
SupplierName = addSupplierName.Value
If (SupplierName = "") Then
MsgBox ("Please enter a supplier name")
Exit Sub
End If
'Find next row on supplier sheet add supplier name
NextRow = ActiveWorkbook.Worksheets("Suppliers").Range("A" & Rows.Count).End(xlUp).Row + 1
ActiveWorkbook.Worksheets("Suppliers").Range("A" & NextRow) = SupplierName
Application.ScreenUpdating = False
'Sort Suppliers
ActiveWorkbook.Worksheets("Suppliers").ListObjects("tbl_suppliers").Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Suppliers").ListObjects("tbl_suppliers").Sort.SortFields. _
Add Key:=Range("tbl_suppliers[[#All],[Suppliers]]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Suppliers").ListObjects("tbl_suppliers").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Activate home page
Sheets("Expenses").Activate
Range("A1").Select
Application.ScreenUpdating = True
'Unload form
addSupplierName.Value = ""
UfAddSupplier.Hide
End Sub
提前致谢!
答案 0 :(得分:0)
在表单仍在显示时,您无法访问工作表。在访问工作表之前,UfAddSupplier.Hide
再次向sub
移动Private Sub addSupplierConfirm_Click()
'Initialise variables
Dim SupplierName As String
'Assign variables
SupplierName = addSupplierName.Value
If (SupplierName = "") Then
MsgBox ("Please enter a supplier name")
Exit Sub
End If
UfAddSupplier.Hide
'Find next row on supplier sheet add supplier name
NextRow = ActiveWorkbook.Worksheets("Suppliers").Range("A" & Rows.Count).End(xlUp).Row + 1
ActiveWorkbook.Worksheets("Suppliers").Range("A" & NextRow) = SupplierName
...
...
...
,一切都应按预期工作:
{{1}}