Habe vor längerer Zeit eine Datei geschrieben (Office 2016) die auf einem Arbeitsrechner ohne Probleme läuft. Ein Kollege hat sich diese Datei nun auf ein Tablett kopiert 365 privat, dort wird beim öffnen der Datei eine Fehlermeldung "Makros können nicht ausgeführt werden" angezeigt. Hier im Forum habe ich die Schilderung dieses Problem schon öfters gelesen, da sich wohl 2016 und 365 nicht vertragen. Die ganze Datei kann ich leider nicht hochladen. Da dieses Problem schon beim starten auftritt zeige ich mal den Code den ich in der Arbeitsmappe stehen habe
Private Sub Workbook_Open()
Worksheets("Beleg").Range("E11").Value = Format(Now(), "MMMM")
Worksheets("Beleg").Range("Q11").Value = Format(Now(), "YYYY")
If Worksheets("Klienten").Visible = True Then Worksheets("Klienten").Visible = False
Datenmaske1.Show
If Worksheets("Klienten").Range("N1").Value = "x" Then
If MsgBox("Erster Start ? - Hilfe anzeigen? - Klicken Sie auf Ja, dann wird diese Hilfe beim nächsten Starten der Datei nicht mehr angezeigt! - Sie können die Hilfe jederzeit im Menüfenster öffnen!", _
vbQuestion + vbYesNo, "Quittierungsbeleg") = vbYes Then
Hilfegs.Show
Worksheets("Klienten").Range("N1").Clear
End If
End If
End Sub
Folgenden Code habe ich im Arbeitsblatt stehen
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("AE42:AF43,AE45:AF46")) Is Nothing Then Exit Sub
If Len(Target.Cells(1)) = 0 Then
Target.Cells(1) = "x"
Else
Target.Cells(1) = vbNullString
End If
Cancel = True
End Sub
'Code von Hajo Ziplies
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim RaBereich As Range ' Bereich der Wirksamkeit
Dim RaZelle As Range ' zur Zeit untersuchte Zelle
Dim InS As Integer ' Variable für Stunde
Dim InM As Integer ' Variable für Minute
Set RaBereich = Range("G16:J36, K16:N36") ' Bereich der Wirksamkeit festlegem
' noch mehr Bereiche
'Set RaBereich = Union(Range("C11:AG11 , C13:AG13, C15:AG15 , C17:AG17"), _
Range("C35:AE35, C37:AE37, C43:AG43, C45:AG45 , C47:AG47 , C49:AG49"), _
Range("C67:AF67 , C69:AF69 , C75:AG75 , C77:AG77 , C79:AG79 , C81:AG81"), _
Range("C99:AF99 , C101:AF101, C107:AG107 , C109:AG109 , C111:AG111"), _
Range("C127:AG127 , C129:AG129 , C131:AG131 , C133:AG133 , C139:AF139"), _
Range("C155:AG155, C157:AG157 , C159:AG159 , C161:AG161 , C163:AG163"), _
Range("C179:AF179 , C181:AF181, C187:AG187 , C189:AG189 , C191:AG191"))
'ActiveSheet.Unprotect "Password" ' Schutz der Tabelle aufheben
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If RaBereich Is Nothing Then Exit Sub
Application.EnableEvents = False ' Reaktion auf Zellveränderung abschalten
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
'ActiveSheet.unprotect "Password" ' Schutz der Tabelle aufheben
For Each RaZelle In RaBereich ' Schleife üner veränderte Zellen
With RaZelle
If .Value "" Then
If IsNumeric(.Value) And InStr(.Value, ":") = 0 And _
InStr(.Value, ",") = 0 Then
If Len(.Value) > 2 Then
InS = Left(.Value, Len(.Value) - 2)
InM = Right(.Value, 2)
Else
InS = 0
InM = .Value
End If
If InM > 59 Or InS > 9999 Then
MsgBox "Falsche Eingabe"
Target = ""
Exit For
Else
' Zellformat setzen
If InS > 23 Then
.NumberFormat = "[h]:mm"
Else
.NumberFormat = "hh:mm"
End If
' Zeit in Zelle schreiben
.Value = InS & ":" & InM
End If
ElseIf InStr(.Text, ":") = 0 Then
MsgBox "Falsche Eingabe in Zelle " & RaZelle.Address(False, False)
RaZelle = ""
End If
End If
End With
Next RaZelle
'ActiveSheet.protect "Password" ' Schutz der Tabelle aufheben
End If
Application.EnableEvents = True ' Reaktion auf Zellveränderung einschalten
End Sub
Kann es vielleicht daran liegen?Schon mal ein Danke für Eure Hilfe
Gruß, Guesa