Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1624to1628
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro Anzahl & Uhrzeit auswerten

Makro Anzahl & Uhrzeit auswerten
30.05.2018 13:28:22
Tim
Hallo, ich stehe vor folgender Herausforderung, die ich ohne Hilfe nicht gelöst bekommen.
Ich habe eine Userform auf der sich Togglebutton befinden, die in einer Art Schachbrettmuster angeordnet sind.
Nun möchte ich im Hintergrund wissen, welche bzw. die Anzahl der Togglebutton die auf ".Value=true" gesetzt wurden und wie lange das Ganze gedauert hat. Das alles soll in ein Tabellenblatt geschrieben werden welches mir als Datenbank dient. Dabei brauche ich die Startzeit des zuerst geklicktem ToggleButton (unabhängig welcher Button davon zuerst geklickt wurde). Das Ergebnis soll dann in die erste frei Zeile des Tabellenblattes.
Wie kann man das lösen?

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Anzahl & Uhrzeit auswerten
30.05.2018 13:41:17
UweD
dann lad mal eine Mustermappe hoch.
AW: Makro Anzahl & Uhrzeit auswerten
30.05.2018 13:46:28
Daniel
Hi
bei VBA-Bescheiden könntest du das so lösen:
1. verküpfe jeden Togglebutton mit einer eigenen Ausgabezelle.
hierzu schreibst du die Adresse der Ausgabezelle in die Eigenschaft "ControlSource": Tabelle1!A1
in diese Ausgabezelle wird dann der togglebuttonwert mit WAHR oder FALSCH geschrieben.
2. zum Auswerten zählst du dann einfach die WAHR in dem verwendeten Zellbereich, das geht mit der Funktion ZählenWenn bzw in VBA Worksheetfunction.Countif(Range("a1:J10"), True)
3. um die Zeit zu stoppen verwendest du das Change-Event des Tabellenblatts, in welches die Togglebuttonwerte geschrieben werden, hier wieder in den Prüfung den richtigen Zellbereich angeben.

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:J10")) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Range("T1").Value = "" Then Range("T1").Value = Time
Range("T2").Value = Time
Application.EnableEvents = True
End Sub
um die Endzeit zu bekommen, schreibst du einfach die Zeit jeden Klicks mit (hier in T2)
für die Startzeit gehst du so vor, dass du diese Zelle leerst und die Zeit dort nur dann einträgst, wenn die Zelle leer ist.
Dh vor jedem Neustart musst du diese Zelle leeren.
4. um die Togglebuttons zurückzusetzen reicht es aus, in die verlinkten Zellen den gewünschten Wert zuschreiben (WAHR/FALSCH oder Leer)
diese Vorgehensweise hat den Vorteil, dass du für die Buttons selbst keinen Code benötigst und dir somit entweder viel Arbeitsaufwand oder das Einarbeiten in die Klassenprogrammierung erspart bleibt.
Gruß Daniel
Anzeige
AW: Makro Anzahl & Uhrzeit auswerten
30.05.2018 14:04:22
Tim
Hallo Daniel, deine Lösung klingt ganz gut und wäre mit meinem Wissen machbar, jedoch gehen mir alle Daten mit jedem neuen "klick" wieder verloren, da ich die Zeiten gern in einer Datenbank bräuchte. Ich lade mal eine Bsp. Datei hoch.
AW: Makro Anzahl & Uhrzeit auswerten
30.05.2018 14:08:09
Daniel
HI
wo ist dein Problem?
es wird ja sicherlich einen Button geben, mit dem du quittierst "Fertig" und dann übernimmst du die Anzahl der WAHR und die benötgigte Zeit in die Datenbank.
dann hast du die Daten gesichert kannst du die Zellen auf dem Tabellenblatt wieder zurücksetzen.
Gruß Daniel
AW: Makro Anzahl & Uhrzeit auswerten
30.05.2018 15:05:51
UweD
Hallo
so?
Dialog UserForm1
Private Sub A1_Click() 
    With A1 
        If .Value = True Then 
            .BackColor = &H8080FF 
            Felder = Felder & .Name & "-" 
        Else 
            .BackColor = &H8000000F 
        End If 
    End With 
End Sub 
 
Private Sub A2_Click() 
    With A2 
        If .Value = True Then 
            .BackColor = &H8080FF 
            Felder = Felder & .Name & "-" 
        Else 
            .BackColor = &H8000000F 
        End If 
    End With 
End Sub 
 
 
'usw. 
 
 
Private Sub Fertig_Click() 
'wenn Fertig geklickt wurde dann Übernahme alle ToggleButton.Value =True in Tabelle "Datenbank" erste leere Zeile, daran scheitere ich 
    Dim TB, LR As Double, Anz As Integer 
    Set TB = Sheets("Datenbank") 
    EndTime = Now 
     
    For Each objcontrol In Controls 
       Select Case TypeName(objcontrol) 
          Case "ToggleButton" 
             If objcontrol Then Anz = Anz + 1 
             objcontrol.Value = False 
 
       End Select 
    Next 
    LR = TB.Cells(TB.Rows.Count, "A").End(xlUp).Row + 1 'erste freie Zeile der Spalte 
    TB.Cells(LR, 1) = Format(Date, "DD.MM.YYYY") 
    TB.Cells(LR, 2) = Format(StartTime, "hh:mm:ss") 
    TB.Cells(LR, 3) = Format(EndTime, "hh:mm:ss") 
    TB.Cells(LR, 4) = Format(EndTime - StartTime, "hh:mm:ss") 
    If Felder <> "" Then 
        Felder = Left(Felder, Len(Felder) - 1) 
    Else 
        Felder = "KEINE" 
    End If 
    TB.Cells(LR, 5) = Felder 
    TB.Cells(LR, 6) = Anz 
     
    Me.Hide 
 
End Sub 
 
Private Sub UserForm_Activate() 
 
 
    Felder = "" 
    StartTime = Now 
End Sub 
Modul1
Option Explicit 
 
Public StartTime As Date, EndTime As Date, Felder As String 

LG UweD
Anzeige
AW: Makro Anzahl & Uhrzeit auswerten
30.05.2018 16:17:08
Daniel
Hi Uwe
wenn man bei dir einen Togglebutton wieder abwählt, bevor man Fertig klickt, dann erscheint er trotzdem in der Liste.
Müsste er dann nicht wieder entfernt werden?
Gruß Daniel
AW: Makro Anzahl & Uhrzeit auswerten
30.05.2018 16:25:59
UweD
Ja, kann man noch einbauen,
aber du hast ja eine andere ähnliche Lösung bekommen.
LG UweD
AW: Makro Anzahl & Uhrzeit auswerten
30.05.2018 15:13:44
Daniel
Hi
ok, geht doch etwas einfacher, aber mit etwas Fleiß (den du schon bewiesen hast).
1. Ergänze das Makro "Fertig" so:
Private Sub Fertig_Click()
Dim Anz As Long
Dim Geklickt As String
If T1 = 0 Then Exit Sub
T2 = Timer
'wenn Fertig geklickt wurde dann Übernahme alle ToggleButton.Value =True in Tabelle "Datenbank"  _
erste leere Zeile, daran scheitere ich
For Each objcontrol In Controls
Select Case TypeName(objcontrol)
Case "ToggleButton"
With objcontrol
If .Value Then
Anz = Anz + 1
Geklickt = Geklickt & "-" & .Caption
.Value = False
End If
End With
End Select
Next
With Sheets("Datenbank").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
.Value = Date
.Offset(0, 1).Value = T1
.Offset(0, 2).Value = T2
.Offset(0, 3).Value = (T2 - T1) / (24 / 1 * 60 * 60)
.Offset(0, 4).Value = Mid(Geklickt, 2)
.Offset(0, 5) = Anz
End With
T1 = 0
End Sub
ganz oben, oberhalb der Makros definiers du :
Dim T1 As Double
Dim T2 As Double
in jedem Togglebutton_Click-Event ergänzt du am Ende diese Zeile: If T1 = 0 Then T1 = Timer
Private Sub A1_Click()
If A1.Value = True Then
A1.BackColor = &H8080FF
Else
A1.BackColor = &H8000000F
End If
If T1 = 0 Then T1 = Timer
End Sub
diesen Aufwand wollte ich eigentlich sparen, aber da du die Makros schon hast, kann die nutzen und spart dann das Gedöns mit dem Tabellenblatt.
da die Zeile immer gleich ist, sollte sie schnell und einfach einzufügen sein (ggf auch mit ERSETZEN)
du brauchst diese Zeile in jedem Klick-Event, da du nicht weißt, welcher Button zuerst geklickt wird.
Anzeige
AW: Makro Anzahl & Uhrzeit auswerten
30.05.2018 16:21:58
Tim
MEEEGA!! Genauso habe ich mir das vorgestellt, vielen Dank an alle!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige