Was stell ich ein damit das Makro im Hintergrund weiterläuft.
Warscheinlich ne blöde Frage, aber habt Dank! :-)
Warscheinlich ne blöde Frage, aber habt Dank! :-)
http://www.skripteundaufgaben.de viele kostenlose Downloads und Lösungsansätze zu EXCEL und mehr
Sub blabla()
UserForm8.Show
.
.
.
.
UserForm8.hide
end sub
Private Sub SCHLIESSEN_Click()
UserForm8.Hide
End Sub
ich will aber nicht "SCHLIESSEN" anklicken, sondern das prog soll weiterlaufen und am ende die userform selber schliessen.
Hoffe nun hab ich alles beschrieben, bin halt noch VBA-Anfänger!:-)
andreas e
Hier mal der Teil des Codes, hätte auch irgendwas anderes zwischen show und hide stehen können z.B.:
Range("A1").FormulaR1C1 = "Scheisse ich komm nicht weiter!"
'Hier der komplette CODE:
Sub David_kbps_umwandeln_CBR()
UserForm8.Show
kbps0 = UserForm2.ComboBox1
If kbps0 = 0 Then
kbps1 = "64"
Else
End If
If kbps0 = 1 Then
kbps1 = "80"
Else
End If
If kbps0 = 2 Then
kbps1 = "96"
Else
End If
If kbps0 = 3 Then
kbps1 = "112"
Else
End If
If kbps0 = 4 Then
kbps1 = "128"
Else
End If
If kbps0 = 5 Then
kbps1 = "144"
Else
End If
If kbps0 = 6 Then
kbps1 = "160"
Else
End If
quali0 = UserForm2.ComboBox2
If quali0 = 0 Then
quali1 = " " 'kein
Else
End If
If quali0 = 1 Then
quali1 = " -f " 'speed
Else
End If
If quali0 = 2 Then
quali1 = " -h " 'qualität
Else
End If
wichtig3 = ActiveWorkbook.Path
wichtig4 = Left$(wichtig3, Len(wichtig3) - 5)
Set fs = CreateObject("Scripting.FileSystemObject")
Anzahl = 0
For Each zelle In Selection
dddadr = zelle.AddressLocal
dddadr = Replace(dddadr, "$", "")
dddadr = Replace(dddadr, "A", "")
dddadr = Replace(dddadr, "B", "")
dddadr = Replace(dddadr, "C", "")
dddadr = Replace(dddadr, "D", "")
dddadr = Replace(dddadr, "E", "")
dddadr = Replace(dddadr, "F", "")
dddadr = Replace(dddadr, "G", "")
dddadr = Replace(dddadr, "H", "")
dddadr = Replace(dddadr, "I", "")
dddadr = Replace(dddadr, "J", "")
dddadr = Replace(dddadr, "K", "")
dddadr = Replace(dddadr, "L", "")
dddadr = Replace(dddadr, "M", "")
dddadr = Replace(dddadr, "N", "")
dddadr = Replace(dddadr, "O", "")
dddadr = Replace(dddadr, "P", "")
dddadr = Replace(dddadr, "Q", "")
dddadr = Replace(dddadr, "R", "")
dddadr = Replace(dddadr, "S", "")
dddadr = Replace(dddadr, "T", "")
dddadr = Replace(dddadr, "U", "")
dddadr = Replace(dddadr, "V", "")
dddadr = Replace(dddadr, "W", "")
dddadr = Replace(dddadr, "X", "")
dddadr = Replace(dddadr, "Y", "")
dddadr = Replace(dddadr, "Z", "")
Set a = fs.CreateTextFile(wichtig3 & "\umwandeln.bat", True)
a.WriteLine ("@ECHO OFF")
a.WriteLine ("cd\")
alt = Range("a" & dddadr) & "\" & Range("b" & dddadr) & ".mp3"
neu = Range("a" & dddadr) & "\" & Range("b" & dddadr) & "(((0))).mp3"
neu_um = Range("a" & dddadr) & "\" & Range("b" & dddadr) & "(((1))).mp3"
Name alt As neu
a.WriteLine (wichtig4 & "\tool\lame -b " & kbps1 & " -m j" & quali1 & "--resample 44.1 " & _
"--ta " & """" & Range("V" & dddadr) & """" & " " & _
"--tt " & """" & Range("W" & dddadr) & """" & " " & _
"--tl " & """" & Range("X" & dddadr) & """" & " " & _
"--ty " & """" & Range("Y" & dddadr) & """" & " " & _
"--tg " & """" & Range("Z" & dddadr) & """" & " " & _
"--tc " & """" & Range("AA" & dddadr) & """" & " " & _
"--tn " & """" & Range("AB" & dddadr) & """" & " " & _
"""" & neu & """" & " " & _
"""" & neu_um & """")
a.WriteLine ("ECHO Fertig>" & wichtig3 & "\FERTIG.DAT")
a.Close
Dim Exe
Start = wichtig3 & "\umwandeln.bat"
Exe = Shell(Start, 6)
While Dir(wichtig3 & "\FERTIG.DAT") = ""
Wend
dat = wichtig3 & "\FERTIG.DAT"
bat = wichtig3 & "\umwandeln.bat"
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 3
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
fs.DeleteFile dat, True
fs.DeleteFile bat, True
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
If Dir$(neu_um) <> "" Then
grösse_neu_um = FileLen(neu_um)
grösse_neu = FileLen(neu)
If grösse_neu_um > 0 Then
Dim filename As String
filename = neu_um
Call ReadMP3(filename, True, True)
D_Bitrate = Getmp3info2.Bitrate
D_Zeit = Getmp3info2.Duration
zeitkontrolle = Abs(((D_Zeit / Range("I" & dddadr)) - 1) * 100)
If zeitkontrolle > 1 Then
okoderfehler = "FEHLER"
Else
okoderfehler = "OK"
End If
Range("AC" & dddadr) = okoderfehler & " " & (grösse_neu - grösse_neu_um) / 1024
Else
End If
Else
End If
If Dir$(neu) <> "" Then
If Dir$(neu_um) <> "" Then
If okoderfehler = "OK" Then
fs.DeleteFile neu, True
Name neu_um As alt
Else
fs.DeleteFile neu_um, True
Name neu As alt
End If
Else
End If
Else
End If
Anzahl = Anzahl + 1
UserForm8.TextBox1.Text = Anzahl
Next
UserForm8.Hide
End Sub
mag sein, dass in XP alles anders ist (hier läuft Version 8) aber es macht schon Sinn, nicht mehrere Prozesse gleichzeitig ablaufen zu lassen. Stell Dir mal vor, dass Du über eine UF einen Zellwert änderst, wie sollte der Rest des Makros das registrieren können?
Was an Deinem Code noch auffällt (sofern es sich um den kompletten Code handelt) sind die unnötigen Else:
If Blabla then
mache dies
mache auch das
Else
End If
Gruß
Peter
Da wird der Code noch weiter geschrieben, ist also noch nicht fertig.
_______________
Zwecks "Stell Dir mal vor, dass Du über eine UF einen Zellwert änderst, wie sollte der Rest des Makros das registrieren können?":
Die UF soll nichts ändern, soll nur informieren!