79 Aufrufe
Gefragt in Tabellenkalkulation von addeguddi Experte (2.7k Punkte)
Wer kann mir dabei helfen.

Dies ist meine Letzte Aufgabe für Dart nach über 2 Jahre testen und immer wieder zu verbessern meiner Dartliste. Möchte gerne, das bei Dart  Doppel out und bei Dart Doppel in Doppel out, das wenn kein Doppel Out getroffen wird, soll dies über die User Form angezeigt bin schon seit Wochen am ausprobieren, kriege es einfach nicht hin, Modul erstellt User Form erstellt für beide Befehle. was wird benötigt um mich eventuell zu unterstützen?. Wenn meine Dartliste benötigt wird, bitte nur schreiben dann lade ich sie hoch. Habe die Dartliste so erstellt, dass die Punktzahl, Check out, nächster Spieler und Game Over angesagt wird und das kriege ich nicht hin, es ist nicht zu fassen. Daher wende ich mich mit der letzten Hoffnung an euch Experten mir zu helfen, wenn keine Resonanz kommt auch Ok.

Geht das überhaupt? 2 User Formen

Grus Adde

5 Antworten

0 Punkte
Beantwortet von beverly_ Experte (3.4k Punkte)

Hi Adde,

Rückfrage: weshalb benötigst du für beide Befehle je ein eigenes Userforms? Das sollte doch auch in einerm gemeinsamen Userform möglich sein, indem du dieselben Steuerelemente sowohl für Befehl 1 als auch für Befehl 2 verwendest, nur eben bei der Auswertung mithilfe z.B. eines Optionsfeldes quasi zwischen beiden Befehlen "unterscheidest".

Bis später, Karin

0 Punkte
Beantwortet von addeguddi Experte (2.7k Punkte)
Vielen Dank Karin für deine Antwort. Leider verstehe ich nicht was du meinst! Das ist der Code für User Form1 :

Private Sub CommandButton1_Click()

End Sub

Private Sub UserForm_Activate()
    Application.OnTime Now + TimeValue("00:00:02"), "CloseUserForm"
End Sub

Und das der Zweite Code

' Code für UserForm2
Private Sub CommandButton1_Click()
    ' Schließt die UserForm
    Unload Me
End Sub

Private Sub UserForm_Activate()
    ' Schließt die UserForm nach 2 Sekunden automatisch
    ScheduleCloseUserForm "UserForm2"
End Sub

Public Sub CloseUserForm2()
    CloseUserForm "UserForm2"
End Sub

Das ist im Tabellenblatt für Doppel In hinterlegt, und da ist es OK mit der Anzeige.wenn kein Doppel in getroffen wird zeigt er es an . Schriftzug ist- Du Brauchst ein Doppel.

'Anzahl Doppel erhöhen
If lngDT = 2 Then Cells(11, lngSpalte + 1) = Cells(11, lngSpalte + 1).Value + 1
'Anzahl Triple erhöhen
If lngDT = 3 Then Cells(11, lngSpalte + 2) = Cells(11, lngSpalte + 2).Value + 1
'hier mit Doppel-IN, also nur dann eintragen, wenn 1 Doppel eingetragen wurde
If Cells(11, lngSpalte + 1).Value > 0 Then
'Würfe eintragen
Cells(lngWZeile, lngSpalte + Cells(lngSZeile, lngWSpalte).Value - 1) = lngWurf
Else
'Benutzerdefiniertes Formular anzeigen
UserForm1.Show
End If

Gruß Adde
0 Punkte
Beantwortet von beverly_ Experte (3.4k Punkte)
Hi Adde,

und wo ist nun das Problem?

Bis später, Karin
0 Punkte
Beantwortet von addeguddi Experte (2.7k Punkte)

Hallo Karin Nochmal ich,

habe das mit User Form fast hinbekommen, das Problem ist das er nach jedem 3 Wurf es anzeigt. sollte aber nur unter bestimmten Voraussetzungen erscheinen, das kriege ich leider nicht hin. Wenn du möchtest, dann schau dir das einmal an. Die Bedingung dafür: 

Wenn Rest in Zelle LD8 Oder LF8 50,40;38,36,34,32,30,28,26,24,22,20,18,16,14,12,10,8,6,4,2 ist 
und ich treffe eine  diese Zahl nicht dann soll die User Form erscheinen. 
Diese Zahlen werden über Klick in bestimmte Zellen in diesen genannten Zellen LD8 oder LF8 übernommen. Denn hier erscheint der Punktestand. 
Wenn diese Zahlen nicht getroffen werden, wird automatisch die letzte Zahl wieder hergestellt da
es als überworfen gezählt wird: Beispiel: In Zelle LD8 steht Rest 121 ich treffe die Tripple 20 Tripple 7 bleibt Rest  40. 
Jetzt treffe ich aber Tripple 20 , habe ich mich überworfen und Die Zahl 121 erscheint wieder 
jetzt soll die User Form erscheinen.
Habe einen Code aber der funktioniert nicht. Vielleicht kannst du das erstellen oder einer deiner Kollegen. Wie schon geschrieben  wenn keiner helfen kann, ist nicht schlimm, dann lasse ich es einfach weg. 
Modul
Sub CheckDoubleOut()
    Dim doubleOut As Boolean
    Dim restValue As Integer
    ' Überprüfe die Restpunkte in den Zellen LD8 und LF8
    restValue = Range("LD8").Value
    Debug.Print "LD8 Value: " & restValue
    If restValue Mod 2 = 0 Then
        doubleOut = True
    End If
    If Not doubleOut Then
        restValue = Range("LF8").Value
        Debug.Print "LF8 Value: " & restValue
        If restValue Mod 2 = 0 Then
            doubleOut = True
        End If
    End If
    ' Wenn kein Doppel getroffen wurde, zeige eine Nachricht an
    If Not doubleOut Then
        MsgBox "Du brauchst ein Doppel!"
    End If
End Sub
Das ist der Code , der leider nicht funktioniert:

Gruß Adde
 
0 Punkte
Beantwortet von addeguddi Experte (2.7k Punkte)
Hallo Karin

 nach langen Versuchen, habe ich jetzt die Lösung gefunden, Das ist für Doppel Out. Habe im Tabellenblatt bei diesem Teil des Codes Benutzerdefiniertes Formular eingefügt. 'Würfe der Runde auf Null setzen, wenn überworfen
If bUeberw = True Then
  For i = 1 To Cells(lngSZeile, lngWSpalte).Value
    Cells(lngWZeile, lngSpalte + Cells(lngSZeile, lngWSpalte).Value - i) = 0
  Next i
 'Benutzerdefiniertes Formular anzeigen
UserForm3.Show
End If
 Gruß Adde
...