Herbers Excel-Forum - das Archiv
VBA Code anpassen für Zeitstudie?!
Informationen und Beispiele zu den hier genannten Dialog-Elementen:

|
Betrifft: VBA Code anpassen für Zeitstudie?!
von: Josef Bouchi
Geschrieben am: 22.09.2003 18:43:39
Hallo,
ich habe mir folgenden Code zusammengefrickelt. Hintergrund hierfür ist eine Stopuhr, mit der verschiedene Aktivitäten für eine Zeitstudie gemessen werden sollen.
Dieser Code ist bei 26 Command_Buttons mehr oder weniger gleich. Ich möchte den User aus Sicherheitsgründen darauf hinweisen, dass er immer nur eine Zeit messen kann. Wenn also schon eine Zeit läuft, dann soll der User durch eine entsprechende MsgBox darauf hingewiesen werden. Ich habe etwas versucht, aber das funktioniert so natürlich nicht, das ich so die Zeit mit dem eigentlich richtigen Button auch nicht mehr stoppen kann. Selbst reingelegt! :-)
So, was mir jetzt vorschwebt ist, dass allgemein erkannt wird, dass gerade irgendwo die Zeit läuft und dann eine Fehlermeldung ausgegeben wird, aber nicht wenn es der "richtige" Command-Button ist.
Ich hoffe das hat irgendwer verstanden. Danke für Euer Feedback.
Private Sub CommandButton1_Click()
If Range("E2").Value > "" Then
MsgBox "Please stop the time first and send it to the query." & Chr(13) & "Then proceed...Thanks!", vbInformation
ElseIf UserForm1.CommandButton1.Caption = "Start" Then
Zeit1 = Time
UserForm1.CommandButton2.Caption = "Time: " & Format(Range("E3") + Time - Zeit1, "hh:mm:ss")
NextTime1 = Now + TimeValue("00:00:00")
Application.OnTime NextTime1, "CommandButton1_Click"
Worksheets("Time&Motion").Range("E2").Select
ActiveCell.FormulaR1C1 = (Time - Zeit1) + Range("E3")
CommandButton1.Caption = "Stop"
Else: CommandButton1.Caption = "Stop"
Application.OnTime NextTime1, "CommandButton1_Click", , False
CommandButton1.Caption = "Start"
Worksheets("Time&Motion").Range("E3").Select
Selection.ClearContents
Sheets("Time&Motion").Select
Range("D2").FormulaR1C1 = "Incoming mail/cheques"
Range("F2").FormulaR1C1 = "Post Team"
End If
Range("A2") = Application.UserName
Range("B2").Select
ActiveCell.FormulaR1C1 = Date
End Sub
Viele Grüsse
Josef
P.S. Ich benutze eine englische Excel-Version!
Betrifft: AW: VBA Code anpassen für Zeitstudie?!
von: Hans W. Hofmann
Geschrieben am: 22.09.2003 19:10:40
Im Sinn eines konsistenten User-Interface wäre es angebracht, dass die nicht sinnvollen Optionen disabled werden und sich somit Dein Problem von alleine löst, oder?
Gruß HW
Betrifft: AW: VBA Code anpassen für Zeitstudie?!
von: Josef Bouchi
Geschrieben am: 22.09.2003 19:27:30
Hallo,
Du meinst also, alle nicht benötigten Command-Buttons per
UserForm1.CommandButton(xyz).Visible = False
verschwinden lassen?
Ja, das wäre eine Möglichkeit, aber auch sehr aufwendig, da jeder Knopf einzeln angesprochen werden müsste. Aber, wahrscheinlich geht es nicht anders, oder?
Danke aber schon mal für die Idee.
Viele Grüsse
Josef
Betrifft: AW: VBA Code anpassen für Zeitstudie?!
von: Hans W. Hofmann
Geschrieben am: 22.09.2003 21:40:40
Finde ich nicht.
Du durchläufst die Controls-Auflistung Deiner Form uns setzt bei allen
Buttons enabled = false (nix visible), der aktive Button wird wieder enabled.
Wo ist da der große Aufwand?
Gruß HW
Betrifft: AW: VBA Code anpassen für Zeitstudie?!
von: Josef Bouchi
Geschrieben am: 22.09.2003 22:53:55
Hallo,
wie würde der Code denn genau ausehen? Ich bin nicht der Super VBA Spezialist.
Danke schön...
Josef
Betrifft: AW: VBA Code anpassen für Zeitstudie?!
von: Hans W. Hofmann
Geschrieben am: 24.09.2003 08:51:28
Kann ich nicht genau sagen. Wie sind denn die Buttons in der
Auflistung verteilt?
for i=a to b
Me.Controls(i).Enabled = false
next
oder so...
ggf. ein Array für die Nummerierung (falls nicht lückenlos)?
Gruß HW
Betrifft: AW: VBA Code anpassen für Zeitstudie?!
von: Josef Bouchi
Geschrieben am: 24.09.2003 18:14:02
Hallo,
sie sind leider nicht lückenlos, aber der Code hilft mir schon sehr weiter. Ich habe nämlich noch Multipages drin und werde es auf diesem Weg machen.
Danke für Deine Hilfe.
Wie ist eigentlich der Code für ein Array?
Viele Grüsse
Josef
Betrifft: AW: VBA Code anpassen für Zeitstudie?!
von: Hans W. Hofmann
Geschrieben am: 25.09.2003 13:04:33
Etwa so:
Dim a as variant, i as integer
' a enthält die Indexnummer der Buttons...
a = Array(2,3,5,6,9,11,23,44,67)
for i=1 to Ubound(a)
Me.Controls(a(i)).Enabled = false
next
Gruß HW
Betrifft: AW: VBA Code anpassen für Zeitstudie?!
von: Josef Bouchi
Geschrieben am: 25.09.2003 13:54:50
Hallo,
vielen Dank für deine Hilfe!
Grüsse
Josef