2016-08-17 6 views
0

Ich bin neu in VBA in Excel und ich lief in einen Fehler, ich bin mir nicht sicher, wie zu interpretieren. Ich habe mich gefragt, ob jemand helfen könnte. Ich versuche, ein Inhaltsverzeichnis für eine Excel-Datei zu erstellen, und ich habe ein Makro online gefunden. Es wird unten geschrieben:Variable Fehler mit Makro in VBA

Sub Create_TOC() 
Dim wbBook As Workbook 
Dim wsActive As Worksheet 
Dim wsSheet As Worksheet 
Dim lnRow As Long 
Dim lnPages As Long 
Dim lnCount As Long 
Set wbBook = ActiveWorkbook 
With Application 
    .DisplayAlerts = False 
    .ScreenUpdating = False 
End With 
    'If the TOC sheet already exist delete it and add a new 
    'worksheet. 
On Error Resume Next 
With wbBook 
    .Worksheets(“TOC”).Delete 
    .Worksheets.Add Before:=.Worksheets(1) 
End With 
On Error GoTo 0 
Set wsActive = wbBook.ActiveSheet 
With wsActive 
    .Name = “TOC” 
    With .Range(“A1:B1”) 
     .Value = VBA.Array(“Table of Contents”, “Sheet # – # of Pages”) 
     .Font.Bold = True 
    End With 
End With 
lnRow = 2 
lnCount = 1 
‘Iterate through the worksheets in the workbook and create 
‘sheetnames, add hyperlink and count & write the running number 
‘of pages to be printed for each sheet on the TOC sheet. 
For Each wsSheet In wbBook.Worksheets 
    If wsSheet.Name <> wsActive.Name Then 
     wsSheet.Activate 
     With wsActive 
      .Hyperlinks.Add .Cells(lnRow, 1), “”, _ 
      SubAddress:=”‘” & wsSheet.Name & “‘!A1”, _ 
      TextToDisplay:=wsSheet.Name 
      lnPages = wsSheet.PageSetup.Pages().Count 
      .Cells(lnRow, 2).Value = “‘” & lnCount & “ - ” & lnPages 
     End With 
     lnRow = lnRow + 1 
     lnCount = lnCount + 1 
    End If 
Next wsSheet 
wsActive.Activate 
wsActive.Columns(“A:B”).EntireColumn.AutoFit 
With Application 
    .DisplayAlerts = True 
    .ScreenUpdating = True 
End With 
End Sub 

Der Fehler, die ich erhalten war:

Compile Error: Variable TOS not defined. 

Ich bin wirklich neu in diesem und ich bin nicht sicher, was das bedeutet. Könnte jemand eine detaillierte Erklärung geben, was das Problem ist und wie man es beheben kann?

+0

Haben Sie an der Spitze des Codes "Option Explicit" enthalten? Dies zwingt Sie, alle Ihre Variablen zu definieren. Dies könnte helfen, das Problem zu finden! – MiguelH

+0

Das ist eigentlich in der Datei bereits enthalten ist es die TOS markieren –

+0

Wo ist TOS in Ihrem Code? –

Antwort

1

Ich glaube, das Problem ist in den Anführungszeichen, gibt es abgewinkelte/geschweifte Klammern verwendet wird, und dies stoppt den Code richtig gelesen wird.

die erste Instanz des Problems Unter: -

.Worksheets(“TOC”).Delete 

Sie erhalten den Fehler: -

Compile Error:

Variable not defined

und “TOC” hervorgehoben. Dies geschieht, weil die falschen Anführungszeichen so sind, dass TOC nicht als eine literale Zeichenfolge gesehen wird, sondern “TOC” als eine Variable angenommen wird, die nicht definiert ist (d. H. Nicht existiert).

Dies kann, indem Sie durch Ihren Code festgelegt werden und alle die folgenden ersetzt: - +)

ändern

ändern (schräger offen Zitat) zu " (gerade Anführungszeichen (Verschiebung (gewinkelt Schließen Zitat) zu " (straight quotation (Verschiebung +)

ändern (schräge Apostroph) zu ' (gerade einfache Anführungszeichen (' teilt die @ key)

+1

Beachten Sie, dass die Teile" Shift + 2 "und" share the @ key "vollständig von Ihnen abhängen Tastaturlayout und Gebietsschema. Shift + 2 macht ein "@" auf meiner US-Tastatur, und ich bekomme ein einfaches Zitat mit der '/ "Taste. Dieser Teil Ihrer Antwort ist wahrscheinlich besser ausgelassen. –

+0

Verstanden - Ändern der Anführungszeichen behoben eine Menge davon, aber ich habe immer noch Probleme mit SubAddress und TextToDisplay. Irgendeine Idee, wie man diese Probleme löst? –