2012-12-20 15 views
5

Ich bin neu im Skripting und ich versuche, ein vorhandenes Makro zu verbessern. Ich nahm einen Makro Duplikat zu entfernen, und hinzugefügt, um es in einer Hauptfunktion, die einige andere Funktionen aufruft, aber ich bin immer diese Fehlermeldung, wenn ich das Makro füge ich aufgezeichnet:Excel - Laufzeitfehler '1004': Die versteckte Eigenschaft der Bereichsklasse kann nicht festgelegt werden

Run-time error '1004': Unable to set the hidden property of the range class 

Der Code sieht aus wie

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim changed As Range 
    Set changed = Intersect(Target, Range("J15")) 
    If Not changed Is Nothing Then 
     Range("A48:A136").EntireRow.Hidden = True 
     Select Case Target.Value 
      Case "Agriculture" 
       Range("A48:A96").EntireRow.Hidden = False 
      Case "Commercial" 
       Range("A97:A136").EntireRow.Hidden = False 
      Case "MDP" 
       Range("A48:A61").EntireRow.Hidden = False 
     End Select 
     Range("J15").Select 
    End If 
End Sub 

Antwort

6

Einige mögliche Antworten:

  • Sie haben einen Kommentar in einem der ausgewählten Zellen
  • Sie einige gezeichnete Objekte haben, die nicht resiz tun e mit Text
  • Ihr Arbeitsblatt

geschützt ist, wenn Sie einen Haltepunkt in der ersten Zeile des Ereignishandler gesetzt und dann F8 durch das Makro zu Schritt drücken, ich nehme an, es auf der Linie abstürzt:

Range("A48:A136").EntireRow.Hidden = True 
+0

Danke für die Antwort, aber meine Arbeitsmappe ist geschützt und will nur im geschützten Modus, es läuft im nicht geschützten Modus, bitte helfen. – user1917946

+0

Entschuldigung, ich habe den Kommentar nicht verstanden! Ich denke, es könnte ein Übersetzungsproblem sein ... –

+0

@AndyBrown Ich habe ein ähnliches Problem ... Bitte überprüfen Sie meine Frage hier: http://stackoverflow.com/questions/19976469/unable-to-hide-a- column-in-excel-97-2003-Arbeitsbuch – Xavier

0

versuchen diese :)

Private Sub Worksheet_Change(ByVal Target As Range) 
ActiveWorkbook.Unprotect "password_here" 
    Dim changed As Range 
    Set changed = Intersect(Target, Range("J15")) 
    If Not changed Is Nothing Then 
     Range("A48:A136").EntireRow.Hidden = True 
     Select Case Target.Value 
      Case "Agriculture" 
       Range("A48:A96").EntireRow.Hidden = False 
      Case "Commercial" 
       Range("A97:A136").EntireRow.Hidden = False 
      Case "MDP" 
       Range("A48:A61").EntireRow.Hidden = False 
     End Select 
     Range("J15").Select 
    End If 
ActiveWorkbook.Protect "password_here" 
End Sub 

Dies sollte für Sie arbeiten :)

Verwandte Themen