Meine VBA Kenntnisse sind aktuell sehr bescheiden, daher bräuchte ich eure Hilfe. Und ja, ich hab online schon viel rumgesucht, auf englischen und deutschen Seiten. Aber genau das was ich suche habe ich nicht gefunden.
Ich möchte für meine Arbeit eine Tabelle erstellen, die automatisch nach bestimmten Kriterien von der Haupttabelle in die spezifischen Tabellen kopiert:
In der Haupttabelle (Blatt 1) werden Patienten inklusive der Station aufgeführt. Das Makro soll in einer bestimmten Spalte (6) nach den Stationen suchen und dann die komplette Zeile in das jeweile Tabellenblatt in eine identische Tabelle einfügen. Das habe ich bis hierhin auch hingekriegt. Leider kopiert es die Zeilen nicht von oben nach unten (also in die jeweils erste leere Zeile), sondern orientiert sich danach, in welcher Zeile es in der Haupttabelle steht. Wenn die erste Zeile mit der Station B 2 in der Haupttabelle also in Zeile 15 vorkommt, wird sie auch im Tabellenblatt der B 2 in Zeile 15 kopiert und vorher habe ich 14 leere Zeilen. Das ist halt sehr unübersichtlich.
Filterfunktion würde ich lieber nicht nehmen. Es werden viele Leute damit arbeiten und ich möchte die Möglichkeiten, aus Versehen etwas zu verstellen soweit es geht minimieren. In der Haupttabelle ist ein Button für das Makro zum Aktualisieren.
Mein Code (einer davon) sieht aktuell so aus:
Sub KopieZeilen()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
With Tabelle1
ZeileMax = .UsedRange.Rows.Count
n = .Cells(.Rows.Count, 1).End(xlUp).Row
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 6).Value = "A 1" Or .Cells(Zeile, 6).Value = "A1" Then
.Rows(Zeile).Copy Destination:=Tabelle2.Rows(n)
n = n + 1
ElseIf .Cells(Zeile, 6).Value = "B 2" Or .Cells(Zeile, 6).Value = "B2" Then
.Rows(Zeile).Copy Destination:=Tabelle3.Rows(n)
n = n + 1
Else
.Rows(Zeile).Copy Destination:=Tabelle4.Rows(n)
n = n + 1
End If
Next Zeile
End With
End Sub
Hier die Testdatei:
https://www.herber.de/bbs/user/138903.xlsm