Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1460to1464
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
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

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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige