2012-12-20 120 views
5

我是新手腳本,我試圖改進現有的宏。我錄一個宏來刪除重複的,並在其中調用一些其他功能的主要功能增加了,但是當我加我錄製宏我收到此錯誤:Excel - 運行時錯誤'1004':無法設置範圍類的隱藏屬性

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

代碼看起來像

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 

回答

6

一些可能的答案:

  • 您有任何意見選定單元格的一個
  • 你有一些繪製的對象,其不resiz e爲文本
  • 您的工作是保護

當您在事件處理程序的第一行設置一個斷點,然後按F8鍵,單步宏,我假設它崩潰就行了:

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

感謝您的回覆,但我的工作簿受到保護,只需要保護模式,其運行在非保護模式下,請幫助。 – user1917946

+0

對不起,我不瞭解評論!我認爲這可能是一個翻譯問題... –

+0

@AndyBrown我有一個類似的問題...請檢查我的問題在這裏: http://stackoverflow.com/questions/19976469/unable-to-hide-a-列在-Excel的97-2003工作簿 – Xavier

0

試試這個:)

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 

這應該爲你工作:)

相關問題