'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
...
...
...