Ich habe eine Excel 2010-Arbeitsmappe für finanzielle Datensätze. Auf einem Arbeitsblatt habe ich ein Menü. In diesem Menü wähle ich eine Schaltfläche mit einem angehängten Makro, die die Zellen verbirgt, aus denen das Menü besteht, und blendet ein Transaktions-Eingabeformular aus.Laufzeitfehler '91' bei Makroausführung
Diese Transaktionseingabe für enthält mehrere Werte, die hier keine Bedeutung haben. Nach Eingabe der Daten drücken Sie die entsprechend beschriftete Enter-Taste. Jetzt, als ich das Dokument schrieb, funktionierte dieser Knopf gut, ging es zum Datensatz Arbeitsblatt eingefügt eine leere Zeile in der richtigen Tabelle ging zurück zum Formular kopiert die Daten gingen zurück in die neue leere Zeile und fügte die Daten ein. Es trifft dann in der Datumsspalte die Sortierung vom neuesten zum ältesten, um sicherzustellen, dass die Einträge in der richtigen Reihenfolge sind. Schließlich geht es zurück zum Formular und löscht die Daten. Das hat gut funktioniert, bis ich beschloss, das Geschichtsblatt zu verstecken.
Als ich mich entschied, das Blatt auszublenden, nahm ich das Makro erneut auf, um das Blatt, das die Operationen vorformte, zu verstecken und das Blatt wieder zu verstecken. Jetzt, wenn ich das Makro ausführe, blendet es das Blatt aus. Es hängt dann mit einem "Laufzeitfehler '91' Objektvariable oder mit Blockvariable nicht gesetzt" Fehler. Das Makro wird nicht abgeschlossen und das Verlaufsblatt bleibt sichtbar und unverändert, während das Formular noch voll mit Daten ist.
Auswahl Debug in den angegebenen Optionen, wenn der Fehler zeigt erscheint dieses:
Sub transaction()
'
' transaction Macro
'
'
Sheets("Income").Select
Sheets("Transaction History").Visible = True
Selection.ListObject.ListRows.Add (1)
Sheets("Income").Select
Range("B6:G6").Select
Selection.Copy
Sheets("Transaction History").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Transaction History").ListObjects("Table9").Sort. _
SortFields.Clear
ActiveWorkbook.Worksheets("Transaction History").ListObjects("Table9").Sort. _
SortFields.Add Key:=Range("Table9[[#All],[Date]]"), SortOn:=xlSortOnValues _
, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Transaction History").ListObjects("Table9"). _
Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Sheets("Transaction History").Select
ActiveWindow.SelectedSheets.Visible = False
Range("B6:G6").Select
Selection.ClearContents
Rows("6:8").Select
Range("A8").Activate
Selection.EntireRow.Hidden = False
Range("B6").Select
ActiveCell.FormulaR1C1 = "=R[1]C"
Rows("7:7").Select
Selection.EntireRow.Hidden = True
Range("C6").Select
End Sub
Mit der Reihe
Selection.ListObject.ListRows.Add (1)
gelb hervorgehoben. Ich kenne keine VBA, daher Makros aufzeichnen nicht sie zu schreiben, und ich kann Köpfe oder Geschichten davon nicht machen.
Edit: Okay, ich habe firgured, wie die Tabelle verweisen:
Worksheets("Transaction History").ListObjects("thistory").ListRows.Add (1)
von dort also auf mich nur werde die ganze Sache neu zu schreiben, würde versuchen und tut es in VBA statt Nimm es auf. Google ist mein Freund. Danke für deine Hilfe. Jede Hilfe, die Sie weiter geben, wird sehr geschätzt.
Nur festgestellt, dass es tatsächlich hängt vor dem Einfügen der leeren Zeile. – SpeedCrazy
'.Select' ist die Hauptursache für Fehler :) Sie sollten die Operationen direkt ausführen. Nun zu 'Selection.ListObject.ListRows.Add (1)' Welches Blatt ist die 'Selection' in und was genau ist das' Selection'? –
Sorry für meine n00bishness hier, aber was genau meinst du "Direkt die Operationen vorfertigen"? Der Rest deines Kommentars ist für mich genauso verwirrend. Sorry – SpeedCrazy