Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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
Antworten 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
Antworten 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
Antworten Top
#5
Hallo,

bei welcher Variante?
Gruß Stefan
Win 10 / Office 2016
Antworten 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
Antworten 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
Antworten Top


Gehe zu:


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