13.04.2015, 13:48
(Dieser Beitrag wurde zuletzt bearbeitet: 21.07.2015, 22:39 von Rabe.
Bearbeitungsgrund: Makro neu formatiert
)
Abwesenheit österreichisch.xlsm (Größe: 170,69 KB / Downloads: 10)
Hallo,
ich habe ein Problem mit einer Datei, die unter Excel 2003, Excel 2007 und Excel 2010 einwandfrei läuft.
Als sie jetzt unter Excel 2013 geöffnet werden soll, wird das Öffnen mit einem Compilierungsfehler in einem Modul (ist ein Code hinter einer Userform) abgelehnt.
Da ich kein Excel 2013 habe, kann ich diesen Fehler nicht konstatieren und mit ungeschütztem VBA-Code möchte ich die Datei nicht weitergeben.
Vielleicht kann ein Experte von Excel 2013 einmal über den nachstehenden Modul-Code schauen und mir sagen, was Excel 2013 daran nicht gefällt und was ich wie ändern muss?
Hier der Code:
Option Explicit
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = True
End Sub
Private Sub UserForm_Activate()
CommandButton2.Visible = False 'Übernehmen
Label1.Visible = False 'Mitarbeitereingabe
Label2.Visible = False 'Bezeichnung: Name
Label3.Visible = False 'Bezeichnung: Vorname
Label4.Visible = False 'Bezeichnung: Bereich
Label5.Visible = True 'Handlungsentscheidung
Label6.Visible = False 'Mitarbeiterauswahl
Label7.Visible = False 'Bezeichnung: Eintritt
Label8.Visible = False 'Bezeichnung: Urlaub
Label9.Visible = False 'Bezeichnung: Anspruch aus Vorjahr
ListBox1.Visible = False 'Listenfeld
OptionButton1.Visible = True 'Zugang
OptionButton2.Visible = True 'Abgang
OptionButton3.Visible = True 'Urlaub
OptionButton4.Visible = True 'Korrektur
TextBox1.Visible = False 'Name
TextBox2.Visible = False 'Vorname
TextBox3.Visible = False 'Bereich
TextBox4.Visible = False 'Eintritt
TextBox5.Visible = False 'Urlaub
TextBox6.Visible = False 'Resturlaub aus Vorjahr
Label1.Visible = False
OptionButton1.SetFocus
Flag = False 'Entscheidung: False = Zugang, True = Abgang
End Sub
Private Sub CommandButton1_Click() 'Abbrechen
Unload Me
End Sub
Private Sub CommandButton2_Click() 'Übernehmen
Call Übernehmen
End Sub
Private Sub Übernehmen()
If MitName = "" Then
Auswahl.Show
Exit Sub
End If
Sheets("Alles").Unprotect Password:=""
If Flag = False Then 'Mitarbeiter-Zugang
If TextBox1.Value = "" Then Exit Sub
For i = 13 To 42
If Cells(i, 2) = 0 Then
Cells(i, 2) = MitName
Cells(i, 3) = MitVorname
Cells(i, 4) = MitBereich
Cells(i, 5) = MitEintritt
Cells(i, 7) = MitUrlaub
Cells(i, 8) = MitVorjahr
Exit For
End If
Next
If i > 42 Then
Fehler.Show
Sheets("Alles").Protect Password:=""
Exit Sub
End If
TextBox1 = "" 'Name
TextBox2 = "" 'Vorname
TextBox3 = "" 'Bereich
TextBox4 = "" 'Eintrirtt
TextBox5 = "" 'Urlaub
TextBox6 = "" 'Resturlaub aus Vorjahr
TextBox1.SetFocus
Else 'Mitarbeiter-Abgang
If MitName = "" Then Unload Me
j = 0
For i = 13 To 42
If Cells(i, 2) = MitName Then
If Cells(i, 3) = MitVorname Then
Anfrage.Show
If j = 1 Then
Range(Cells(i, 2), Cells(i, 106)).ClearContents
Range(Cells(i + 36, 16), Cells(i + 36, 106)).ClearContents
Range(Cells(i + 72, 16), Cells(i + 72, 107)).ClearContents
Range(Cells(i + 108, 16), Cells(i + 108, 107)).ClearContents
Cells(i, 10).FormulaLocal = "=WENN(B" & i & "=0;"""";SUMME(G" & i & ":I" & i & ")+0,001)"
Cells(i, 12).FormulaLocal = "=WENN(J" & i & "="""";"""";J" & i & "-K" & i & ")"
Cells(i, 14).FormulaLocal = "=WENN(B" & i & "=0;"""";L" & i & "-M" & i & ")"
Cells(i, 15).FormulaLocal = "=ZÄHLENWENN(P" & i & "Big GrinB" & i & ";""k"")+ZÄHLENWENN(P" & i + 36 & "Big GrinB" & i + 36 & ";""k"")+ZÄHLENWENN(P" & i + 72 & "Big GrinC" & i + 72 & ";""k"")+ZÄHLENWENN(P" & i + 108 & "Big GrinC" & i + 108 & ";""k"")"
Application.CutCopyMode = False
j = 0
End If
End If
End If
Next
Flag = False 'Entscheidungsrückstellung: Zugang
Unload Me
End If
Sheets("Alles").Protect Password:=""
'Unload Me
End Sub
Private Sub Weiter()
Label5.Visible = False 'Handlungsentscheidung
OptionButton1.Visible = False 'Zugang
OptionButton2.Visible = False 'Abgang
OptionButton3.Visible = False 'Urlaubsdaten
OptionButton4.Visible = False 'Korrektur
If OptionButton1 = True Then
CommandButton2.Visible = True 'Übernehmen
Label1.Visible = True 'Mitarbeitereingabe
Label2.Visible = True 'Bezeichnung: Name
Label3.Visible = True 'Bezeichnung: Vorname
Label4.Visible = True 'Bezeichnung: Bereich
Label7.Visible = True 'Bezeichning: Eintritt
Label8.Visible = True 'Bezeichnung: Urlaub
Label9.Visible = True 'Bezeichnung: Anspruch aus Vorjahr
TextBox1.Visible = True 'Name
TextBox2.Visible = True 'Vorname
TextBox3.Visible = True 'Bereich
TextBox4.Visible = True 'Eintritt
TextBox5.Visible = True 'Urlaub
TextBox6.Visible = True 'Resturlaub aus Vorjahr
TextBox1.SetFocus
ElseIf OptionButton2 = True Then
Call Dateiliste
Label6.Visible = True 'Mitarbeiterauswahl
ListBox1.Visible = True 'Listenfeld
ListBox1.List() = Mitarbeiter 'Mitarbeiterliste
Flag = True 'Entscheidung: Abgang
ElseIf OptionButton3 = True Then
Unload Me
Anspruch.Show
Else
Call Dateiliste
Unload Me
Korrektur.Show
End If
End Sub
Private Sub Listbox1_Click()
MitVollname = ListBox1.List(ListBox1.ListIndex, 0)
MitName = Left(MitVollname, InStr(MitVollname, ",") - 1)
MitVorname = Mid(MitVollname, Len(MitName) + 3)
Call Übernehmen
End Sub
Private Sub OptionButton1_Click()
Call Weiter
End Sub
Private Sub OptionButton2_Click()
Call Weiter
End Sub
Private Sub OptionButton3_Click()
Call Weiter
End Sub
Private Sub OptionButton4_Click()
Call Weiter
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
MitName = TextBox1.Value
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
MitVorname = TextBox2.Value
End Sub
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
MitBereich = TextBox3.Value
End Sub
Private Sub Textbox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsDate(TextBox4.Value) Then
MitEintritt = Format(CDate(TextBox4.Value), "dd/mm/yyyy")
TextBox4.Value = MitEintritt
Else
TextBox4.Value = ""
End If
End Sub
Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox5.Value) Then
MitUrlaub = TextBox5.Value
Else
TextBox5.Value = ""
End If
End Sub
Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox6.Value) Then
MitVorjahr = TextBox6.Value
Else
TextBox6.Value = ""
EndVBA/HTML - CodeConverter für Office-Foren, AddIn für Excel/Word 2000-2013 - komplett in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch mumpel
Code erstellt und getestet in Office 15
Es kann sich doch eigentlich nur um einen Befehl handeln, den es in Excel 2013 nicht mehr gibt.
Wenn die komplette Datei benötigt wird, liegt sie als Anhang bei - allerdings geschützt.
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig