Anzeige
Archiv - Navigation
680to684
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
680to684
680to684
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Frage an Harald E.

Frage an Harald E.
12.10.2005 00:00:13
achim
Hallo Harald E
Danke für die drei Tipps und für dein Angebot der weiteren Hilfe. Toll!!:-)
Nun beschreibe ich wie gewünscht die genaue Funktion des Makros.
Im Wesendlichen geht es darum in der Datei DienstplanMaster.xls (Tabellenblatt DienstplanMaster) drei Tabellen die (Datei DienstplanMV34.xls, DienstplanMV35.xls, DienstplanMV36.xls alle drei haben ein Tabellenblatt = Einteiler)Exakt den gleichen Aufbau haben zusammenzuführen.
Nun sind die Daten in den Tabellenblätter „Einteiler“ durch SVERWEISE zusammengestellt von daher verwende ich in der Datei DienstplanMaster,( Tabellenblatt DienstplanMaster) die Formel Links und möchte so flexibel wie es eben geht d.h. so wenig feste Range... wie möglich haben.
Nun der gedachte Ablauf:
Zunächst starte ich die Datei DienstplanMaster und gehe zum TabellenBlatt DienstplanMaster
Finde ab B die erste leere Zelle
In der Regel ist das dann B2
B2 (Aktive Zelle) Formel links wird eingetragen
Danach geht zur nächsten Aktiven Zelle wieder wird die Formel Links eingetragen so lange bis Q2
Dann wird wieder nach der ersten leeren Zelle gesucht , wenn gefunden geht das ganze ein nach oben (so ist die erste belegte wie gewollt angesteuert)
Danach wird die Aktive Zelle von B2:Q2 markiert
Wie bei der letzten Frage beschrieben funktioniert der erste Teil gut.
Nun geht es mir eigentlich um den zweiten Teil....
Gehe nach DienstplanMV34.xls „Einteiler“ u. zähle die Anzahl der Einträge ab D2 bis Ende
Nach dem Zählen gehe nach Dienstplanmaster Tabellenblatt DienstplanMaster und gehe zur Aktiven Zelle und mache soviel AutoFill wie vorher gezählt.
Die Gesamte Prozedur möchte ich dann für die nächsten Tabellen durchlaufen lassen bis alle Daten komplett sind.
Mit freundlichen Grüßen
Achim H.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Frage an Harald E.
12.10.2005 08:28:13
Harald
Moin Achim,
der Thread mit den 3 Tipps ist leider schon rausgefallen und ich hab den Zusammenhang nicht mehr genau vor Augen.
Das Makro (im Standardmodul der Datei Dienstplanmaster) kannst Du in groben Schritten schonmal per Rekorder aufzeichnen.
Eine händische Anpassung dürfte problemlos mit folgenden Infos möglich sein.
Anzahl der Einträge D2 bis Ende:
drow = cells(rows.count, 4).end(xlup).row
anzd = WorksheetFunction.Count(Range("d2:a" & drow)) 'count für Zahlen. counta für alle Argumente
anzd liefert dir auch den Endpunkt für autofill.
ce = ActiveCell.Row
ActiveCell.AutoFill Destination:=Range("C" & ce & ":C" & anzd), Type:=xlFillDefault
Da das Ganze per Schleife durch verschiedene Tabellenblätter (in versch. Dateien ?) laufen muss, müßen den range-Angaben die Blätter zugewiesen werden.
Bei der Vielzahl von Schleifen-Möglichkeiten brauch ich aber schon mehr Details um Hilfe anzubieten.
Mir wäre mit dem aufgezeichneten Code-Grundgerüst wohl mehr geholfen.
Gruß
Harald
Anzeige
AW: Frage an Harald E.
12.10.2005 10:17:58
achim
Hallo Harald E.
Danke für die zweite Rückmeldung..:-)
Ich habe dir zunächst wegen der Nachvollziebarkeit den ersten Teil vom meinem Makro der auch Funktioniert eingestellt. Zustand ist fogender. Die Datei Dienstplanmaster.xls ist geöffnet und das Aktive Blatt in dem ich mich befinde heißt auch DienstplanMaster.

Sub DatenÖffnenMV34()
Dim strPfad As String
strPfad = ThisWorkbook.Path & "\" & "DienstplanMV34.xls"
Workbooks.Open strPfad, Password:="KUFAP"
End Sub


Sub DatenÖffnenMV35()
Dim strPfad As String
strPfad = ThisWorkbook.Path & "\" & "DienstplanMV35.xls"
Workbooks.Open strPfad, Password:="KUFAP"
End Sub


Sub DatenÖffnenMV36()
Dim strPfad As String
strPfad = ThisWorkbook.Path & "\" & "DienstplanMV36.xls"
Workbooks.Open strPfad, Password:="KUFAP"
Windows("DienstplanMaster.xls").Activate
End Sub


Sub ErsteleereZelleSuchen()
Range("B:B").Find("", LookAt:=xlWhole).Offset(0, 0).Select
End Sub


Sub FormelFürMasterEinstellen()
ActiveCell.Offset(0, 0).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC2,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC3,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=SUM([DienstplanMV34.xls]Einteiler!RC4)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC5,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC6,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=Left([DienstplanMV34.xls]Einteiler!RC7,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=SUM([DienstplanMV34.xls]Einteiler!RC8)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=SUM([DienstplanMV34.xls]Einteiler!RC9)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC10,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC11,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=SUM([DienstplanMV34.xls]Einteiler!RC12)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC13,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC14,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC15,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC16,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC17,25)"
Range("B:B").Find("", LookAt:=xlWhole).Offset(-1, 0).Select
End Sub

Nun komme ich zum zweiten Teil mit dem ich nicht mehr klar komme
Gehe nach DienstplanMV34.xls „Einteiler“ u. zähle die Anzahl der Einträge ab D2 bis Ende
Nach dem Zählen gehe nach Dienstplanmaster Tabellenblatt DienstplanMaster und gehe zur Aktiven Zelle und mache soviel AutoFill wie vorher gezählt.
Ich hoffe diese Hinweise zu mehr Klarheit beitragen.(Naja eine Beschreibung nicht immer einfach)
danke
Gruß
Achim h.
Anzeige
AW: Frage an Harald E. mit korrektur
12.10.2005 10:50:20
achim
Hallo Harald E./mit kleiner korrektur
Danke für die zweite Rückmeldung..:-)
Ich habe dir zunächst wegen der Nachvollziebarkeit den ersten Teil vom meinem Makro der auch Funktioniert eingestellt. Zustand ist fogender. Die Datei Dienstplanmaster.xls ist geöffnet und das Aktive Blatt in dem ich mich befinde heißt auch DienstplanMaster.

Sub DatenÖffnenMV34()
Dim strPfad As String
strPfad = ThisWorkbook.Path & "\" & "DienstplanMV34.xls"
Workbooks.Open strPfad, Password:="KUFAP"
End Sub

Windows("DienstplanMaster.xls").Activate
End Sub

Sub ErsteleereZelleSuchen()
Range("B:B").Find("", LookAt:=xlWhole).Offset(0, 0).Select
End Sub


Sub FormelFürMasterEinstellen()
ActiveCell.Offset(0, 0).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC2,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC3,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=SUM([DienstplanMV34.xls]Einteiler!RC4)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC5,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC6,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=Left([DienstplanMV34.xls]Einteiler!RC7,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=SUM([DienstplanMV34.xls]Einteiler!RC8)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=SUM([DienstplanMV34.xls]Einteiler!RC9)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC10,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC11,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=SUM([DienstplanMV34.xls]Einteiler!RC12)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC13,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC14,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC15,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC16,25)"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC17,25)"
Range("B:B").Find("", LookAt:=xlWhole).Offset(-1, 0).Select
Range(ActiveCell(), ActiveCell.Offset(0, 15)).Select
End Sub

Nun komme ich zum zweiten Teil mit dem ich nicht mehr klar komme
Gehe nach DienstplanMV34.xls „Einteiler“ u. zähle die Anzahl der Einträge ab D2 bis Ende
Nach dem Zählen gehe nach Dienstplanmaster Tabellenblatt DienstplanMaster und gehe zur Aktiven Zelle und mache soviel AutoFill wie vorher gezählt.
Wenn das alles erledigt ist und der zweite Teil klappt dann komme ich mit dem Rest klar.
Ich hoffe diese Hinweise zu mehr Klarheit beitragen.(Naja eine Beschreibung nicht immer einfach)
danke
Gruß
Achim h.
Anzeige
AW: Frage an Harald E.
12.10.2005 11:06:11
Harald
Hallo,
zunächst kannst Du aus jedem Zweizeiler in deinem Code einen Einzeiler machen.
ActiveCell.Offset(0, 0).FormulaR1C1 = "=LEFT([DienstplanMV34.xls]Einteiler!RC2,25)"
Set ziel = Workbooks("DienstplanMV34.xls").Sheets("Einteiler")
Lrow = ziel.cells(rows.count, 4).end(xlup).row 'letzte Zelle in Spalte D
frage = WorksheetFunction.CountA(ziel.Range("d2:d" & Lrow)) 'Anzahl der Argumente
set meister = workbooks("Dienstplanmaster.xls").sheets("Dienstplanmaster ")
LrowB = meister.cells(rows.count, 2).end(xlup).row + 1 'erste freie Zelle in B
Ich würd ja gern weitermachen, aber was soll den autogefillt werden ?
So weit sogut. An der Stelle will ich noch kurz darauf hinweisen, dass ich von vba-gut noch weit entfernt bin und lediglich Hausmannskost anbieten kann ;-))
Das Ganze funzt zwar, sieht aber ziemlich unelegant aus.
Vielleicht kommst ja auch schon alleine klar. Wie gesagt. Der Rekorder hilft manchmal schon und du hast die mit LRow und LRowB auch die letzte bzw. erste freie Zelle definiert.
Großbaustelle, was ? Die Schleife für die vielen Blätter soll ja auch noch laufen.
Ansatz einer Schleife
for i = 35 to 38 'wobei Start- und Endzahl auch anders definiert werden können.
Set ziel = Workbooks("DienstplanMV" & i & ".xls").Sheets("Einteiler")
restlicher Code
next i
Hilft alles nix. Ärmel hoch und los gehts ;-))
Viel Erfolg
Harald
Anzeige
AW: Frage an Harald E.
13.10.2005 08:49:04
achim
Hallo Harald E
Danke für deine Anregungen. Diese haben mich ein Stück nach vorn gebracht.
Es stimmt das Ganze wird eine große Baustelle!!!
Aber es nützt nichts, ran an die Klamotten.
Die Sache mit dem AutoFill habe ich als neue Frage eingestellt.
Nochmals Danke für deine Mühe.
Gruß Achim H.
Aus dem Ruhrgebiet.
Danke für Rückmeldung owT
13.10.2005 09:11:51
Harald
gh

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige