2017-05-23 1 views
0

Ich habe ein Arbeitsblatt namens BASE_GERAL_FUNCIONARIOS mit fünf Spalten mit Informationen, die ich mit einem Formular ausfüllen möchte, die ich mit diesem Code unten erstellt habe. Ich kann alle Informationen geben und ich diesen Code mit der Schaltfläche „Einfügen“ zugeordnet:Excel: Laufzeitfehler 9 beim Ausführen von Formular

Private Sub inserirInfo_Click() 
Dim LastRow As Range 
Dim ExpenseTable As ListObject 

'Add row to bottom of BASE_GERAL_FUNCIONARIOS table 

Worksheets("BASE_GERAL_FUNCIONARIOS").Activate.ListObjects("BASE_GERAL_FUNCIONARIOS").ListRows.Add 


'Enter data from form into our new row 
Set ExpenseTable = Worksheets("BASE_GERAL_FUNCIONARIOS").Activate.ListObjects("BASE_GERAL_FUNCIONARIOS") 
Set LastRow = ExpenseTable.ListRows(ExpenseTable.ListRows.Count).Range 

With LastRow 

    .Cells(1, 1) = cmbMatricula.Value 
    .Cells(1, 2) = cmbNome.Value 
    .Cells(1, 3) = cmbFuncao.Value 
    .Cells(1, 4) = txtAlocacao.Value 
    .Cells(1, 5) = txtDataIni.Value 
    .Cells(1, 6) = txtDataFim.Value 


End With 
End Sub 

Meine Form in einem anderen Blatt platziert ist als das Blatt I mit Informationen füllen werde. Wie auch immer, wenn ich den Code ausführen ich Laufzeitfehler 9 halte, die diesen Teil des Codes hervorhebt.

Worksheets("BASE_GERAL_FUNCIONARIOS").Activate.ListObjects("BASE_GERAL_FUNCIONARIOS").ListRows.Add 

ich die Verwendung von „ActivateSheet“ dachte statt Worksheets („“) aktiviert, aber Ich weiß wirklich nicht, wie ich dieses Problem lösen soll. Jeder könnte helfen?

+1

'.Activate' nichts zurückgibt , Sie können Anrufe nicht wie Sie ketten. Und Sie müssen ".Activate" sowieso nicht entfernen, entfernen Sie es einfach und führen Sie 'Worksheets (" name "). ListObjects (" name "). ListRows.Add" statt. –

+0

Stellen Sie außerdem sicher, dass Ihre Zeichenfolgenliterale keine Tippfehler enthalten und dass der Benutzer diese Tabellenblätter nicht umbenennt. Andernfalls erhalten Sie genau den Fehler, den Sie erhalten: * Der Index liegt außerhalb des Bereichs *. –

+0

Eigentlich hat die Tabelle nicht den gleichen Namen wie das Blatt. Ich dachte in einer Weise os Referenzieren, ohne einen Namen darauf zu setzen, aber es scheint, dass ich nicht wie du gesagt – paulinhax

Antwort

1

Fehler 9 bedeutet Index außerhalb des Bereichs, d. H. Das Objekt, auf das Sie verweisen, ist in der Arbeitsmappe/dem Arbeitsblatt nicht vorhanden.

Stellen Sie sicher, dass Sie ein Blatt mit dem Namen "BASE_GERAL_FUNCIONARIOS" in der Arbeitsmappe haben und auf diesem Blatt eine Excel-Tabelle namens "BASE_GERAL_FUNCIONARIOS" hat.

Anders als das wäre die richtige Syntax wie folgt sein ... Worksheets("BASE_GERAL_FUNCIONARIOS").ListObjects("BASE_GERAL_FUNCIONARIOS").ListRows.Add

gleiche Art und Weise die zweite Zeile so sein würde ...

Set ExpenseTable = Worksheets("BASE_GERAL_FUNCIONARIOS").ListObjects("BASE_GERAL_FUNCIONARIOS") 
+0

eigentlich hat meine Tabelle diesen Namen nicht ... Nur das Blatt hat. Gibt es eine Möglichkeit, Referenzen zu erstellen, ohne den Namen der Tabelle zu ändern? – paulinhax

+0

Sie können die Tabelle anhand der Indexnummer referenzieren. Wenn das Blatt also nur eine Tabelle hat, können Sie es durch .ListObjects (1) – sktneer

+0

beziehen. Gibt es eine Möglichkeit, diese Art von Referenz zu erstellen, wenn ich zwei Tabellen auf demselben Blatt habe? – paulinhax

Verwandte Themen