'Range of Object' _Worksheet 失败 - 用户表单
'Range of Object' _Worksheet Failed - Userform
我在 VBA - Excel 2016
工作
我正在尝试从一个 sheet 调用的用户表单中获取输入,在另一个 sheet 上找到下一个空白行并插入该值。但是我不断收到运行时错误 - 'Range of Object' _Worksheet 失败。从另一个表单中调用该表单。
我尝试了各种解决方案,但似乎没有任何效果。
我在其他地方使用了几乎相同的代码,当调用表单并将值插入到相同的 sheet 时,它可以工作,因此得出结论,它必须访问另一个 sheet.
这条线失败了:
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
提前致谢!
当表单仍在显示时,您无法访问 sheet。在访问 sheet 之前,将 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
...
...
...
我在 VBA - Excel 2016
工作我正在尝试从一个 sheet 调用的用户表单中获取输入,在另一个 sheet 上找到下一个空白行并插入该值。但是我不断收到运行时错误 - 'Range of Object' _Worksheet 失败。从另一个表单中调用该表单。
我尝试了各种解决方案,但似乎没有任何效果。
我在其他地方使用了几乎相同的代码,当调用表单并将值插入到相同的 sheet 时,它可以工作,因此得出结论,它必须访问另一个 sheet.
这条线失败了:
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
提前致谢!
当表单仍在显示时,您无法访问 sheet。在访问 sheet 之前,将 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
...
...
...