von mumpel » So, 03.08.2008 14:01
Habe das Beispiel von Jürgen mal ausprobiert und angepasst.
Code: Alles auswählen
c2 = c1 & trim(Str(Minute(daDT))) & " Minuten " & trim(Str(Second(daDT))) & " Sekunden"
Ich schaffe es aber nicht, dieses in meinen Code einzubauen. Ich habe bereits zwei
For I-Schleifen in meinem Makro. Entweder wird nur der Timer ausgeführt oder meine Schleifen.
Codeauszug:
Code: Alles auswählen
Sub Week_day
ThisComponent.Sheets(0).Unprotect(Kennwort")
lblNext= MyDlg.getControl("Label1")
lblNext.Model.Label="Bitte warten...."
lblNext.Model.TextColor=RGB(255,0,0)
cmdNext = MyDlg.getControl("CommandButton1")
cmdNext.Model.Enabled = False
myctrl=myDlg.getControl("ProgressBar1")
'Festsetzen des Maximalwertes
myctrl.model.ProgressValueMax=742
Dim i as Long
Rem Hier beginnt Schleife 1 für Spalte B
For i= 11 to 742
lblNext= MyDlg.getControl("Label3")
lblNext.Model.Label= Format((i-11)/7.31, 0) & " % fertiggestellt"
If Weekday(ThisComponent.Sheets(0).GetCellByPosition(1,i).value, vbMonday) = 1 Then
ThisComponent.Sheets(0).GetCellByPosition(1,i).setPropertyValue( "CharColor", RGB(255,0,0) )
ElseIf Weekday(ThisComponent.Sheets(0).GetCellByPosition(1,i).value, vbMonday) = 7 Then
ThisComponent.Sheets(0).GetCellByPosition(1,i).setPropertyValue( "CharColor", RGB(0,0,255) )
ElseIf ThisComponent.Sheets(0).GetCellByPosition(1,i).Value = ThisComponent.Sheets(3).GetCellRangeByName("A1").Value Then
ThisComponent.Sheets(0).GetCellByPosition(1,i).setPropertyValue( "CharColor", RGB(255,0,0) )
ThisComponent.Sheets(0).GetCellByPosition(22,i).STRING = "F"
ElseIf ThisComponent.Sheets(0).GetCellByPosition(1,i).Value = ThisComponent.Sheets(3).GetCellRangeByName("A2").Value Then
ThisComponent.Sheets(0).GetCellByPosition(1,i).setPropertyValue( "CharColor", RGB(255,0,0) )
ThisComponent.Sheets(0).GetCellByPosition(22,i).STRING = "F"
End If
myctrl.value=i
Next i
Rem Ende Schleife 1
Rem Hier beginnt Schleife 2 für Spalte AC
myctrl=myDlg.getControl("ProgressBar2")
'Festsetzen des Maximalwertes
myctrl.model.ProgressValueMax=742
For i= 11 to 742
lblNext= MyDlg.getControl("Label4")
lblNext.Model.Label= Format((i-11)/7.31, 0) & " % fertiggestellt"
If Weekday(ThisComponent.Sheets(0).GetCellByPosition(28,i).value, vbMonday) = 1 Then
ThisComponent.Sheets(0).GetCellByPosition(28,i).setPropertyValue( "CharColor", RGB(255,0,0) )
ElseIf Weekday(ThisComponent.Sheets(0).GetCellByPosition(28,i).value, vbMonday) = 7 Then
ThisComponent.Sheets(0).GetCellByPosition(28,i).setPropertyValue( "CharColor", RGB(0,0,255) )
ElseIf ThisComponent.Sheets(0).GetCellByPosition(28,i).Value = ThisComponent.Sheets(3).GetCellRangeByName("A1").Value Then
ThisComponent.Sheets(0).GetCellByPosition(28,i).setPropertyValue( "CharColor", RGB(255,0,0) )
ElseIf ThisComponent.Sheets(0).GetCellByPosition(28,i).Value = ThisComponent.Sheets(3).GetCellRangeByName("A2").Value Then
ThisComponent.Sheets(0).GetCellByPosition(28,i).setPropertyValue( "CharColor", RGB(255,0,0) )
End If
myctrl.value=i
Next i
Rem Ende Schleife 2
Rem Endprozedur
Wait 2000
mydlg.endexecute()
Exit Sub
Fehler:
MsgBox "Fehler"
ThisComponent.Sheets(0).Protect("Kennwort")
End Sub
Zusätzlich zur Prozentanzeige soll auch die verstrichene Zeit angezeigt werden.
Und was das allgemeine Grundwissen betrifft. Das kann man nur haben, wenn man es gelernt hat. Aber gerade das mit dem Timer habe ich nicht gelernt. Ich lerne eigentlich jeden Tag was neues. Bisher habe ich zum Umformen immer nur
Format benutzt.
Habe das Beispiel von Jürgen mal ausprobiert und angepasst.
[code]c2 = c1 & trim(Str(Minute(daDT))) & " Minuten " & trim(Str(Second(daDT))) & " Sekunden"[/code]
Ich schaffe es aber nicht, dieses in meinen Code einzubauen. Ich habe bereits zwei [color=blue]For I[/color]-Schleifen in meinem Makro. Entweder wird nur der Timer ausgeführt oder meine Schleifen.
Codeauszug:
[code]
Sub Week_day
ThisComponent.Sheets(0).Unprotect(Kennwort")
lblNext= MyDlg.getControl("Label1")
lblNext.Model.Label="Bitte warten...."
lblNext.Model.TextColor=RGB(255,0,0)
cmdNext = MyDlg.getControl("CommandButton1")
cmdNext.Model.Enabled = False
myctrl=myDlg.getControl("ProgressBar1")
'Festsetzen des Maximalwertes
myctrl.model.ProgressValueMax=742
Dim i as Long
Rem Hier beginnt Schleife 1 für Spalte B
For i= 11 to 742
lblNext= MyDlg.getControl("Label3")
lblNext.Model.Label= Format((i-11)/7.31, 0) & " % fertiggestellt"
If Weekday(ThisComponent.Sheets(0).GetCellByPosition(1,i).value, vbMonday) = 1 Then
ThisComponent.Sheets(0).GetCellByPosition(1,i).setPropertyValue( "CharColor", RGB(255,0,0) )
ElseIf Weekday(ThisComponent.Sheets(0).GetCellByPosition(1,i).value, vbMonday) = 7 Then
ThisComponent.Sheets(0).GetCellByPosition(1,i).setPropertyValue( "CharColor", RGB(0,0,255) )
ElseIf ThisComponent.Sheets(0).GetCellByPosition(1,i).Value = ThisComponent.Sheets(3).GetCellRangeByName("A1").Value Then
ThisComponent.Sheets(0).GetCellByPosition(1,i).setPropertyValue( "CharColor", RGB(255,0,0) )
ThisComponent.Sheets(0).GetCellByPosition(22,i).STRING = "F"
ElseIf ThisComponent.Sheets(0).GetCellByPosition(1,i).Value = ThisComponent.Sheets(3).GetCellRangeByName("A2").Value Then
ThisComponent.Sheets(0).GetCellByPosition(1,i).setPropertyValue( "CharColor", RGB(255,0,0) )
ThisComponent.Sheets(0).GetCellByPosition(22,i).STRING = "F"
End If
myctrl.value=i
Next i
Rem Ende Schleife 1
Rem Hier beginnt Schleife 2 für Spalte AC
myctrl=myDlg.getControl("ProgressBar2")
'Festsetzen des Maximalwertes
myctrl.model.ProgressValueMax=742
For i= 11 to 742
lblNext= MyDlg.getControl("Label4")
lblNext.Model.Label= Format((i-11)/7.31, 0) & " % fertiggestellt"
If Weekday(ThisComponent.Sheets(0).GetCellByPosition(28,i).value, vbMonday) = 1 Then
ThisComponent.Sheets(0).GetCellByPosition(28,i).setPropertyValue( "CharColor", RGB(255,0,0) )
ElseIf Weekday(ThisComponent.Sheets(0).GetCellByPosition(28,i).value, vbMonday) = 7 Then
ThisComponent.Sheets(0).GetCellByPosition(28,i).setPropertyValue( "CharColor", RGB(0,0,255) )
ElseIf ThisComponent.Sheets(0).GetCellByPosition(28,i).Value = ThisComponent.Sheets(3).GetCellRangeByName("A1").Value Then
ThisComponent.Sheets(0).GetCellByPosition(28,i).setPropertyValue( "CharColor", RGB(255,0,0) )
ElseIf ThisComponent.Sheets(0).GetCellByPosition(28,i).Value = ThisComponent.Sheets(3).GetCellRangeByName("A2").Value Then
ThisComponent.Sheets(0).GetCellByPosition(28,i).setPropertyValue( "CharColor", RGB(255,0,0) )
End If
myctrl.value=i
Next i
Rem Ende Schleife 2
Rem Endprozedur
Wait 2000
mydlg.endexecute()
Exit Sub
Fehler:
MsgBox "Fehler"
ThisComponent.Sheets(0).Protect("Kennwort")
End Sub[/code]
Zusätzlich zur Prozentanzeige soll auch die verstrichene Zeit angezeigt werden.
Und was das allgemeine Grundwissen betrifft. Das kann man nur haben, wenn man es gelernt hat. Aber gerade das mit dem Timer habe ich nicht gelernt. Ich lerne eigentlich jeden Tag was neues. Bisher habe ich zum Umformen immer nur [color=blue]Format[/color] benutzt.