?Dienstplan, eine Eingabe dann mehere Ausgaben. VBA (Office 2007) ?

Dienstplan - (Microsoft Excel, VBA, Dienstplan)

1 Antwort

Um die Zeilen auch variabel zu machen, musst Du die Zellen anders ansprechen, also statt festen Werten wie range("N9") in der Form cells(9,14) (Zeile/Spalte), dann kannst Du die 9 auch durch eine Variable ersetzen
cells(i,14)

Eine Variante wäre, bei Änderungen alle Zellen im relevanten Bereich durchzuschauen und entsprechende Aktionen vorzunehmen

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 14 Then
For i = 6 To 36
If Cells(i, 14).Value = "N1" Or Cells(i, 14).Value = "N2" Then
Cells(i, 7).Value = "G"
Cells(i, 8).Value = "H"
End If
Next
End If
End Sub

Du müsstest allerdings noch etwas ausführlicher werden, wie die einzelnen Zellen mit den Uhrzeiten zu befüllen sind. Wenn nur die aktuell geänderte Zelle zu betrachten ist, dann müsste man etwas anders vorgehen.


Iamiam  17.01.2016, 21:28

da G der 7. und H der 8. Buchstabe ist, nehme ich an, dass

Zeile (G,n) (H,n) (I,n) (J,n) (K,n)  Zeile n, Spalte G,H,I,J,K Zelladressen sein sollen und nicht die Eintragung.- Mag jetzt im Moment aber nicht auf Makro umdenken.-

0
Ninombre  17.01.2016, 22:02

Sollen die ganzen Werte mit Arbeitsbeginn / -ende und Pausenzeiten fest anhand des Eintrags in Spalte N gesetzt werden? Das könntest Du nach diesem Schema machen (ich hab die Beispiele aus dem Screenshot für die ersten beiden Zeilen eingetragen, den Rest musst Du ergänzen)

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 14 Then
For i = 6 To 36
Select Case Cells(i, 14).Value
Case "D1":
Cells(i, 7).Value = "06:30"
Cells(i, 8).Value = "12:30"
Cells(i, 9).Value = "12:30-15:00"
Cells(i, 10).Value = "15:00"
Cells(i, 11).Value = "19:00"
Cells(i, 12).Value = ""
Cells(i, 13).Value = 10
Case "F8"
Cells(i, 7).Value = "06:30"
Cells(i, 8).Value = "09:45"
Cells(i, 9).Value = "09:45-10:15"
Cells(i, 10).Value = "15:00"
Cells(i, 11).Value = ""
Cells(i, 12).Value = ""
Cells(i, 13).Value = 8
End Select
Next
End If
End Sub

0