Modul läuft unter Excel 2013 nicht mehr
#1

.xlsm   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 = ""
   End


VBA/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.
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Top
#2
Hallo, könnte es das sein??

unter 2013 ist bei Menü "Extras - Verweise" im VB-Editor, das Häkchen bei "Nicht Vorhanden" gesetzt, entfernen, dann funktioniert auch Date wieder!
Bei mir funktioniert es jetzt auch.

Hier gefunden:
http://www.ms-office-forum.net/forum/sho...p?t=250065
Top
#3
Hallo Fred,

danke für die Antwort, ich werde sie weitergeben und sehen, ob es auch dann dort funktioniert.
Gebe Rückmeldung!
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Top
#4
Hi Günter,

(13.04.2015, 13:48)Glausius schrieb: 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.
[...]
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.

also, ich konnte die Datei ganz normal mit 2013 öffnen, abspeichern und dann auch die Makros aktivieren.

Dateiupload bitte im Forum! So geht es: Klick mich!
Top
#5
(13.04.2015, 19:04)Rabe schrieb: also, ich konnte die Datei ganz normal mit 2013 öffnen, abspeichern und dann auch die Makros aktivieren.

ich denke mal es hat damit zu tun, dass du noch die Version 2010 hast und du daher mscal.ocx bei dir ist, die gibts es wohl ab 2013 nicht mehr, warum kA.
Beim reinen Office 2013 kannste mit der Datei nichts anfangen, ist zumindest bei mir so und bei Günter halt auch weil u.a. wohl diese mscal.ocx fehlt.

Anders kann ich mir das nicht erklären, gibt ja ein paar Threads im Netz die es jedenfalls so schreiben.
Top
#6
Hi

@Fred
mich verwundert dass du Verweise in einem geschützten Projekt verändern kannst, unter 2007 funktioniert das jedenfalls nicht. Wenn ich Recht habe wird auch der Endanwender das nicht ändern können und es muss eine andere Lösung her

@Günter
hier eine geschützte Datei einzustellen ist ungefähr so wie ein mit Klopapier umwickeltes Schaf in eine Herde Wölfe zu stellen und darauf zu hoffen das würde es schützen Smile
Top
#7
Hi Fred,

(13.04.2015, 20:34)Fred0 schrieb: ich denke mal es hat damit zu tun, dass du noch die Version 2010 hast und du daher mscal.ocx bei dir ist, die gibts es wohl ab 2013 nicht mehr, warum kA.
Beim reinen Office 2013 kannste mit der Datei nichts anfangen, ist zumindest bei mir so und bei Günter halt auch weil u.a. wohl diese mscal.ocx fehlt.

nene, es ist ein neuer Rechner mit nur Office 2013. Aber ich kann es morgen auch mal in der 4ma mit noch 'nem 2013er testen.

Ich konnte die VBA-Verweise nicht öffnen.

Aber beim Starten kam keine Fehlermeldung.

Jedoch: Wenn ich einen der drei rechten Buttons (Mitarbeiterverwaltung, Zeiten verwalten, Auswertung einblenden) drücke, dann kommt die Fehlermeldung (mit jeweils anderem ausgeblendeten Modul):
   
Top
#8

.xlsm   Abwesenheit österreichisch frei.xlsm (Größe: 174,79 KB / Downloads: 11)
Hallo Zusammen,

ich hatte die Datei nur zum Anschauen und den Code das betreffenden Moduls eingestellt, in der Hoffnung, man könnte darin den Fehler und den falschen Befehl, der zum "Streik" von Excel 2013 führt, sehen und beheben.

Ein Geheimnis ist diese Datei nicht und Daten enthält sie auch noch nicht, außer eben die österreichischen Feiertage und nicht die deutschen.

Um mir Weiterhelfen zu können, habe ich nun die Datei mit freigeschaltenem VBA-Projekt eingestellt.
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Top
#9
Hallo Günter

es liegt tatsächlich an dem fehlenden MSCAL.ocx. Wenn Du den Verweis entfernst sollte die Datei funktionieren. Evtl.hast du einmal ein solches ActiveX benutzt weshalb es den Verweis noch gibt. Nach dem Entfernen kannst Du ja leicht die Funktionalität prüfen und dann sehen ob bei dir etwas an Funktionalität fehlt
Top
#10
Hallo Günter,

der Verweis fehlt auch bei meinem Office 2010.

   

Gruß Uwe
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste