Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
816to820
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
816to820
816to820
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro-Frage an Franz fcs

Makro-Frage an Franz fcs
09.11.2006 10:52:15
Düppi
Hallo Franz,
ich stehe mit Deinem Code nunmehr vor einer neuen Aufgabe. Kurz mein Problem: Ich bastle an einem Planungsprogramm für eine Tageszeitung. Damit legen wir täglich die Seitenumfänge fest. Mehrere Lokalausgaben mit unterschiedlichen Seitenzahlen. Hier vereinfacht mit zwei Lokalteilen aufgeführt.
Sheet "Ausgaben":
Spalte B: Seiten für Ausgabe lGTL.
Spalte J: Seiten für Ausgabe lWDB.
Spalte A: Seitennummer (1 bis maximal 48 möglich) für Ausgabe lGTL.
Spalte H: Seitennummer (1 bis maximal 48 möglich) für Ausgabe lWDB.
Ich kann, wie es das Makro auch zuverlässig macht, im Sheet "Guetersloh" sehen, wo - Beispiel - die Seite Wirtschaft aus der Ausgabe lGTL in der Ausgabe lWDB läuft. Wo genau sie dort erscheint (an anderer Stelle/gar nicht/auf gleicher Position), wird im Sheet "Guetersloh" dargestellt. Nun ist es (jetzt kommts) möglich, dass wir in lGTL z.B. 32 Seiten drucken, in lWDB nur 28 - oder umgekehrt. Dies stellt sich im Sheet "Ausgaben" wie folgt dar, wobei wir Umfangsdifferenzen in B oder J einfach mit einem x versehen. In H bleibt dann die Zelle mit der Seitennummer leer - Beispiel:
Sheet "Ausgaben" Sheet "Guetersloh"
Ausgabe GTL Ausgabe WDB Ausgabe GTL Wird in WDB...
A B H J
1 Titelseite 1 Titelseite 1 Titelseite 1
2 Politik 2 Politik 2 Politik 2
3 Wirtschaft x 3 Wirtschaft 3
4 Fernsehen x 4 Fernsehen 4
5 Sport 3 Wirtschaft
6 Lokalsport 4 Fernsehen
Du siehst, Franz, dass die Seite Wirtschaft in GTL auf Seitennummer 3, in WDB ebenfalls auf 3 erscheint - allerdings wird die Zahl 3 im Sheet "Guetersloh" mit Deinem VBA, das ja das x nicht kennt, zu tief ausgeworfen, nämlich auf Höhe der Wirtschafts-Seite in WDB. Sie müsste aber um zwei Zeilen tiefer (wegen der beiden x) stehen.
Es wäre also wichtig, die Zeilen mit x in B oder J zu überspringen. Dabei müsstest Du wissen, dass wir nicht immer unterschiedliche Umfänge haben und diese von Ausgabe zu Ausgabe verschieden sind, also mehrere x-e vorkommen können. Hoffentlich kannst Du Dich noch einmal damit befassen, hofft Düppi!

Private Sub Worksheet_Activate()
Dim lGTL   As Integer
Dim lWDB   As Integer
Dim Ausgaben1 As Range, Ausgaben2 As Range
Worksheets("Guetersloh").Range("K5:O52").ClearContents
Set Ausgaben1 = Sheets("Ausgaben").Range("B5:B52")
Set Ausgaben2 = Sheets("Ausgaben").Range("J5:J52")
For lGTL = 1 To Ausgaben1.Rows.Count
For lWDB = 1 To Ausgaben2.Rows.Count
If Ausgaben1(lGTL, 1) = Ausgaben2(lWDB, 1) And Ausgaben1(lGTL, 1) <> "" Then
Sheets("Guetersloh").Cells(lGTL + 4, "K").Value = Sheets("Ausgaben").Cells(lWDB + 4, "I")
Exit For
End If
Next lWDB
Next lGTL
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro-Frage
09.11.2006 20:54:22
fcs
Hallo Düppi,
ich bin mir nicht sicher, ob ich dich richtig verstanden hab.
In den Schleifen wird jetzt immer die Anzahl der "x" in der Spalte gezählt.
Bei der Ausgabe im Blatt "Guetersloh" wird die jeweilige Anzahl "x" von der ermittelten Zeilennummer abgezogen bevor der Wert aus Spalte "I" in Blatt Guetersloh eingetragen wird. Für die zutreffende Zeile in Spalte "I" wird Anzahl "x" ebenfalls von dem ermittelten Zeilenzähler abgezogen.
Keine Ahnung ob das jetzt so passt.
Evtl. solltes du mal eine Beispieldatei bereitstellen. Kannst du mir auch an meine e-mail-Adresse schicken, die du hier unter Forums-Seiten-Profile-Profilliste-Name=fcs findest.
Gruss
Franz

Private Sub Worksheet_Activate()
Dim lGTL   As Integer
Dim lWDB   As Integer
Dim Anz_X_GTL As Integer, Anz_X_WDB As Integer
Dim Ausgaben1 As Range, Ausgaben2 As Range
Worksheets("Guetersloh").Range("K5:O52").ClearContents
Set Ausgaben1 = Sheets("Ausgaben").Range("B5:B52")
Set Ausgaben2 = Sheets("Ausgaben").Range("J5:J52")
Anz_X_GTL = 0
For lGTL = 1 To Ausgaben1.Rows.Count
If UCase(Ausgaben1(lGTL, 1)) = "X" Then Anz_X_GTL = Anz_X_GTL + 1
Anz_X_WDB = 0
For lWDB = 1 To Ausgaben2.Rows.Count
If UCase(Ausgaben1(lWDB, 1)) = "X" Then Anz_X_WDB = Anz_X_WDB + 1
If Ausgaben1(lGTL, 1) = Ausgaben2(lWDB, 1) And Ausgaben1(lGTL, 1) <> "" Then
Sheets("Guetersloh").Cells(lGTL + 4 - Anz_X_GTL, "K").Value _
= Sheets("Ausgaben").Cells(lWDB + 4 - Anz_X_WDB, "I")
Exit For
End If
Next lWDB
Next lGTL
End Sub

Anzeige
AW: Makro-Frage
10.11.2006 11:47:30
Düppi
Hallo Franz,
im Grund läuft das neue VBA - vielen Dank. Allerdings gibt es Probleme mit der Zeile
If UCase(Ausgaben1(lGTL, 1)) = "x" Then Anz_X_GTL = Anz_X_GTL + 1
Wenn ich das Makro mit F8 schrittweise ablaufen lasse und mit dem Mauszeiger auf den Teil ...Ausgaben1(lGTL,1)... zeige, bekomme ich angezeigt, dass ein x vorliegt. Allerdings zählt der Zähler die Variable Anz_X_GTL nicht hoch - das könnte mein Problem schon lösen...!
Woran kanns liegen, Franz? Gruß Düppi und vielen Dank schon vorab.
AW: Makro-Frage
10.11.2006 14:27:49
fcs
Hallo Düppi,
In meinem Makro lautet die Zeile
If UCase(Ausgaben1(lGTL, 1)) = "X" Then Anz_X_GTL = Anz_X_GTL + 1
du schreibst jetzt
If UCase(Ausgaben1(lGTL, 1)) = "x" Then Anz_X_GTL = Anz_X_GTL + 1
Der Unterschied ist großes "X" bzw. kleines "x". Dieser Unterschied kann es schon sein.
Das UCase sorgt dafür, dass es egal ist ob in der Tabelle das X in Groß- oder Kleinschreibung eingegeben ist. Die Eingabe wird für die Prüfung in Großschreibung umgewandelt. Entsprechend muss rechts vom Gleichheitszeichen "X" stehen.
Gruss
Franz
Anzeige
AW: Makro-Frage
10.11.2006 14:38:03
Düppi
Hallo Franz,
habe mir in den letzten 2 Stunden mit Try & Error selbst gehofen, gebastelt und gefeilt, bis es lief (einmal GTL durch WDB ersetzt, woanders den Schritt "- Anz_X_WDB" raus).
Habe das mit UCase herausgenommen, weil ich an anderer Stelle ohnehin überwache, dass große X in kleine x gewandelt werden.
Hier der Code, der Dank Dir hervorragend läuft und mein Planungsprogramm optimiert - besten Dank dafür, sagt Düppi!
Private Sub Worksheet_Activate()
Dim lGTL As Integer
Dim lWDB As Integer
Dim Anz_X_GTL As Integer, Anz_X_WDB As Integer
Worksheets("Guetersloh").Range("K5:O52").ClearContents
Set Ausgaben1 = Sheets("Ausgaben").Range("B5:B52")
Set Ausgaben2 = Sheets("Ausgaben").Range("J5:J52")
Anz_X_GTL = 0
For lGTL = 1 To Ausgaben1.Rows.Count
If Ausgaben1(lGTL, 1) = "x" Then Anz_X_GTL = Anz_X_GTL + 1
Anz_X_WDB = 0
For lWDB = 1 To Ausgaben2.Rows.Count
If Ausgaben2(lWDB, 1) = "x" Then Anz_X_WDB = Anz_X_WDB + 1
If Ausgaben1(lGTL, 1) = Ausgaben2(lWDB, 1) And Ausgaben1(lGTL, 1) "x" And Ausgaben2(lWDB, 1) "x" And Ausgaben1(lGTL, 1) "" Then
Sheets("Guetersloh").Cells(lGTL + 4 - Anz_X_GTL, "K").Value _
= Sheets("Ausgaben").Cells(lWDB + 4, "I")
Exit For
End If
Next lWDB
Next lGTL
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige