Wenn keine Daten eingetragen werden: Speicherabbruch!
#1
Hallo Experts!

Es sollen erst in den genannten Zellen die erforderlichen Daten eingegeben werden, sonst kann nicht gespeichert werden.

Es kommt immer die Fehlermeldung: "Laufzeitfehler '438': Objekt unterstützt diese Eigenschaft oder Methode nicht"

Vielen Dank schon mal!
Uwe

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
   If Application.Sheets("ArbZeitAbr").Left(Range("A1").Value, 11) = "Haus wählen" Or Application.Sheets("ArbZeitAbr").Range("J1").Value = "Mon Jahr" _
       Or Application.Sheets("ArbZeitAbr").Range("J1").Value = "" Or Application.Sheets("ArbZeitAbr").Left(Range("N1").Value, 12) = "Bitte wählen" Then
       Cancel = True
       MsgBox "Erst ... ausfüllen!"
   End If
End Sub
Top
#2
Hallo

einen Fehler kann ich in deinem Code so nicht sehen, man kann ihn aber geschickt verkürzen!  s. unten
Stimmt der Blattname "ArbZeitAbr" mit der Tabelle 100% überein??  Ich habe Worksheet statt Sheet mit With verwendet  

mfg Gast 123

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With Worksheets("ArbZeitAbr")
  If .Left(Range("A1"), 11) = "Haus wählen" Or .Range("J1") = "Mon Jahr" _
      Or .Range("J1") = "" Or .Left(Range("N1"), 12) = "Bitte wählen" Then
      Cancel = True
      MsgBox "Erst ... ausfüllen!"
  End If
End With
End Sub
Top
#3
Auch Hallo,

meines Wissen hat ein Sheet keine Left-Eigenschaft.

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With Worksheets("ArbZeitAbr")
  If Left(.Range("A1"), 11) = "Haus wählen" Or .Range("J1") = "Mon Jahr" _
      Or .Range("J1") = "" Or Left(.Range("N1"), 12) = "Bitte wählen" Then
      Cancel = True
      MsgBox "Erst ... ausfüllen!"
  End If
End With
End Sub
Gruß Stefan
Win 10 / Office 2016
Top
#4
Danke. Aber diesselbe Fehlermeldung, markiert werden die ersten 2 Zeilen des If-Blocks. Allerdings bin ich es schon fast gewohnt, dass bei uns nicht alles so läuft wie bei anderen...

Gruß
Uwe
Top
#5
Hallo,

bei welcher Variante?
Gruß Stefan
Win 10 / Office 2016
Top
#6
Hallo Uwe,

mit deinen Angaben und dem Makrobeispiel, kann ich nichts anfangen.
Wie wäre es mit einer Beispieldatei, damit wir sehen, was du eigentlich erreichen, vor allem prüfen möchtest.

Im Moment prüfst du auf folgendes:
In A1 soll in den ersten 11 Zeichen "Haus wählen" stehen,
oder in J1 soll "Mon Jahr" stehen,
oder J1 soll  leer sein "",
oder in N1 soll in den ersten 12 Zeichen "Bitte wählen" stehen.
Gruß Karl
Top
#7
Hallo


noch en Gedicht ....
Wenn ein Fehler im Code ist kann man oft schwer erkennen wer ihn wirklich verursacht?  Ich zerlege dann die If Anweisung in einzelne Teilstrings. Dann sieht man sofort welche Zeile gelb markiert wird. Sollte es "Left(Sheet), 12" sein kann man Sheet.Name vorher in eine Text Variable laden und dann Left auswerten!. 

mfg  Gast 123

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolea(Sheet)
Dim ok As Boolean
With Worksheets("ArbZeitAbr")
 If Left(.Range("N1"), 12) = "Bitte wählen" Then ok = True
 If Left(.Range("A1"), 11) = "Haus wählen" Then ok = True
 If .Range("J1") = "Mon Jahr" Then ok = True
 
 If .Range("J1").Value = "" Or ok = True Then
     Cancel = True
     MsgBox "Erst ... ausfüllen!"
 End If
End With
End Sub
Top


Gehe zu:


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