VBA Code anpassen für Zeitstudie?!

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

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!
Bild


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


Bild


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


Bild


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


Bild


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


Bild


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


Bild


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


Bild


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


Bild


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


 Bild

Beiträge aus den Excel-Beispielen zum Thema " VBA Code anpassen für Zeitstudie?!"