Excel Absturz bei kompiliertem Code
08.08.2006 18:59:03
Timo
Ich habe noch etwas getestet und bin nun zu folgendem Ergebnis gekommen:
In "UserForm_Initialize()" wird das aktuelle Datum ermittelt und dadurch auch automatisch die dazu passenden Daten ermittelt.
Wenn ich dies abschalte und nur durch manuelles ändern des Monats die Prozeduren Urlaub und MAInfo starte, stürzt Excel nicht ab.
Es ist zwar keine schöne Lösung, aberhin etwas...
Kann man die Ausführung von VBA-Code irgendwie für eine bestimmte Zeit unterbrechen, so wie "Pause(1sek)" oder so in der Art?
Für weiteren Rat bin ich auch weiterhin dankbar...
' UserForm8
Dim Monat, LaufNrMax
Dim Tagemax As Integer
Private Sub UserForm_Initialize()
ComboBoxMonat.AddItem "Januar"
ComboBoxMonat.AddItem "Februar"
ComboBoxMonat.AddItem "März"
ComboBoxMonat.AddItem "April"
ComboBoxMonat.AddItem "Mai"
ComboBoxMonat.AddItem "Juni"
ComboBoxMonat.AddItem "Juli"
ComboBoxMonat.AddItem "August"
ComboBoxMonat.AddItem "September"
ComboBoxMonat.AddItem "Oktober"
ComboBoxMonat.AddItem "November"
ComboBoxMonat.AddItem "Dezember"
' Monat = Month(Date)
Select Case Monat ' aktuellen Monat als Vorauswahl
Case "1"
ComboBoxMonat.ListIndex = 0
'{...}
Case "12"
ComboBoxMonat.ListIndex = 11
End Select
End Sub
Private Sub ComboBoxMonat_Change()
''''' Tage Ein- bzw. ausblenden '''''
Select Case ComboBoxMonat.ListIndex
Case "0"
Monat = 1
Tagemax = 31
Monat31 ' Tag 29-31 ein-/ausblenden
Case "1"
Monat = 2
Tagemax = 28
Monat29
'{...}
Case "11"
Monat = 12
Tagemax = 31
Monat31
End Select
Call Urlaub(Tagemax) ' Werte aktualisieren
End Sub
'------------------------------------------
'Modul 3
Dim LaufNrMax As Integer
Function Urlaub(Tagemax As Integer)
Dim datum As Date
Dim tag, abteilung, bereich
Dim Zähler
Dim ZählerWE, ZählerWB, ZählerWA, ZählerHT, ZählerWE1, ZählerWE2, ZählerWE3
Dim ZählerWB1, ZählerWB2, ZählerWB3, ZählerWB4, ZählerWB5, ZählerWB6, ZählerWB7
Dim ZählerWA1, ZählerWA2, ZählerWA3, ZählerHT1
Sheets("Urlaub").Visible = True
Sheets("Urlaub").Select
Monat = UserForm8.ComboBoxMonat.ListIndex + 1
For Each zelle In Range(Cells(1, 1), Cells(2000, 1))
If zelle.Value = "" Then
LaufNrMax = zelle.Row
Exit For
End If
Next
''''' Es werden für alle 434 Label die Anzahl der MItarbeiter mit Urlaub ermitteln'''''
' Select Case - Anweisung
'{...}
End Function