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

makroanpassen

makroanpassen
04.12.2017 14:35:33
Werner
Hallo,
irgendwie kann ich scheinbar bei der Arbeit nicht antworten im Forum, oder ich bin grad zu blöd dazu (vermutlich letztes)
es geht darum das ich aus einer Tabelle Daten filtere per Makro und an in den nächsten Monat an entsprechender stelle kopiere. Tabellen 1-5, es wird gefiltert und den die Zeilen markiert und von Januar auf Februar etc. kopiert. das funktioniert soweit mit dem Makro. nun das Problem es gibt auch Daten welche kopiert werden müssen aber nicht in den folge Monat sondern in eine Jahresübersicht. Da hier nun die Daten aber immer weiter ansteigen funktioniert das nicht so wie bei vorherigen Makro. das Filtern schon, aber nicht das kopieren. da ja wenn ich im Februar das Makro starte, die Daten welche bei kopiert werden die des Januar überschreiben würden. das Makro brächte also einen Zusatz das es immer in die nächste freie Spalte schreiben soll. Durch die Filterung stehen auch immer nur die Daten noch in der Tabelle welche kopiert werden müssen. Kann man die Makros so anpassen das automatisch auch nur die angewählt werden, im Moment markiere ich den ganzen Bereich, also auch die Leerzeilen und kopiere alles, also ,markiere ich auch den ganzen Bereich in der Zieltabelle vorm kopiervorgang.
Daten aus Tabelle:
Clos. / MRSA / MRGN /Tbc / Sonstige
müssen entsprechend von Monat zu Monat übertragen werden und in eine Jahresübersicht
Daten sind:
Aufnahmenr /Station/Name/Geburtsdatum/Aufnahmedatum/IsoAnfang/Keim/IsoEnde/Bemerkung
sortiert wird durch Info ob IsoEnde (bzw. Pat entlassen ist), die Daten werden einfach durch den Filter gejagt und es bleiben dann nur die entsprechenden Datensätze übrig welche kopiert werden müssen.
für den Monatsübertrag kein Häkchen vorhanden / im folge Monat trage ich dann noch per Hand in eine Zeile (Übertrag aus Vormonat)ein X ein (Brauch ich damit in der Übersicht alles richtig berechnet wird) / hier sind die Daten immer einfach oben einzutragen, weitere werden dann im laufe des Monats drunter eingetragen
Für den Jahresübertrag ist automatisch ein Häkchen gesetzt / hier halt das Problem das sich da ja immer mehr Daten Sammeln und immer fortlaufen kopiert werden muss.
das Makro (für den Monatsübertrag) per Recorder aufgezeichnet:
Sub ÜbertragJanuar()
' ÜbertragJanuar Makro
Sheets("Clos.").Select
Range("A1:O30").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$O$32").AutoFilter Field:=15, Criteria1:="="
Range("A3:J30").Select
Selection.Copy
Windows("Februar.xlsm").Activate
Sheets("Clos.").Select
Range("A2:J30").Select
ActiveSheet.Paste
Windows("Januar.xlsm").Activate
Application.CutCopyMode = False
Selection.AutoFilter
Sheets("MRSA").Select
Range("A1:O30").Select
Range("O30").Activate
Selection.AutoFilter
ActiveSheet.Range("$A$1:$O$32").AutoFilter Field:=15, Criteria1:="="
Range("A2:J30").Select
Selection.Copy
Windows("Februar.xlsm").Activate
Sheets("MRSA").Select
Range("A2:J30").Select
ActiveSheet.Paste
Windows("Januar.xlsm").Activate
Application.CutCopyMode = False
Selection.AutoFilter
Range("P17").Select
Sheets("MRGN").Select
Range("A1:O30").Select
Range("O30").Activate
Selection.AutoFilter
ActiveSheet.Range("$A$1:$O$32").AutoFilter Field:=15, Criteria1:="="
Range("A3:J30").Select
Selection.Copy
Windows("Februar.xlsm").Activate
Sheets("MRGN").Select
Range("A2:J30").Select
ActiveSheet.Paste
Windows("Januar.xlsm").Activate
Application.CutCopyMode = False
Selection.AutoFilter
Sheets("Novo").Select
Range("A1:O30").Select
Range("O30").Activate
Selection.AutoFilter
ActiveSheet.Range("$A$1:$O$32").AutoFilter Field:=15, Criteria1:="="
Range("A2:J30").Select
Selection.Copy
Windows("Februar.xlsm").Activate
Sheets("Novo").Select
Range("A2:J30").Select
ActiveSheet.Paste
Windows("Januar.xlsm").Activate
Application.CutCopyMode = False
Selection.AutoFilter
Sheets("Tbc").Select
Range("A1:O30").Select
Range("O30").Activate
Selection.AutoFilter
ActiveSheet.Range("$A$1:$O$32").AutoFilter Field:=15, Criteria1:="="
Range("A3:J30").Select
Selection.Copy
Windows("Februar.xlsm").Activate
Sheets("Tbc").Select
Range("A2:J30").Select
ActiveSheet.Paste
Windows("Januar.xlsm").Activate
Application.CutCopyMode = False
Selection.AutoFilter
Sheets("Sonstiges").Select
Range("A1:O30").Select
Range("O30").Activate
Selection.AutoFilter
ActiveSheet.Range("$A$1:$O$32").AutoFilter Field:=15, Criteria1:="="
Range("A3:J30").Select
Selection.Copy
Windows("Februar.xlsm").Activate
Sheets("Sonstiges").Select
Range("A2:J30").Select
ActiveSheet.Paste
Windows("Januar.xlsm").Activate
Application.CutCopyMode = False
Selection.AutoFilter
Sheets("Eingabemaske").Select
End Sub
sieht chosmässig aus ich weis, aber funktioniert, dieses gibt es für jeden Monat, alles 5 Tabellen werden abgearbeitet (gefiltert/markiert/kopiert)
Danke für die Hilfe

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: makroanpassen
04.12.2017 14:53:25
Daniel
Hi
bitte erstmal das hier lesen, verstehen und anwenden.
dein Code wird dadurch nicht nur viel kürzer und übersichtlicher, sondern auch viel schneller in der Ausführung:
http://www.online-excel.de/excel/singsel_vba.php?f=78
- beim Kopieren und Einfügen sollte man das Excelspezifische Inhalte-Einfügen (VBA: PasteSpecial) verwenden und nicht das Standard-Windows einfügen.
dann kann man, wie im Link beschrieben, direkt referenzieren und muss nicht selektieren
- Beim Einfügen reicht es, die linke obere Zelle anzugeben.
für einen Kopierblock sollte der Code so aussehen:
Workbooks("Januar.xlsm").Sheets("Clos.").Range("$A$1:$O$32").AutoFilter Field:=15, Criteria1:="="
Workbooks("Januar.xlsm").Sheets("Clos.").Range("$A$2:$O$32").Copy
Workbooks("Februar.xlsm").Sheets("Clos").Range("A2").PasteSpecial xlpasteall
Workbooks("Januar.xlsm").Sheets("Clos.").Range("$A$1:$O$32").AutoFilter

Gruß Daniel
Anzeige
AW: makroanpassen
04.12.2017 14:56:16
Werner
Danke,werde mir das mal zu gemüte führen, das Makro hatte ich bislang nur per Recorder aufgezeichnet, daher so viel und so umständlich. der Code von dir ist natürlich super kurz und ja viel übersichtlicher
AW: makroanpassen
04.12.2017 15:17:16
Daniel
Hi
der Recorder ist eher ein Nachschlagewerk im Sinne eines Wörterbuches, aber kein vollständiger "Dolmetscher".
Gruß Daniel
AW: makroanpassen
05.12.2017 10:46:56
Werner
Ich habe noch zwei Fragen, sieht übrigens so wesentlich besser aus und funktioniert super
Wie ist es mit den anderen MRSA, MRGN, Tbc, Sonstige?
Erstelle ich für diese auch jeweils einen solchen 4erblock und ersetze jeweils nur "Clos." durch den anderen Begriff, also z.B. "MRSA
Workbooks("Januar.xlsm").Sheets("MRSA").Range("$A$1:$O$28").AutoFilter Field:=15, Criteria1:="="
Mit Criterial1:="=" könnte ich für die Jahresübersicht ja genauso verfahren nur hier dann
Workbooks("Januar.xlsm").Sheets("Clos.").Range("$A$1:$O$28").AutoFilter Field:=15, Criteria1:="X"
Workbooks("Januar.xlsm").Sheets("Clos.").Range("$A$2:$O$28").Copy
Workbooks("Jahr.xlsm").Sheets("Clos.").Range("A2").PasteSpecial xlPasteAll
Workbooks("Januar.xlsm").Sheets("Clos.").Range("$A$1:$O$28").AutoFilter
nur hier gins den ab februat das Problem das nicht...
Workbooks("Jahr.xlsm").Sheets("Clos.").Range("A2").PasteSpecial xlPasteAll
sondern anstelle von A2, die nächste freie Spalte sein muss z.B A5 oder A17
Anzeige
AW: makroanpassen
05.12.2017 14:48:49
Daniel
Hi
im Prinzip ja.
aber so genau habe ich mir deinen Code auch nicht angeschaut.
Gruß Daniel
AW: makroanpassen
05.12.2017 15:32:57
Werner
kann mir jemand sagen wie die Zeile/die Zeilen lauten um Range A2 entsprechend anzupassen das vorher geschaut wird wo die nächste freie Zeile ist und dann ab dort das ganze reinkopiert wird?
AW: makroanpassen
06.12.2017 15:35:06
Werner
kann mir einer sagen wie ich das anpassen muss damit immer die nächste freie Zeile für den Eintrag genutzt wird?
Workbooks("Januar.xlsm").Sheets("Clos.").Range("$A$1:$O$28").AutoFilter Field:=15, Criteria1:="X"
Workbooks("Januar.xlsm").Sheets("Clos.").Range("$A$2:$O$28").Copy
Workbooks("Jahr.xlsm").Sheets("Clos.").Range("A2").PasteSpecial xlPasteAll
Workbooks("Januar.xlsm").Sheets("Clos.").Range("$A$1:$O$28").AutoFilter
Anzeige
AW: makroanpassen
06.12.2017 16:26:33
Daniel
HI
Workbooks("Jahr.xlsm").Sheets("Clos.").Cells(Rows.Count, 1).End(xlup).Offset(1, 0).pastespecial  _
xlpasteall

von der untersten Zelle mit ENDE+PFEILHOCH nach oben springen und von dort eine Zeile nach unten.
funktioniert aber nur, wenn in Spalte A jeder Zeile einen Wert hat.
Gruß Daniel
AW: makroanpassen
07.12.2017 07:15:59
Werner
Hallo, danke dir, in Zeile A würde den immer nur dann was stehen wenn ich die Werte übertragen habe, also im Januar noch nichts im Februar die Einträge (sofern es welche gab aus Januar)im März den aus Januar und /oder Februar usw.
ich überleg schon ob ich es sonst ggf. so mache, das ich die Daten erst in einen Container (alo für jeden Monat immer z.B. 20 Zeilen Februar wäre dann Rage ("A21") März Range("A41") usw.) lade und dann entsprechend die Leerzeilen löschen lassen (also AutoFilter) und jeweils dann den Block kopiere und erst dann in Jahr Einfüge lasse. Den hätte ich im Container ja immer die Daten auch der Vormonate. es Das überschreiben mit Range("A2") wäre ja kein Problem, da immer die Daten aus den Vormonaten erneut mit kopiert werden würden.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige