Hallo Dschuelig,
probier es mal hiermit:
Sub Uhrzeit_start()
Load UserForm2
UserForm2.Show
End Sub
'Userform2 für die Änderung der Uhrzeit
'Damit beim Start der Userform direkt alle vorhandenen Tabellenblätter angezeigt werden wird mit Excel-Bordmittel Initialize gestartet
Private Sub UserForm_Initialize()
'Variablendeklaration
Dim i As Single
'Schleife, er soll alle Tabellenblätter zählen, Schrittweite 1
For i = 1 To Worksheets.Count
'Die gezählten Tabellenblätter sollen in der in der Userform, in der Listbox namentlich aufgelistet werden
With ListBox1
.AddItem Worksheets(i).Name
End With
'Nächstes Tabellenblatt soll ausgelesen und in die Listbox geschrieben werden
Next i
'Ende der Befehlsreihe die beim Öffnen ausgeführt werden soll
End Sub
'Makro für das gleichsetzen der Uhrzeit auf jedem ausgewählten Tabellenblatt beim klicken des Buttons Uhrzeit setzen
Private Sub CommandButton1_Click()
'Variablendeklaration
Dim i As Single
Dim j As Long
'Bedingung dass in Beiden Textboxen ein Wert drin stehen muss ansonsten soll er die Msgbox zeigen und das Makro beenden
If TextBox1.Value = "" Or TextBox2.Value = "" Then
MsgBox ("Sie müssen in eine Uhrzeit und ein Intervall eingeben")
Exit Sub
'Beendet die Bedingung
End If
'Schleife, um die Startzeit in jedem ausgewählten Tabellenblatt zu setzen
'-1 habe ich Internet gefunden, ohne -1 erkennt er die selected Anweisung nicht
For i = 0 To ListBox1.ListCount - 1
'Wenn-Dann Bedingung, dass er alle in der Listbox1 ausgewählten Namen auswählt und dann
If ListBox1.Selected(i) Then
'in die Tabellenblätter -deren Namen in der Listbox ausgewählt sind- in die Zelle B23 (ist immer Gleich, da die Drucklogger von einem Hersteller auf einer Software basieren)
'den Wert der in Textbox1 steht geschrieben wird. Formatierungsforgabe hh:mm:ss hat hierdrin nicht funktioniert, deshalb ist die Textbox beschriftet
Worksheets(ListBox1.List(i)).Range("B23").Value = TextBox1.Text
'Ende der Wenn-Dann Bedingung
End If
'Schleifenrhytmus (1. Schleife), nächstes Tabellenblatt
Next i
'Schleife um die nachfolgenden Uhrzeit um den Intervall zu erhöhen
For i = 0 To ListBox1.ListCount - 1
'Wenn-Dann Bedingung, dass er alle in der Listbox1 ausgewählten Namen auswählt und dann
If ListBox1.Selected(i) Then
'Startwert Zelle 24
j = 24
'Schleife für das ablaufen der Intervalladdition
Do
'in die Tabellenblätter -deren Namen in der Listbox ausgewählt sind- den Intervall zur Startzeit hinzurechnen beginnend bei Zelle 24, dann schau was in Zelle 23 ist und addiere
'den Wert der zweiten Textbox hinzu. /24/3600 ist die Umrechnung zur addition von sekunden
With Worksheets(ListBox1.List(i))
.Cells(j, 2).Value = .Cells(j - 1, 2).Value + TextBox2.Value / 24 / 3600
End With
'Schleifenrhytmus, nach jeder Addition in die nächste Zelle springen
j = j + 1
'Die Schleife endet sobald eine leere Zelle vorhanden ist.
Loop Until IsEmpty(Worksheets(ListBox1.List(i)).Cells(j, 2).Value)
'Ende der Wenn-Dann Bedingung
End If
'nächstes Tabellenblatt
Next i
'Schliessen der Userform
Unload Me
'Beenden des Makros
End Sub
|