Ich arbeite in VBA - Excel 2016‚Range von Objekt‘ _Worksheet fehlgeschlagen - Userform
Ich versuche, eine Eingabe von einem Userform aus einem Blatt, finden die nächste leere Zeile auf einem anderen Blatt und Einsatz genannt zu nehmen der Wert. Ich bekomme jedoch immer einen Laufzeitfehler - 'Objektbereich' _Worksheet Failed. Die Form wird von einer anderen Form aus aufgerufen.
Ich habe verschiedene Lösungen ausprobiert, aber nichts scheint zu funktionieren.
Ich verwende fast den gleichen Code woanders, der funktioniert, wenn das Formular aufgerufen wird und der Wert auf dem gleichen Blatt eingefügt wird, so haben Sie geschlossen, dass es auf das andere Blatt zugreifen muss.
versagt es in dieser Zeile:
ActiveWorkbook.Worksheets("Suppliers").Range("A" & NextRow) = SupplierName
Der Code ich benutze ist unten.
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
Vielen Dank im Voraus!
Hallo, danke für die Antwort. Ich habe überprüft, dass 'NextRow' positiv ist und dass' Lieferanten' zusammen mit führenden/nachgestellten Leerzeichen existiert. Ich habe jetzt diesen Laufzeitfehler "Methode 'Value2' des Objekts 'Bereich' fehlgeschlagen". Der Wert wird am Ende der Tabelle hinzugefügt, aber nicht sortiert, da der Laufzeitfehler den Rest des Codes daran hindert, ausgeführt zu werden. –
Ich habe '' Value2' 'aus Ihrem Kommentar hinzugefügt, wo Sie 'ThisWorkbook.Worksheets (" Suppliers ") vorgeschlagen haben. Range (" A "& NextRow) .Value2 = SupplierName'. Der Code schlägt in dieser Zeile fehl. –
'addSupplierName.Value' gibt den gleichen Wert wie in der Eingabe zurück. Sieht so aus, als müsste ich vielleicht eine andere Lösung finden, danke für deine Hilfe. –