Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: For Schleife mit If Abfrage

For Schleife mit If Abfrage
03.12.2015 04:40:04
Kenji
Hallo zusammen,
ich habe "mal wieder" eine Schwierigkeit zu bewältigen, wo Ihr mir hoffentlich weiterhelfen könnt.
Zuerst einmal mein bisheriger Code:
Sub Schreiben()
Dim Eingabe As Variant
Dim Tabelle
Dim wrdApp As Object
Dim wrdDoc As Object
Dim dateipfad As String
Set Tabelle = ThisWorkbook.Worksheets("Tabelle")
Do
Zeile = Application.InputBox(prompt:="Bitte die Zeile eingeben, aus der das Dokument  _
generiert werden soll!", Title:="Eingabe Zeile", Default:="", Type:=1)
If VarType(Zeile) = vbBoolean Then Exit Do
If Zeile = 3 Then
If Tabelle.Cells(Zeile, 11).Value = "" Then
MsgBox "Das Feld bla ist nicht ausgewählt. Ein Schreiben kann nicht erstellt werden", 16, " _
Warnung"
Exit Do
Else
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
Set wrdDoc = wrdApp.Documents.Open("U:\Anschreiben.docm")
End If
For i = Tabelle.Cells(Zeile, 8) To Tabelle.Cells(Zeile, 9) Step 1
wrdDoc.FormFields("Text1").Result = Tabelle.Cells(Zeile, 38).Value
wrdDoc.FormFields("Text2").Result = Tabelle.Cells(Zeile, 39).Value
wrdDoc.FormFields("Text3").Result = Tabelle.Cells(Zeile, 40).Value
wrdDoc.FormFields("Text4").Result = Tabelle.Cells(Zeile, 41).Value
wrdDoc.FormFields("Text5").Result = Tabelle.Cells(Zeile, 42).Value
wrdDoc.FormFields("Text6").Result = Tabelle.Cells(Zeile, 43).Value
wrdDoc.FormFields("Text7").Result = Tabelle.Cells(Zeile, 44).Value
wrdDoc.FormFields("Text8").Result = i
wrdDoc.FormFields("Text9").Result = Tabelle.Cells(Zeile, 10).Value
wrdDoc.FormFields("Text10").Result = Tabelle.Cells(Zeile, 46).Value
wrdDoc.FormFields("Text11").Result = Tabelle.Cells(Zeile, 47).Value
wrdDoc.FormFields("Text12").Result = Tabelle.Cells(Zeile, 11).Value
wrdDoc.FormFields("Text13").Result = Tabelle.Cells(Zeile, 48).Value
wrdDoc.FormFields("Text14").Result = Tabelle.Cells(Zeile, 10).Value
dateipfad = "L:\"
wrdDoc.ExportAsFixedFormat OutputFileName:=dateipfad & "\" & Tabelle.Cells(Zeile, 42).Value  _
& " " & Tabelle.Cells(Zeile, 43).Value & " " & Tabelle.Cells(Zeile, 44).Value & " - " & "0000" & " - " & Format(Now, "DD.MM.YYYY") & ".pdf", _
ExportFormat:=17, OpenAfterExport:=True, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
wrdApp.Quit savechanges:=wdDoNotSaveChanges
Set Tabelle = Nothing
Set wrdDoc = Nothing
Set wrdApp = Nothing
Next i
Exit Do
End If
MsgBox "Fehler! In der genannten Zeile fehlen Werte oder es handelt es sich um eine nicht  _
existierende oder komplett leere Zeile!", 16, "Warnung"
Loop
End Sub
So nun zu dem eigentlichen Problem. Das Makro läuft in einer Excel Datei, dass die Word Dokumente in einer Schleife produzieren soll und zwar abhängig von 2 Zellen in jeder Spalte.
Beispiel:
Zelle A = 468
Zelle B = 470
Nun soll das Makro nacheinander 3 Dateien erstellen. Die erste Datei beinhaltet Nummer 468, die _ zweite Datei 469 und die dritte Datei 470. Mit der ersten Datei klappt das auch, aber sobald er die zweite Datei machen soll bricht das Makro mit der Meldung "Objektvariable oder With-Blockvariable nicht festgelegt" ab. Im Makro selber wird die Zeile

wrdDoc.FormFields("Text1").Result = Tabelle.Cells(Zeile, 38).Value
gelb markiert.
Das ist allerdings nur der erste Schritt, der funktionieren soll. Nun kann es aber vorkommen, dass in Zelle B nichts drinsteht. Wenn dem der Fall ist bricht das Makro sofort ab, da die For Schleife nicht bei beiden Variablen Inhalt hat. Wie kann ich das, vielleicht mit einer IF Schleife, abfangen?
Wäre klasse, wenn mir da jemand auf die Spünge helfen kann.
Grüße
Kenji

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For Schleife mit If Abfrage
03.12.2015 08:19:42
fcs
Hallo Kenji,
Fehler "Objektvariable oder With-Blockvariable nicht festgelegt":
du musst die Zeile
    Set Tabelle = Nothing

löschen oder verschieben vor die Zeile End Sub
Wie kann ich das, vielleicht mit einer IF Schleife, abfangen?

Prüfung an der logisch korrekten Stelle einbauen und dann per
Goto Weitermachen oder mit einer Exit For oder Exit Do
an der passenden Zeile das Makro weiter ausführen.
Gruß
Franz
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige