Jede Zeile abwechselnd eine 1 oder 2 in Excel schreiben
Schritt-für-Schritt-Anleitung
-
Öffne dein Excel-Dokument und gehe zu dem Arbeitsblatt "Schichteinteilung".
-
Füge eine Userform mit zwei ComboBoxen hinzu: eine für die Namen und eine für die Schichteinteilung.
-
In der zweiten ComboBox solltest du folgende Werte einfügen:
- nur Früh
- nur Spät
- Gerade KW Spät
- Ungerade KW Spät
-
Verwende den folgenden VBA-Code, um die Werte abwechselnd in die Zellen E12 bis E70 einzufügen:
Private Sub CommandButton1_Click()
Dim rngBer As Range, rngC As Range, i As Long
Dim wksSchicht As Worksheet
Set wksSchicht = Sheets("Schichteinteilung")
Application.Calculation = xlCalculationManual
With wksSchicht
For i = 12 To 70
With .Cells(i, .Rows(1).Find(ComboBox1).Column)
Select Case ComboBox2.Value
Case "nur Frühschicht"
.Value = 1
Case "nur Spätschicht"
.Value = 2
Case "Gerade KW Spät"
.Value = .Cells(i, 5).Value 'prüfen auf E-Spalte
End Select
End With
Next
End With
Application.Calculation = xlCalculationAutomatic
End Sub
Häufige Fehler und Lösungen
- Langsame Ausführung: Wenn dein Makro langsam läuft, kann das daran liegen, dass Excel ständig Neuberechnungen durchführt. Setze den Berechnungsmodus am Anfang des Makros auf manuell:
Application.Calculation = xlCalculationManual
Vergiss nicht, ihn am Ende wieder auf automatisch zu setzen:
Application.Calculation = xlCalculationAutomatic
-
Zahlen als Text: Falls die Werte in E12:E70 als Text formatiert sind, kann es zu Problemen beim Vergleich kommen. Ersetze rngC.Value durch Val(rngC.Value).
-
Prüflogik: Achte darauf, dass die Logik für das Eintragen der Werte richtig ist. Wenn immer die letzte Zelle geprüft wird, kann das zu falschen Ergebnissen führen.
Alternative Methoden
Eine alternative Methode könnte die Verwendung von Excel-Formeln sein, um die Werte abwechselnd zu generieren. Zum Beispiel kannst du in Zelle E12 die Formel =IF(MOD(ROW(),2)=0,1,2) verwenden und diese nach unten ziehen, um eine abwechselnde 1 und 2 zu erzeugen. Dies ist besonders nützlich, wenn du keine Programmierung in VBA durchführen möchtest.
Praktische Beispiele
Angenommen, du möchtest die Schichteinteilung für eine Woche vorbereiten. Du kannst die ComboBoxen so einstellen, dass sie die Namen und die verfügbaren Schichten enthalten. Je nach Auswahl wird der oben genannte VBA-Code verwendet, um die Werte in den Zellen abwechselnd zu befüllen.
- Beispiel: Wenn "nur Frühschicht" ausgewählt ist, werden in den Zellen E12 bis E70 durch den Code immer die 1 eingetragen.
Tipps für Profis
- Nutze
Select Case, um die Lesbarkeit deines Codes zu verbessern und die Anzahl der If-Abfragen zu reduzieren.
- Überprüfe die Datenformate in deinen Zellen, um sicherzustellen, dass sie mit deinem VBA-Code kompatibel sind.
- Betreibe eine Fehlerbehandlung, um unvorhergesehene Probleme zu vermeiden, indem du
On Error Resume Next verwendest.
FAQ: Häufige Fragen
1. Kann ich auch andere Zahlen als 1 oder 2 verwenden?
Ja, du kannst die Werte im VBA-Code nach deinen Bedürfnissen anpassen.
2. Wie kann ich die Schichteinteilung in anderen Excel-Versionen anwenden?
Der VBA-Code funktioniert in den meisten modernen Excel-Versionen, achte jedoch darauf, dass dein Excel Makros unterstützt.
3. Was mache ich, wenn die ComboBox nicht funktioniert?
Stelle sicher, dass die ComboBoxen korrekt mit den Werten gefüllt sind und der Code richtig auf die ComboBox zuzugreifen weiß.