Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Laufzeitfehler 1004

Betrifft: Laufzeitfehler 1004 von: Markus
Geschrieben am: 10.11.2014 10:20:23

Hallo zusammn,

ich habe folgendes Makro,
dieses vergleicht 2 Werte miteinander und setzt diesen als gegeben.

Private Sub Worksheet_Calculate()

 If Range("B9").Value <> Range("AA4") Then
     ActiveSheet.Unprotect Password:="majacz"
   If ActiveSheet.Range("AB4").Value = "0" Then
      Range("AA4").Value = Range("B9").Value
      ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
      , AllowFormattingCells:=True, AllowFiltering:=True, Password:="majacz"
      Exit Sub
    Else
     If Range("B9") = "" Then
     Range("AA4").Clear
     ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
     , AllowFormattingCells:=True, AllowFiltering:=True, Password:="majacz"
     Exit Sub
    Else
         MsgBox "Achtung! " _
           & vbCrLf & "Bitte folgende Info beachten! " _
           & vbCrLf _
           & vbCrLf & Worksheets("Test").Range("AB4")
    End If
      Range("AA4").Value = Range("B9").Value
    End If
    End If

    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
    , AllowFormattingCells:=True, AllowFiltering:=True, Password:="majacz"
  Exit Sub
End Sub

Durch diese Makro bekomme ich in einem anderen Sheet bei der Ausführung des Makros einen Laufzeitfehler 1004 "Die Locked-Eigenschaft des Range-Objektes kann nicht festgelegt werden.

an dieser Stelle im Code

Range("B12:D12").Select
Selection.Locked = False
Range("H16").Select
Selection.Locked = False

Woran kann das liegen und was muß ich ändern?

Vielen Dank und Gruß Markus

  

Betrifft: Dann ist der Blattschutz noch aktiv ...oT von: {Boris}
Geschrieben am: 10.11.2014 10:28:33

VG, Boris


  

Betrifft: AW: Dann ist der Blattschutz noch aktiv ...oT von: Markus
Geschrieben am: 10.11.2014 10:36:37

Hallo,

Nein, den hebe ich als ersten Schritt im Makro auf.

Das Komische ist ohne das neue Makro läuft es!

Gruß Markus


  

Betrifft: AW: Laufzeitfehler 1004 von: Ewald
Geschrieben am: 10.11.2014 10:36:32

Hallo,

könnte es sein das die andere Tabelle auch einen Blattschutz hat oder das es vebundene Zellen gibt.

Gruß Ewald


  

Betrifft: AW: Laufzeitfehler 1004 von: Markus
Geschrieben am: 10.11.2014 10:37:58

Hallo,

verbundene Zellen gibt es!
Was hat das damit zu tun?


  

Betrifft: AW: Laufzeitfehler 1004 von: Ewald
Geschrieben am: 10.11.2014 11:31:29

Hallo,

bei verbundenen Zellen kannst du Locked nur über Mergetarea setzen.

da du aber schreibst, ohne das erste Makro läuft das zweite, tippe ich eher auf den Blattschutz.

Lass das Makro2 mal im Einzelschritt durchlaufen und kontrolliere ob der Blattschutz wirklich aufgehoben ist.

Gruß Ewald


  

Betrifft: AW: Laufzeitfehler 1004 von: Markus
Geschrieben am: 10.11.2014 14:46:47

Hallo,

du hast Recht der Blattschutz rutscht wieder rein!

Wieso eigentlich?

Gibt es eine Lösung, um diese Zeile nicht immer zu wiederholen?

Danke Gruß Markus


  

Betrifft: AW: Laufzeitfehler 1004 von: Ewald
Geschrieben am: 10.11.2014 17:52:29

Hallo,

du setzt ja im Calculate-Ereignis immer den Blattschutz, wenn das so sein soll ist es ja auch OK.

Du mußt nur im zweiten Makro den Blattschutz am Anfang aufheben und am Ende erneut setzen.

Es reicht auch den Blattschutz nur einmal zu setzen, wenn vorher eine Sprungmarke ist

Private Sub Worksheet_Calculate()
      
       If Range("B9").Value <> Range("AA4") Then
           ActiveSheet.Unprotect Password:="majacz"
         If ActiveSheet.Range("AB4").Value = "0" Then
            Range("AA4").Value = Range("B9").Value
            GoTo Ende
          Else
           If Range("B9") = "" Then
           Range("AA4").Clear
           GoTo Ende
          Else
               MsgBox "Achtung! " _
                 & vbCrLf & "Bitte folgende Info beachten! " _
                 & vbCrLf _
                 & vbCrLf & Worksheets("Test").Range("AB4")
          End If
            Range("AA4").Value = Range("B9").Value
          End If
          End If
      Ende:
          ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
          , AllowFormattingCells:=True, AllowFiltering:=True, Password:="majacz"
      End Sub
Gruß Ewald


 

Beiträge aus den Excel-Beispielen zum Thema "Laufzeitfehler 1004"