Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1924to1928
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

Beim Klicken nächstes Video abspielen

Beim Klicken nächstes Video abspielen
23.03.2023 15:03:05
Christian

Hallo Excel VBA Experten,

ich habe eine funktionierende userForm, die Videos in einer Zufallsreihenfolge wiedergibt.

Mein noch nicht ungesetzter Wusch ist es, per CommandButton die Schleife zu beenden und das nächste Video wiederzugeben.
Ich habe mir vereinzelt von ChatGPT helfen lassen, bin aber gerade bei dem Thema auf noch kein funktionierendes Ergebnis gekommen.

Zum Aufbau des Codes: Im Tabellenblatt "Filme" sind die Videos gespeichert (z.B. C:\videos\video1.mp4). Der Code zählt die Anzahl der eingetragenen Zeilen und macht ein Array mit Wert False daraus. Hier beginnt die "Hauptschleife" For i = 1 To numRows (Anzahl Zeilen) Das entsprechende Video wird rausgesucht und abgespielt. Damit die gleiche Zufallszahl sich nicht wiederholt, wird der Array-Wert auf True gesetzt. Das Video wird jetzt abgespielt.

Mein Verständins gemäß sollte der Commandbutton einen Wert (True oder 1) erhalten. Damit soll die "Do"-Schleife beendet werden und zur "For i"-Schleife zurückkehren.
Meine Test und Logik ergeben, dass sich das so abspielen könnte (funktioniert aber noch nicht): Beim Klick auf den commandbutton wird die Variable "weiter" auf False gesetzt. Eine Do-while Schleife prüft den Status der Variable "weiter" und beendet die andere "Do"-Schleife.
Einfach wäre es den ganzen code zu starten aber dann wird wieder ein neues Array angelegt, und das soll eben nicht sein..
Hier noch der komplette Code:

Option Explicit

Dim randArray() As Boolean ' Array
Dim previousNum As Integer ' Benachbarte Zahl

Private Sub CommandButton1_Click()

Dim num As Integer
Dim i As Integer ' Zähler Hauptschleife (Anzahl Zeilen)

' zeilen in Tabelle2 ermitteln
Dim numRows As Integer ' Anzahl Zeilen in Tabelle2
numRows = Worksheets("Filme").UsedRange.Rows.Count

' Array Größe ändern in Anzahl Zeilen
ReDim randArray(numRows)

Randomize Time

' HAUPTSCHLEIFE
For i = 1 To numRows

' Zufallsnummer generieren
Do
num = Int((numRows * Rnd) + 1) ' Berechnet Zufallszahl
Loop Until randArray(num) = False And num > previousNum ' loop solange Array(num) = False, so entsteht keine doppelte Zahl

randArray(num) = True ' Diese Zufallszahl auf True setzen, dann überspringt sie der Zufallsgenerator
previousNum = num ' so ist die letzte Zufallszahl nicht möglich
TextBox1.Value = num

' Dateiname raussuchen
Dim filename As String
filename = ThisWorkbook.Sheets("Filme").Cells(num, 1).Value
TextBox2.Value = filename

Debug.Print "Nr.: " & num & " " & filename

WindowsMediaPlayer1.Url = filename

Do While WindowsMediaPlayer1.playState = wmppsUndefined
DoEvents
Loop

Do While WindowsMediaPlayer1.playState > wmppsStopped
DoEvents
Loop

Next i

End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Beim Klicken nächstes Video abspielen
23.03.2023 15:37:09
Christian
Ich glaube meine Frage selbst beantworten zu können (erster Versuch hat funktioniert).

Ich habe den CommandButton so definiert:

Private Sub CommandButton2_Click()
WindowsMediaPlayer1.Controls.stop
End Sub
Damit reagiert die "Do"-Schleife und der nächste Video wird abgespielt:
Do While WindowsMediaPlayer1.playState > wmppsStopped
DoEvents
Loop

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige