Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1256to1260
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

Datumsbezogener Wertetransfer

Datumsbezogener Wertetransfer
Heiko
Hallo,
folgende Aufgabe: ich möchte aus Tabelle A Reiter Tageswerte bestimmte Zellen in andere Tabellen übertragen. Das Datum steht in Spalte A im Format TT. MMM. der Tabelle A. In Zieltabelle B gibt es Reiter für jeden der 12 Monate, dort steht in Spalte A wieder das Datum im Format TT. MMM. In Zieltabelle C gibt es auch wieder Reiter für die einzelnen Monate jedoch steht das Datum in Spalte A im Format TT. MMM JJ
Ausserdem möchte ich wenn der zu übertragene Wert aus Tabelle A=null ist keine Übertragung. Ich hoffe das ist ausreichend deutlich.
Bislang hab ich noch nicht sehr viel mit VBA gemacht und wenn hauptsächlich über den Makrorekorder. An oben genanntem Problem bin ich bislang leider kläglich gescheitert.
AW: Datumsbezogener Wertetransfer
31.03.2012 08:24:02
Heiko
Vielen Dank für eure Hilfe
Gruß Heiko
Klärung der Aufgabenstellung
31.03.2012 10:05:16
Erich
Klärung der Aufgabenstellung
Hallo Heiko,
so fällt Hilfe etwas schwer. In welcher Forml könntest du dir die Hilfe vorstellen?
Beispiel: Du möchtest "bestimmte Zellen übertragen". Wie soll man das in Code/Formel übersetzen können?
Deine Angaben sind zu wenig konkret. Welche Zellen übertragen werden sollen, wäre schon interessant.
Ein weiteres Problem sind deine Bezeichnungen.
Mit "Tabelle A" meinst du vermutlich die Excelmappe (Datei, Workbook) A.xls
Daneben gibt es wohl die beiden Mappen B.xls und C.xls
Als "Reiter" bezeichnest du vermutlich die in den Mappen enthaltenen Tabellenblätter (Worksheets).
In A.xls gibt es also ein Blatt mit dem Namen "Tageswerte".
Du sagst, in B gibt es Reiter "für die einzelnen Monate".
Gibt es in B.xls (und ebenso C.xls) Tabellenblätter mit den Namen "Januar", "Februar", ...?
Oder "Januar 2012", "Februar 2012", ...
Oder heißen die Blätter "2012-01", ... ,"2012-12" ? Wäre ja auch gut möglich.
Was ist mit Daten, die bereits in den Zielblättern stehen?
Sollen die neuen Daten darunter geschrieben werden?
Oder sollen die Altdaten überschrieben werden?
Sind die Daten im Quellblatt "Tageswerte" nach Datum sortiert bzw. dürfen sie sortiert werden?
Noch eine Bemerkung zu den Formaten:
In welchen Formaten das Datum in Spalte A steht, ist uninteressant. für das Problem.
Die Formate regeln nur das Aussehen, die Anzeige des Datums. Der Zellwert ist davon unabhängig.
Ich meine, dass du nun i. W. zwei Möglichkeiten hast:
Du kannst genau genug beschreiben, was wo ist und was wann wohin soll.
Oder du lädst Bespiele für deine 3 Mappen hier hoch, in denen die Ausgangssituation und das Endergebnis sichtbar sind.
Wesentlich in jedem Fall:
Wo soll der Code stehen (welche Mappe)? Wie soll er gestartet werden?
Sind dann die drei beteiligten Mappen bereits offen oder muss erst noch etwas geöffnet werden?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: Klärung der Aufgabenstellung
31.03.2012 12:40:06
Heiko
Hallo Erich, erstmal vielen Dank für die schnelle Antwort und die ausführliche Aufgabenstellung. Ich entscheide mich für Variante A da ich sonst Ärger bekommen könnte wenn ich Bilder unserer Daten online Stelle, ich hoffe auf Verständniss.
Aus der Datei 'TagesberichtBF1.xls' sollen vom Worksheet 'Tageswerte' bestimmte Werte, in die Datei 'BF1 Eingaben 2012.xls' dort in das Worksheet des betreffenden Monats (Jan, Feb, Mrz, Apr) übertragen werden. Nur die Werte auf keinen Fall die Formatierung, ich weiss nicht ob das dann copy & paste ausschliesst.
Die Quell sowie die Zieldateien sind ähnlich aufgebaut. In Spalte A steht das Datum. Die zu übertragenen Werte (diese sind alle Tageswerte) sollen in die Zeile mit dem entsprechenden Datum wie in der Quelldatei. Das Datum der Quelldatei läuft das ganze Jahr in einem Sheet fort, zwischen den Monaten gibt es allerdings Unterbrechungen. Sheets der Zieldatei sind wie folgt benannt: Jan, Feb, Mrz, Apr, Mai, Juni, Juli, Aug, Sep, Okt, Nov, Dez Es sollen immer nur Werte =heute-1 (also von gestern) übertragen werden.
Aus der Datei 'Tagesbericht BF1.xls' dem Worksheet 'Tageswerte' sollen die Werte wie folgt nach 'Bf1 Eingaben 2012.xls' Sheet des aktuellen Monats (z.B. Mrz) transferiert werden: so wirds noch komplizierter aber hier wird mir dann auch klar wie wichtig eine deutliche Aufgabenstellung ist...
von Tageswerte nach Mrz _______________________________________________
wenn B = nicht Stade dann von C nach F wenn B = Stade von C nach G 'es wird unterschiedenzwischen Stade und allem anderen wenn E = nicht Stade dann von F nach F wenn E = Stade von F nach G wenn H = nicht Stade dann von I nach F wenn H = Stade von I nach G 'In G wird die Summe von B, E und H gebildet P nach H Wenn Q = nicht Stade dann von R nach I wenn Stade von R nach J Wenn T = nicht Stade dann von U nach I wenn Stade von U nach J 'In J wird die Summe von Q und T gebildet Y nach K L ist von Mo-Fr immer 200 CL nach M und N P ist von Mo-Fr immer 25 Q ist von Mo-Fr immer 24 BN nach AF BO nach AG BR nach AH BR nach AH BS nach AI .....
Ist in den Zellen kein numerischer Wert eingetragen so soll die Übertragung nicht statt finden (bzw. nur Werte größer 0).
Das ganze soll idealerweise per cmd Box aus einer beliebigen Excel Datei gestartet werden können ist das nicht möglich dann aus 'Tagesbericht BF1.xls'. Die Dateien 'Tagesbericht BF1.xls' und 'BF1 Eingaben 2012.xls' sollen, wenn nicht offen, geöffnet werden und liegen nicht auf C: und sind auch nicht im gleichen Ordner untergebracht.
_______________________________________________
Das Problem ist auf die anderen Dateien für mich adaptierbar, deswegen klammere ich die dritte erwähnte Datei mal aus.
Nochmal besten Dank für die Unterstützung, Grüße aus Kerken!
Anzeige
AW: Klärung der Aufgabenstellung
31.03.2012 12:44:28
Heiko
Ich habe die Antwort per email an mein smartphone geschickt und dann hier eingefügt. Deswegen ist die formatierung äusserst unglücklich. Sorry dafür!
Klärung der Aufgabenstellung Nr. 2
31.03.2012 19:51:34
Erich
Hallo Heiko,
die Formatierung deines Posts ist nicht so wesentlich, ...
"Ich entscheide mich für Variante A da ich sonst Ärger bekommen könnte wenn ich Bilder unserer Daten online Stelle"
a) Es wäre gar nicht sinnvoll, Bilder online zu stellen.
b) Natürlich würdest du die Daten anonymisieren, gegen gegriffene (Zufalls-?)daten austauschen - ohne Ärger.
Angesichts der folgenden Fragen wirst du IMHO, um sinnvolle Hilfe zu bekommen,
wohl doch zwei Beispielmappen erstellen müssen.
"Das Datum der Quelldatei läuft das ganze Jahr in einem Sheet fort,
zwischen den Monaten gibt es allerdings Unterbrechungen."
Wie sieht Spalte A genau aus?
"Es sollen immer nur Werte =heute-1 (also von gestern) übertragen werden."
Das bedeutet wohl, dass die Prozedur jeden Tag laufen muss.
Was ist mit Wochenenden, Feiertagen, Krankheit des Bearbeiters, Stromausfall, Vergessen, ...?
Die Welt ist nicht perfekt, Menschen und Maschinen machen Fehler.
"von Tageswerte nach Mrz ___________________________________"
Die Zeile verstehe ich nicht.
"wenn B = nicht Stade dann von C nach F wenn B = Stade von C nach G"
Sorry - aber was soll man mit diesem Abschnitt anfangen? Erst mal mühsam analysieren?
Das solltest du übersichtlicher und klarer aufschreiben.
Was ist Stade? Ein feststehender Text?
Meinst du z. B.:
Wenn B5="Stade", übertrage C5 in Spalte G, sonst in Spalte F
"In G wird die Summe von B, E und H gebildet"
In Quelle oder Ziel?
Können in B Zahlen stehen? Bislange sehe ich nur: Bx="Stade" oder Bx ungleich "Stade".
"L ist von Mo-Fr immer 200 CL nach M und N P ist von Mo-Fr immer 25 Q ist von Mo-Fr immer
24 BN nach AF BO nach AG BR nach AH BR nach AH BS"
Sorry - was soll das denn bedeuten?
"Das ganze soll idealerweise per cmd Box aus einer beliebigen Excel Datei gestartet werden können"
Was meinst du mit cmd Box?
Warum nur aus beliebigen Exceldateien? Warum nicht auch Outlook oder Word?
Woher soll "Excel" deine cmd Box kennen?
Also Start aus 'Tagesbericht BF1.xls'. D. h., dass der Benutzer diese Mappe geöffnet hat und was dann tut?
"liegen nicht auf C: und sind auch nicht im gleichen Ordner untergebracht"
Es ist nicht so spannend, wo die Mappen nicht liegen, oder? Ja wo liegen sie denn?
Der Dateiname 'BF1 Eingaben 2012.xls' enthält das Jahr. Also hängt es wohl vom Datum in Quellspalte A ab,
welche die richtige Ausgabemappe ist.
Damit sind nicht nur die Zielblätter variabel, sondern auch die Zielmappen.
Keine Antwort auf meine Fragen habe ich gefunden zu:
Was ist mit Daten, die bereits in den Zielblättern stehen?
Sollen die neuen Daten darunter geschrieben werden? (Dies ist beantwortet - in Zeile des Datums)
Oder sollen die Altdaten überschrieben werden?
In welcher Form könntest du dir die Hilfe vorstellen?
Unterstützung beim Programmieren = Weiterentwickeln deiner Ansätze? (Dann solltest du die posten...)
Fertiges Programm? Das kann leicht zur Auftragsprogrammierung werden.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: Klärung der Aufgabenstellung Nr. 2
31.03.2012 22:56:47
Heiko
Hallo Heiko,
die Formatierung deines Posts ist nicht so wesentlich, ...
-- in Teilen hat es dann doch zur verwirrung geführt. Jetzt von zu Hause sollte es aber funktionieren
Angesichts der folgenden Fragen wirst du IMHO, um sinnvolle Hilfe zu bekommen,
wohl doch zwei Beispielmappen erstellen müssen.
"Das Datum der Quelldatei läuft das ganze Jahr in einem Sheet fort,
zwischen den Monaten gibt es allerdings Unterbrechungen."
Wie sieht Spalte A genau aus?
"Es sollen immer nur Werte =heute-1 (also von gestern) übertragen werden."
Das bedeutet wohl, dass die Prozedur jeden Tag laufen muss.
Was ist mit Wochenenden, Feiertagen, Krankheit des Bearbeiters, Stromausfall, Vergessen, ...?
Die Welt ist nicht perfekt, Menschen und Maschinen machen Fehler.
--- die Aufgabe ist Routine und wird jeden morgen durchgeführt, wir sind ein vollkontinuierlicher Betrieb und entsprechend ist eigentlich sicher gestellt, dass die Aufgabe erledigt wird. Sollte es wider erwarten doch einmal vergessen werden, habe ich im Moment nicht den Anspruch das zu automatisieren. Dann muss mal von Hand nachgetragen werden. Wenn ich dann mal Fuss gefasst habe in VBA dann wird erweitert.
"von Tageswerte nach Mrz ___________________________________"
Die Zeile verstehe ich nicht.
--- hier war der Vormatierungshund, das sollte heissen:
folgende Daten stehen in 'Tagesbericht BF1.xls' Sheet 'Tageswerte' und sollen nach 'BF1 Eingaben 2012.xls' Sheet 'Mrz'
"wenn B = nicht Stade dann von C nach F wenn B = Stade von C nach G"
Sorry - aber was soll man mit diesem Abschnitt anfangen? Erst mal mühsam analysieren?
Das solltest du übersichtlicher und klarer aufschreiben.
Was ist Stade? Ein feststehender Text?
Meinst du z. B.:
Wenn B5="Stade", übertrage C5 in Spalte G, sonst in Spalte F
--- genau
"In G wird die Summe von B, E und H gebildet"
In Quelle oder Ziel?
Können in B Zahlen stehen? Bislange sehe ich nur: Bx="Stade" oder Bx ungleich "Stade".
--- was hab ich denn da geschrieben? Muss ich morgen nochmal anschauen
"L ist von Mo-Fr immer 200 CL nach M und N P ist von Mo-Fr immer 25 Q ist von Mo-Fr immer
24 BN nach AF BO nach AG BR nach AH BR nach AH BS"
Sorry - was soll das denn bedeuten?
---Hier stolpern wir auch wieder über die Formatierung
L (Ziel) ist von Mo-Fr immer 200 'hierbei handelt es sich um eine Kontrollmessung die nur an Werktagen in Betrieb ist
wenn ich weiss wie ich letzteres programmiere klappts dann auch für den Rest, denke ich.
"Das ganze soll idealerweise per cmd Box aus einer beliebigen Excel Datei gestartet werden können"
Was meinst du mit cmd Box?
Warum nur aus beliebigen Exceldateien? Warum nicht auch Outlook oder Word?
Woher soll "Excel" deine cmd Box kennen?
--- ich meinte starten mit einer Befehlsschalfläche. Aus Excel weil das ohnehin geöffnet ist.
Also Start aus 'Tagesbericht BF1.xls'. D. h., dass der Benutzer diese Mappe geöffnet hat und was dann tut?
--- die Befehlsschaltfläche anklicken
"liegen nicht auf C: und sind auch nicht im gleichen Ordner untergebracht"
Es ist nicht so spannend, wo die Mappen nicht liegen, oder? Ja wo liegen sie denn?
--- s:\bde\Berichte
Der Dateiname 'BF1 Eingaben 2012.xls' enthält das Jahr. Also hängt es wohl vom Datum in Quellspalte A ab,
welche die richtige Ausgabemappe ist.
Damit sind nicht nur die Zielblätter variabel, sondern auch die Zielmappen.
Für das neue Jahr würde ich das ganze dann einfach entsprechend abändern.
Keine Antwort auf meine Fragen habe ich gefunden zu:
Was ist mit Daten, die bereits in den Zielblättern stehen? --- diese bleiben erhalten
Sollen die neuen Daten darunter geschrieben werden? (Dies ist beantwortet - in Zeile des Datums)
Oder sollen die Altdaten überschrieben werden? --- nein
In welcher Form könntest du dir die Hilfe vorstellen?
Unterstützung beim Programmieren = Weiterentwickeln deiner Ansätze? (Dann solltest du die posten...)
--- ich hab keinen blassen schimmer wie ich das Problem angehen kann. Ich denke wenn ich die Basics hätte, einen Ansatz, könnte ich versuchen darauf aufzubauen.
Fertiges Programm? Das kann leicht zur Auftragsprogrammierung werden.
--- das solls nicht sein. Es geht um Hilfe zur Selbsthilfe
ich hoffe damit kannst du schon was anfangen. Morgen früh baue ich an Beispieltabellen wenn du die noch brauchst.
1000 Dank nochmal für die Mühe die du dir machst.
Grüße aus Kerken sendet Heiko
Anzeige
Klärung Nr. 3
01.04.2012 09:05:43
Erich
Hallo Heiko,
zunächst eine Bitte: Könntest du im Forumsbeitrag bitte die inflationär vielen Leerzeilen vermeiden?
Meine Maus hat schon wunde Füße vom Scrollen. ;-)
Ein paar Bemerkungen:
A)
"Was ist mit Daten, die bereits in den Zielblättern stehen? --- diese bleiben erhalten
Oder sollen die Altdaten überschrieben werden? --- nein"
Situation: Gestrige Daten wurden übertragen.
Danach wird festgestellt, dass sie unvollständig und teils falsch sind.
Die Korrekturen erfolgen in der Quellmappe. Dann soll wieder übertragen werden.
Hier wäre ein Überschreiben der Altdaten wohl doch wünschenswert.
(Dabei auch darauf achten, dass evtl. alte Werte nur zu löschen sind - weil Neuwert = 0.)
Andere Situation: Gestrige Daten wurden übertragen. Dann wird versehentlich noch einmal gestartet.
Hier ist egal, ob noch einmal übertragen wird oder nicht.
Welche dieser Situationen vorliegt, weiß die Prozedur nicht!
B)
"Damit sind nicht nur die Zielblätter variabel, sondern auch die Zielmappen."
"Für das neue Jahr würde ich das ganze dann einfach entsprechend abändern."
Die Zielmappe (Jahr) ergibt sich nebenbei mit, wenn das Zielblatt (Monat) bestimmt wird.
Es wäre Unfug, da das nicht zu nutzen und jährlich das Programm unnötig "abzuändern".
C)
"liegen nicht auf C: und sind auch nicht im gleichen Ordner untergebracht"
"Es ist nicht so spannend, wo die Mappen nicht liegen, oder? Ja wo liegen sie denn?"
--- s:\bde\Berichte"
Welche Mappen liegen da? Nun doch alle im selben Ordner?
D)
Wenn du mit Makroaufzeichnung mal den Abblauf durchspielst, ergeben sich daraus schon "Basics" oder erste Ansätze.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: Klärung Nr. 3
01.04.2012 11:45:43
Heiko
Hallo Erich, A)wird nach der Übertragung festgestellt, dass die Daten nicht korrekt sind sollen natürlich die Daten des betreffenden Tages ersetzt werden. Das bedeutet, sollte die Prozedur noch mal gestartet werden so darf sich der Vorgang auch ruhig wiederholen. Ich habe eben versucht via Makroaufzeichung einen Ansatz zu erhalten. Da ich aber keine Formel in der Zielmappe haben möchte habe ich keinen gescheiten Ansatz gefunden. Hier mein Versuch: <pre>Sub Übertragen() ' ' Übertragen Makro '
' Workbooks.Open Filename:= _ "S: \Schicht E\#Quelle.xls" Workbooks.Open Filename:= _ "S: \Schicht E\#Ziel.xls" Windows("#Quelle.xls").Activate Range("C69").Select ActiveCell.FormulaR1C1 = "55" Range("F69").Select Windows("#Ziel.xls").Activate Range("G8").Select ActiveCell.FormulaR1C1 = "55" Range("G9").Select End <pre>Sub Mit copy & paste kann man nur einzelne Werte übertragen. Wenn ich eine Summe bilde landet eine Formel im Ziel. Ich weiss man kann auch Daten aus anderen Quellen einfügen ohne eine Formel in die Zielzelle einzufügen. Aber wie? Und schon gar keinen Ansatz habe ich auf die Frage wie kann ich das variabel machen. Besagte Übertragung der Daten des Vortages. Des weiteren kann man in diesem Fall auch Werte von Hand korrigieren ohne Formeln zu überschreiben. Besten Falls wird kontrolliert ob nicht nur die Daten des Vortages eingegeben sind, sondern alle Möglichkeiten bis zur letzten Eingabe (aber nur der vorgesehenen Zellen, es gibt Zellen die von anderer Stelle bearbeitet werden und vom Programm ignoriert werden sollten). B) ich bin für alles offen was die Situation leichter macht. Allerdings möchte ich auch begreifen was ich schreibe und da ich noch nicht einmal einen Freischwimmer für VBA habe gilt es langsam zu beginnen. C)Da ich erst mal eine Datei ausgeklammert habe betrifft es nur noch einen Ordner, in welchem z.Z. die Dateien #Quelle.xls und #Ziel2012.xls liegen, das sind nun meine Probanden,
Anzeige
Klärung Nr. 4
01.04.2012 12:46:52
Erich
Hallo Heiko,
was du da beim Aufzeichnen getan hast, hat aber mit Kopieren oder Copy/Paste nicht viel zu tun gehabt.
Du hast Mappe und Blatt gewechselt und in zwei Zellen die Zahl 55 eingegeben. Mehr wohl nicht.
Wenn du mal die Makrioaufzeichnung anwirfst und dann einfach so vorgehst, wie du das manuell in Excel tun würdest,
kommt etwas mehr raus. Ich meine:
Wechseln zur Quellmappe (ins Quellblatt)
markieren des zu kopierenden Bereichs (auch mehrere Zellen möglich)
kopieren
wechseln zur Zielmappe (ins Zielblatt)
markieren der Zelle, in der mit dem Einfügen begonnen werden soll
bearbeiten - Inhalte einfügen - nur Werte (wie genau, hängt von der XL-Version ab)
Dann kommt so etwas wie Makro1 raus, das man dann weiter bearbeiten muss:

Option Explicit
Sub Makro1()                     ' liefert die Makroaufzeichnung
Windows("Quellmappe.xls").Activate
Range("A2:B8").Select
Selection.Copy
Windows("Heiko-Ziel.xlsm").Activate
Range("C6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
Sub Makro2()                     ' wie Makro1, aber ohne Activate und Select
Workbooks("Quellmappe.xls").Sheets(1).Range("A2:B8").Copy ' in Zwischenablage
Workbooks("Heiko-Ziel.xlsm").Sheets(2).Range("C6").PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End Sub
Sub Makro3()       ' ohne Copy, Übertragung per einfacher Zuweisung (Gleichsetzung)
' Range("A2:B8") soll übertragen werden, also 7 Zeilen, 2 Spalten
Workbooks("Heiko-Ziel.xlsm").Sheets(2).Range("C6").Resize(7, 2) = _
Workbooks("Quellmappe.xls").Sheets(1).Range("A2").Resize(7, 2).Value
End Sub
Etwas klarer?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: Klärung Nr. 4
03.04.2012 01:04:12
Heiko
Hallo Erich
hier mein "Ansatz". Mal sehen ob wir darauf aufbauen können.
https://www.herber.de/bbs/user/79641.xls
https://www.herber.de/bbs/user/79642.xls
Im Moment hab ich nicht besonders viel Zeit und von der Arbeit klappts auch net immer, deswegen heisst das wohl auch Arbeit.
Jetzt werde ich versuchen deine Makros in meine Tabellen zu implementieren.
Viele Grüße!
AW: Klärung Nr. 4
06.04.2012 09:07:54
Heiko
Hallo,
ich denke was ich gebastelt hab ist ziemlich kompliziert aber es funktioniert erstmal, für eine bestimmte Zeile.
Wie es weiter geht wenn es ein bestimmtes Datum sein soll hoffe ich noch rauszufinden.
Was mir nicht gelungen ist dem Programm beizubringen Nullwerte bzw leere Zellen nicht zu übertragen.
Wenn ich eine leere Zelle kopiere entsteht im Ziel eine 0, die Zielzelle soll in dem Fall aber keinen Wert enthalten (auch wenn 0 nicht viel ist)
Hier mein Code... bis jetzt:
<pre>Sub Übertragen1()
' Übertragen Makro
'
' Öffnen Zieldatei
ChDir "C:\Users\Juko\Desktop\BA"
Workbooks.Open Filename:= _
"C:\Users\Juko\Desktop\BA\Ziel2012.xls"
'Inhalte übertragen
'Laufzeit Waagen
Windows("Quelle.xls").Activate
Range("Y98").Copy
Windows("Ziel2012.xls").Activate
Range("H37").Select
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
Windows("Quelle.xls").Activate
Range("P98").Copy
Windows("Ziel2012.xls").Activate
Range("K37").Select
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
End Sub</pre>
<pre>Sub TonnageWaagen()
Windows("Quelle.xls").Activate
' LöserMix Summe
Range("IS98").Select
ActiveCell.FormulaR1C1 = _
"=SUM(IF(RC[-251]=""stade"",0,RC[-250]),(IF(RC[-248]=""stade"",0,RC[-247])),(IF(RC[-245]=""stade"",0,RC[-244])))"
' LöserStade Summe
Range("IT98").Select
ActiveCell.FormulaR1C1 = _
"=SUM(IF(RC[-252]=""Stade"",RC[-251],0),(IF(RC[-249]=""stade"",RC[-248],0)),(IF(RC[-246]=""stade"",RC[-245],0)))"
' DKZMix Summe
Range("IU98").Select
ActiveCell.FormulaR1C1 = _
"=SUM(IF(RC[-238]=""stade"",0,RC[-237]),(IF(RC[-235]=""stade"",0,RC[-234])))"
' DKZStade Summe
Range("IV98").Select
ActiveCell.FormulaR1C1 = _
"=SUM(IF(RC[-239]=""stade"",RC[-238],0),(IF(RC[-236]=""stade"",RC[-235],0)))"
End Sub</pre>
<pre>Sub Übertragen2()
'Waagen übertrag
Windows("Quelle.xls").Activate
Range("iv98").Select
Selection.Copy
Windows("Ziel2012.xls").Activate
Range("g37").Select
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=True, Transpose:=False
'
Windows("Quelle.xls").Activate
Range("iU99").Select
Selection.Copy
Windows("Ziel2012.xls").Activate
Range("f37").Select
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=True, Transpose:=False
'
Windows("Quelle.xls").Activate
Range("it98").Select
Selection.Copy
Windows("Ziel2012.xls").Activate
Range("j37").Select
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=True, Transpose:=False
'
Windows("Quelle.xls").Activate
Range("is98").Select
Selection.Copy
Windows("Ziel2012.xls").Activate
Range("i37").Select
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=True, Transpose:=False
End Sub</pre>
<pre>Sub Laugen()
'Laugedaten übertrag
Windows("Quelle.xls").Activate
Range("bp98").Select
Selection.Copy
Windows("Ziel2012.xls").Activate
Range("af37").Select
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
'
Windows("Quelle.xls").Activate
Range("bq98").Select
Selection.Copy
Windows("Ziel2012.xls").Activate
Range("ag37").Select
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
'
Windows("Quelle.xls").Activate
Range("bw98").Select
Selection.Copy
Windows("Ziel2012.xls").Activate
Range("ah37").Select
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
'
Windows("Quelle.xls").Activate
Range("bu98").Select
Selection.Copy
Windows("Ziel2012.xls").Activate
Range("ai37").Select
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
'
Windows("Quelle.xls").Activate
Range("bx98").Select
Selection.Copy
Windows("Ziel2012.xls").Activate
Range("aj37").Select
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
'
Windows("Quelle.xls").Activate
Range("by98").Select
Selection.Copy
Windows("Ziel2012.xls").Activate
Range("ak37").Select
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
'
Windows("Quelle.xls").Activate
Range("CN98").Select
Selection.Copy
Windows("Ziel2012.xls").Activate
Range("M37:N37").Select
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
End Sub</pre>
<pre>Sub LöschenTemps()
Windows("Quelle.xls").Activate
Range("IS98:IV98").ClearContents
Range("B69").Select
End Sub</pre>
Abgerufen werden die Sub´s über einen Button in der Quelldatei
Rückmeldung ware nett! - Grüße aus Kerken von Heiko
Anzeige
AW: Klärung Nr. 4
06.04.2012 09:18:34
Hajo_Zi
Hallo Heiko,
Du möchtest Deinen Code vielleicht bereinigen.
Select, Activate usw. ist in VBA zu 99,9% nicht notwendig.
Der Cursor ist kein Hund der überall rumgeführt werden muss.

Option Explicit
Sub Übertragen1()
' Übertragen Makro
' Öffnen Zieldatei
ChDir "C:\Users\Juko\Desktop\BA"
Workbooks.Open Filename:= _
"C:\Users\Juko\Desktop\BA\Ziel2012.xls"
'Inhalte übertragen
'Laufzeit Waagen
Workbooks("Quelle.xls").Range("Y98").Copy
With Workbooks("Ziel2012.xls")
.ReadOnly("H37").PasteSpecial Paste:=xlPasteValues
End With
Workbooks("Quelle.xls").Range("P98").Copy
With Windows("Ziel2012.xls")
.Range("K37").PasteSpecial Paste:=xlPasteValues
End With
End Sub

Die Null bei kopieren des Wertes kannst Du nicht verhindern. Schalte die Anzeige von 0 aus oder formatiere die Zelle entsprechend.

Anzeige
AW: Klärung Nr. 4
06.04.2012 09:24:00
Hajo_Zi
Hallo Heiko,
eins habe ich übersehen. Die Tabelle solltest Du auch angeben.
Gruß Hajo
AW: Klärung Nr. 4
06.04.2012 14:25:38
Heiko
Hallo Erich,
das hast du vollkommen richtig erkannt, es ist wirklich gar nicht bei mir angekommen, sorry, das lag wohl an der Uhrzeit. Da werde ich mal nach bearbeiten. Diese "pre"s wurden erzeugt als ich den Post hochgeladen hab. Hatte vor und hinter dem Code 'welle' f 'welle' geschrieben und dann wurde das so dargestell. Ich dachte mir, dass das Wesentliche trotzdem verstanden würde.
Auch dir Hajo danke für den Tipp. Mit null ausschalten hab ich schon versucht, das ist nur leider nicht zielführend da in der Zieltabelle Schnitte ermittelt werden die sich nicht auf nullen beziehen dürfen. Ich muss dann mit if then arbeiten, das hab ich im Ansatz auch schon versucht aber es funktioniert noch nicht so wie ich mir das wünsche.
Ihr hört von mir!
ohne Select u.a und <pre>
06.04.2012 10:06:01
Erich
Hi Heiko,
in meinem virogen Post ("Klärung Nr. 4") hatte ich dir näherzubringen versucht, wie man mit der Makroaufzeichnung
Code erzeugt und den dann weiter bearbeitet, um von Activates und Selects wegzukommen.
Ich hatte geshrieben: "kommt so etwas wie Makro1 raus, das man dann weiter bearbeiten muss".
Das ist in deiner Gedankenwelt offentlichtlich überhaupt nicht angekommen. :-(
Noch eine Bemerkung zur Code-Wiedergabe hier im Forum:
Du schreibst wohl vor und nach (mit "/") dem Code das Wort "pre" in Kleiner-/Größer-Klammern.
Aber das hat keinen Effekt - das pre wird als normaler Text mit ausgegeben.
Wie erzeugst du diese Kleiner-/Größer-Klammern hin? Mit & lt bzw. gt und Semikolon? Das wäre falsch.
Besser wäre, die Kleiner-/Größer-Klammern ganz normal als Kleiner-/Größer-Zeichen hinzuschreiben.
Deinen Code hat Hajo ja schon kommentiert.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
weitere Fragen
07.04.2012 12:12:01
Heiko
Ich mache grade mehrere Dinge gleichzeitig... ein anderes Problem, wozu ich keine Lösung gefunden habe ist: kann ich eine Datei per VBA öffnen und die Frage: Soll die Datei schreibgeschützt geöffnet werden 'Ja', 'Nein' oder 'Abbrechen' mit 'Nein' beantworten.
Das andere Programm habe ich etwas schlanker gemacht, ohne select und sowas ist es gleich viel übersichtlicher. Wollte das Ergebnis (stolz & dankbar gleichermaßen) posten, ich weiss nur nicht wo es sich verlaufen hat, auf dem Weg von der Arbeit zu meinem Laptop. Damit wäre es vom Prinzip auch soweit, dass man an die eigentliche Aufgabenstellung gehen könnte.
Für das Problem wie kann ich Eintragungen nur an Werktagen realisieren habe ich schon einen Ansatz gefunden. So wie ich das verstanden habe vergibt VBA für die Tage von Mo-So Zahlen von 1-7, da kann man mit IF Then arbeiten denke ich. Und ich glaube es gibt sogar eine Möglichkeit die Feiertage auszuklammern.
Aber das sind erstmal nur Gedanken.
@Erich:
"Noch eine Bemerkung zur Code-Wiedergabe hier im Forum:
Du schreibst wohl vor und nach (mit "/") dem Code das Wort "pre" in Kleiner-/Größer-Klammern.
Aber das hat keinen Effekt - das pre wird als normaler Text mit ausgegeben.
Wie erzeugst du diese Kleiner-/Größer-Klammern hin? Mit & lt bzw. gt und Semikolon? Das wäre falsch.
Besser wäre, die Kleiner-/Größer-Klammern ganz normal als Kleiner-/Größer-Zeichen hinzuschreiben."
Ich hab da wie gesagt nur das f mit Welle davor und dahinter, über und unter das Programm geschrieben und dann wurde das von alleine abgewaqndelt.
Viele Grüße vom Niederrhein! Heiko
AW: weitere Fragen
10.04.2012 23:18:01
Heiko
Hallo!
So sieht die Sache nun aus:

Sub Übertragen1()
' Übertragen Makro
'   Öffnen Zieldatei
ChDir "C:\Users\Juko\Desktop\BA"
Workbooks.Open Filename:= _
"C:\Users\Juko\Desktop\BA\Ziel2012.xls"
Windows("ziel2012").Activate
'Inhalte übertragen
'Laufzeit Waagen
Workbooks("Quelle.xls").Sheets(1).Range("Y98").Copy
Workbooks("Ziel2012.xls").Sheets("mrz").Range("H37").PasteSpecial _
Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
Windows("Quelle.xls").Activate
Workbooks("Quelle.xls").Sheets(1).Range("P98").Copy
Workbooks("Ziel2012.xls").Sheets(3).Range("K37").PasteSpecial _
Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
End Sub
Sub TonnageWaagen()
Windows("Quelle.xls").Activate
' LöserMix Summe
Range("IS98").Select
ActiveCell.FormulaR1C1 = _
"=SUM(IF(RC[-251]=""stade"",0,RC[-250]),(IF(RC[-248]=""stade"",0,RC[-247])),(IF(RC[-245] _
=""stade"",0,RC[-244])))"
' LöserStade Summe
Range("IT98").Select
ActiveCell.FormulaR1C1 = _
"=SUM(IF(RC[-252]=""Stade"",RC[-251],0),(IF(RC[-249]=""stade"",RC[-248],0)),(IF(RC[-246] _
=""stade"",RC[-245],0)))"
' DKZMix Summe
Range("IU98").Select
ActiveCell.FormulaR1C1 = _
"=SUM(IF(RC[-238]=""stade"",0,RC[-237]),(IF(RC[-235]=""stade"",0,RC[-234])))"
' DKZStade Summe
Range("IV98").Select
ActiveCell.FormulaR1C1 = _
"=SUM(IF(RC[-239]=""stade"",RC[-238],0),(IF(RC[-236]=""stade"",RC[-235],0)))"
End Sub
Sub Übertragen2()
'Waagen übertrag
Workbooks("Quelle.xls").Sheets(1).Range("iv98").Copy
Workbooks("Ziel2012.xls").Sheets(3).Range("g37").PasteSpecial _
Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
Workbooks("Quelle.xls").Sheets(1).Range("IU98").Copy
Workbooks("Ziel2012.xls").Sheets(3).Range("F37").PasteSpecial _
Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
Workbooks("Quelle.xls").Sheets(1).Range("IT98").Copy
Workbooks("Ziel2012.xls").Sheets(3).Range("J37").PasteSpecial _
Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
Workbooks("Quelle.xls").Sheets(1).Range("IS98").Copy
Workbooks("Ziel2012.xls").Sheets(3).Range("I37").PasteSpecial _
Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
End Sub
Sub Laugen()
'Laugedaten übertrag
'Workbooks("Ziel2012.xls).sheets(3).Range("AF37").Resize(1, 2) = _
'Workbooks("Quelle.xls).Sheets(1).Range("BP98").Resize(1, 1).Value
'hier wollte ich 'Sub Makro3()' verwenden. Das liefert aber: Fehler beim Kompilieren,  _
erwartet
'Listentrennzeichen oder )
Workbooks("Quelle.xls").Sheets(1).Range("BP98").Copy
Workbooks("Ziel2012.xls").Sheets(3).Range("AF37").PasteSpecial _
Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
Workbooks("Quelle.xls").Sheets(1).Range("BQ98").Copy
Workbooks("Ziel2012.xls").Sheets(3).Range("AG37").PasteSpecial _
Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
Workbooks("Quelle.xls").Sheets(1).Range("BW98").Copy
Workbooks("Ziel2012.xls").Sheets(3).Range("AH37").PasteSpecial _
Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
Workbooks("Quelle.xls").Sheets(1).Range("BU98").Copy
Workbooks("Ziel2012.xls").Sheets(3).Range("AI37").PasteSpecial _
Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
Workbooks("Quelle.xls").Sheets(1).Range("BX98").Copy
Workbooks("Ziel2012.xls").Sheets(3).Range("AJ37").PasteSpecial _
Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
Workbooks("Quelle.xls").Sheets(1).Range("BY98").Copy
Workbooks("Ziel2012.xls").Sheets(3).Range("AK37").PasteSpecial _
Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
Workbooks("Quelle.xls").Sheets(1).Range("CN98").Copy
Workbooks("Ziel2012.xls").Sheets(3).Range("M37:N37").PasteSpecial _
Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
End Sub
Sub LöschenTemps()
Windows("Quelle.xls").Activate
Range("IS98:IV98").ClearContents
Range("B69").Select
End Sub
Jetzt geht es um das Hauptproblem! Wie mache ich dem Programm klar, dass diese Aktion sich immer auf die Zeile mit dem Datum vom Vortag bezieht? Ich lade nochmal die Quell und Zieldatei beispielhaft hoch, damit ihr sehen könnt wie der Sachverhalt genau aussieht.
Hilfe wäre super. Vielen Dank schonmal im Voraus.
Gruß Heiiko
AW: Klärung der Aufgabenstellung Nr. 2
01.04.2012 09:06:06
Heiko
Hallo Erich, also es sollte heissen: in G (Ziel) wird die Summe aus C, F und I (Quelle) gebildet. Was den File upload angeht bin ich an der Kommunikationvon Smart Phone und Server gescheitert. Gerne sende ich dir diese per Mail mit der Erlaubnis diese hier hoch zu laden.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige