Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1152to1156
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
Inhaltsverzeichnis

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

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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige