Guten Tag zusammen,
Ich habe mir mal ein Code zusammengebastelt. Ich habe 0 Ahnung von VBA aber habe durch google und bisschen Logik mir selbst geholfen.
Nur hätte ich gerne den Code verbessert und eventuell komme ich durch eure Hilfe ohne Umwege an meine Lösung.
Situation:
Ich arbeite bei einer Asylberatung und wir haben 13 Schlusklassen für Deutschunterricht.
Tabelle 1 ist so aufgebaut:
Spalten: Name, Vorname, Betreuer, KlasseNov17,KlasseDez17, ..,.,,.,,.,,.,.,. KlasseDez18
Warum ich für jeden Monat eine Spalte habe ist weil die Schüler/klienten auch mal das Niveau wechseln und somit die Klasse wechseln würden. Wenn ich dies nicht so eintrage könnte man später die früheren Monate nicht nachverfolgen.
Nun müssen Anwesenheitslisten erstellt werden wo die Lehrer dann kontrollieren können ob alle Anwesend sind. Für den November 2017 ist das Tabellenblatt 2 gedacht.
Tabbelle 2:
Ansicht Seitenlayout, Querformat
und in diesem Tabellenblatt möchte ich jetzt ab Spalte A6 alle Klienten welche im November in der Klasse 1 sind aufgelistet haben. In Spalte A38 dann alle die in der klasse 2 sind.
Ich habe es nicht geschafft diese direkt ohne Umwege umzusetzen. Deswegen habe ich diesen Code benutzt:
Sub Klasse1Nov2017()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
With Tabelle1
ZeileMax = .UsedRange.Rows.Count
n = 2
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 4).Value = "1" Then
.Rows(Zeile).Copy Destination:=Tabelle3.Rows(n)
n = n + 1
End If
Next Zeile
End With
End Sub
Sub Klasse1Dez2017()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
With Tabelle1
ZeileMax = .UsedRange.Rows.Count
n = 22
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 5).Value = "1" Then
.Rows(Zeile).Copy Destination:=Tabelle3.Rows(n)
n = n + 1
End If
Next Zeile
End With
End Sub
So habe ich also ein weiteres Tabellenblatt welches mir z.b. in der Spalte 5/Tabellenblatt 1 (Nov17) alle mit einer 1 sucht und die Zeilen dann kopiert. Dann nächste Spalte also Spalte 5 und diese 20 zeilen weiter unten einfügt.
Diese sind nun z.b. als: ='Datenliste KL1'!A2 im Tabellenblatt 2 verlinkt. Es ist sehr kompliziert gelöst aber ich habe nicht herausgefunden wie ich nur die Spalten A-C kopieren kann und habe deshalb immer die ganze Zeile kopiert.
Weiteres Problem ist wenn im Monat November jemand die Klasse wechselt dann ist er in diesem Monat ja in 2 Klassen anwesend. Also würde ich da 1 , 2 eintragen aber dann erkennt mein Code die 1 in der Spalte nicht.
Habt ihr eine Idee wie man dies sauberer Umsetzen könnte?
Danke und Gruss tktk92
|