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

Forumthread: Zelle bei mehreren Bedingungen kopieren

Zelle bei mehreren Bedingungen kopieren
Bastian
Hallo zusammen,
ich bräuchte mal wieder etwas Hilfe.
ich habe eine ganze Reihe von periodischen Aufträgen, die normalerweise immer einzeln in ein Worddokument getippt wurden und dann an Lieferanten verschickt worden sind.
Entscheidend ist, dass unter einem Stichwort 1 - 3 Bestellpositionen erfasst werden können und unter einem Stichwort verschiedene Lieferanten angesprochen werden können, außerdem können diverse Bestellorte existieren.
Zur Vereinfachung habe ich die Basisdaten in eine Excelliste erfasst und mir ein Worddokument mit Textfeldern erstellt und die beiden Dateien verknüpft.
Ich habe die Routine schon soweit, dass sofern ein Auftrag nur eine Position bei einem Lieferanten hat, dass wunderbar funktioniert. Das Dokument wird automatisch mit allen Daten gefüllt, speichert sich selbstständig unter einem eindeutigen Namen ab und schließt sich wieder und die Routine läuft weiter.
Mein Problem ist folgendes:
Bei 2 Positionen muss ein anderes Dokument angesprochen werden (kein Problem) und die Daten der 2. Bestellposition ebenfalls eingeben werden (Problem).
Wie schafft man es, dass die Routine die komplette Liste durchsucht, ob eine 2. Zeile existiert mit dem selben Lieferantennamen und Bestellstichwort und diese Daten für die 2. Bestellposition übernimmt?
Meinen Code habe ich angehängt und soweit abgespeckt, das nur die Zeilen drin sind, die für diesen Fall relevant sind.
Die wichtigsten Daten stehen in der Excelliste in folgenden Spalten:
Stichwort: 1 (A)
Lieferantenname: 11 (K)
Bestellort: 12 (L)
Summenprodukt aus Stichwort, Lieferantenname, Bestellort: 29 (AC)
Sub test()
Dim appWord As Object
Dim Bestellvorlage As Object
For i = 4 To 5 'Zur Vereinfachung nur diese beiden Zeilen
' In Spalte 29 ist das Summenprodukt aus Stichwort, Lieferantenname und Bestellort - hier gibt  _
es also unter einem Stichwort, einen Lieferanten der an einen Standort liefert mit 2 Positionen
If Cells(i, 29) = 2 And Cells(i, 7) = "Bogen" Then
' Richtige Bestellvorlage öffnen
Set appWord = CreateObject("Word.Application")
Set Bestellvorlage = appWord.Documents.Open("P:\Periodika 2011\Vorlagen\Jahresplanung_Bogen_2  _
Positionen_Test")
appWord.Visible = True
'Bestellvorlage mit Daten der Excelliste befüllen - die mit " ' "gekennzeichneten sind die  _
Felder für die 2. Bestellposition die Probleme bereiten.
' Die korrekte Spalte ist bereits angegeben, die Zeile ist mit einem "?" versehen.
Bestellvorlage.Bookmarks("Lieferantenname").Range.Text = Cells(i, 19).Value
Bestellvorlage.Bookmarks("Bogenanzahl1").Range.Text = Cells(i, 10).Value
Bestellvorlage.Bookmarks("Papier1").Range.Text = Cells(i, 8).Value
Bestellvorlage.Bookmarks("Grammatur1").Range.Text = Cells(i, 2).Value
Bestellvorlage.Bookmarks("Format1").Range.Text = Cells(i, 5).Value
Bestellvorlage.Bookmarks("Laufrichtung1").Range.Text = Cells(i, 6).Value
'Bestellvorlage.Bookmarks("Bogenanzahl2").Range.Text = Cells(?, 10).Value
'Bestellvorlage.Bookmarks("Papier2").Range.Text = Cells(?, 8).Value
'Bestellvorlage.Bookmarks("Grammatur2").Range.Text = Cells(?, 2).Value
'Bestellvorlage.Bookmarks("Format2").Range.Text = Cells(?, 5).Value
'Bestellvorlage.Bookmarks("Laufrichtung2").Range.Text = Cells(?, 6).Value
Bestellvorlage.Bookmarks("Datum1").Range.Text = Cells(i, 33).Value
'Speichern der Bestellvorlage unter Zellbezügen
Bestellvorlagespeichern = "P:\Periodika 2011\Bestellungen Periodika 2011\Jahresplanung 2011_" &  _
Workbooks("Bogenberechnung Test").Sheets("Periodika 2011").Cells(i, 12).Value & "_" & Workbooks("Bogenberechnung Test").Sheets("Periodika 2011").Cells(i, 11).Value & "_" & Workbooks("Bogenberechnung Test").Sheets("Periodika 2011").Cells(i, 1).Value & ".doc"
Bestellvorlage.SaveAs Filename:=Bestellvorlagespeichern
appWord.Documents.Close
appWord.Quit
End If
Next i
Set docTest = Nothing
Set appWord = Nothing
End Sub

Ich hoffe ich habe die wichtigsten Daten angegeben, sonst bitte kurz nachfragen.
Hat jemand eine Idee wie man das lösen kann?
Danke und viele Grüße
Bastian
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zelle bei mehreren Bedingungen kopieren
16.04.2010 17:53:48
fcs
Hallo Bastian,
du muss nach dem Übertragen des 1. Satzes Daten eine Suchschleife einbauen für den 2. Satz.
Zusätzlich muss du einen Merker einführen, für die schon nach Word übertragenen Positionen. Diese müssen übersprungen werden, wenn der Zähler i auf diese Positionen trifft.
Ich hab hierfür das Datenfeld bolNachWord eingerichtet.
Nachfolgend deine Prozedur (ungetestet) entsprechend angepasst. Bei Versand von 3 Positionen muss du einen weiteren ähnlichen Block einfügen. Der For-Next-Zähler muss dann bei j+1 weitermachen.
Gruß
Franz
Sub test()
Dim appWord As Object
Dim Bestellvorlage As Object, bolNachWord() As Boolean
Dim i As Long, j As Long, ZeileLetzte As Long
Dim Bestellvorlagespeichern As String
ZeileLetzte = 10
ReDim bolNachWord(4 To ZeileLetzte) ' oberer Wert identisch mit For-Next-Schleifen-Zähler
For i = 4 To ZeileLetzte 'Zur Vereinfachung nur diese beiden Zeilen
If bolNachWord(i) = False Then
' In Spalte 29 ist das Summenprodukt aus Stichwort, Lieferantenname und Bestellort - hier  _
gibt _
es also unter einem Stichwort, einen Lieferanten der an einen Standort liefert mit 2  _
Positionen
If Cells(i, 29) = 2 And Cells(i, 7) = "Bogen" Then
' Richtige Bestellvorlage öffnen
Set appWord = CreateObject("Word.Application")
Set Bestellvorlage = _
appWord.Documents.Open("P:\Periodika 2011\Vorlagen\Jahresplanung_Bogen_2Positionen_Test")
appWord.Visible = True
'Bestellvorlage mit Daten der Excelliste befüllen - die mit " ' "gekennzeichneten sind die  _
_
Felder für die 2. Bestellposition die Probleme bereiten.
' Die korrekte Spalte ist bereits angegeben, die Zeile ist mit einem "?" versehen.
Bestellvorlage.Bookmarks("Lieferantenname").Range.Text = Cells(i, 19).Value
Bestellvorlage.Bookmarks("Bogenanzahl1").Range.Text = Cells(i, 10).Value
Bestellvorlage.Bookmarks("Papier1").Range.Text = Cells(i, 8).Value
Bestellvorlage.Bookmarks("Grammatur1").Range.Text = Cells(i, 2).Value
Bestellvorlage.Bookmarks("Format1").Range.Text = Cells(i, 5).Value
Bestellvorlage.Bookmarks("Laufrichtung1").Range.Text = Cells(i, 6).Value
bolNachWord(i) = True
'Zeile mit 2. Eintrag suchen
'Stichwort: 1 (A)
'Lieferantenname: 11 (K)
'Bestellort: 12 (L)
'Summenprodukt aus Stichwort, Lieferantenname, Bestellort: 29 (AC)
For j = i + 1 To ZeileLetzte
If Cells(j, 1) = Cells(i, 1) And Cells(j, 11) = Cells(i, 11) _
And Cells(j, 12) = Cells(i, 12) Then
Bestellvorlage.Bookmarks("Bogenanzahl2").Range.Text = Cells(j, 10).Value
Bestellvorlage.Bookmarks("Papier2").Range.Text = Cells(j, 8).Value
Bestellvorlage.Bookmarks("Grammatur2").Range.Text = Cells(j, 2).Value
Bestellvorlage.Bookmarks("Format2").Range.Text = Cells(j, 5).Value
Bestellvorlage.Bookmarks("Laufrichtung2").Range.Text = Cells(j, 6).Value
bolNachWord(j) = True
Exit For
End If
Next j
Bestellvorlage.Bookmarks("Datum1").Range.Text = Cells(i, 33).Value
'Speichern der Bestellvorlage unter Zellbezügen
Bestellvorlagespeichern = "P:\Periodika 2011\Bestellungen Periodika 2011\Jahresplanung  _
2011_" & _
Workbooks("Bogenberechnung Test").Sheets("Periodika 2011").Cells(i, 12).Value & "_" & _
Workbooks("Bogenberechnung Test").Sheets("Periodika 2011").Cells(i, 11).Value & "_" _
& Workbooks("Bogenberechnung Test").Sheets("Periodika 2011").Cells(i, 1).Value & ".doc"
Bestellvorlage.SaveAs Filename:=Bestellvorlagespeichern
appWord.Documents.Close
appWord.Quit
End If
End If
Next i
Set Bestellvorlage = Nothing
Set appWord = Nothing
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

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