2013-11-14 73 views
0

我想使用vba在我的工作表中隱藏列A1。但我得到一個錯誤「無法設置範圍類的隱藏屬性」無法隱藏Excel 97-2003工作簿中的列

這裏是我的代碼:

ActiveWorkbook.Sheets("Project").Activate 
    ActiveSheet.Unprotect password 

    Dim cmt As comment 
    Dim iRow As Integer 

    For iRow = 1 To Application.WorksheetFunction.CountA(Columns(1)) 
     Set cmt = Cells(iRow, 1).comment 
     If Not cmt Is Nothing Then 

      Cells(iRow + 1, 1) = Cells(iRow, 1).comment.Text 
      Cells(iRow, 1).comment.Delete 
     Else 
     MsgBox "No Comments" 
     End If 
    Next iRow 

    MsgBox ActiveSheet.ProtectionMode 

    ActiveSheet.Columns(1).Select 

    Selection.EntireColumn.Hidden = True 

我得到錯誤

Selection.EntireColumn.Hidden = True 

我已經包括行MsgBox檢查工作表是否受到保護,並且該列的單元格中是否有可用的評論。

1st MsgBox返回爲無評論,第二個返回爲false。

所以表單不受保護,評論也不存在。

困惑爲什麼得到錯誤eventhough。

請幫我

UPDATE:

我改變了這樣的代碼:

ActiveWorkbook.Sheets("Project").Activate 

    Dim sh As Shape 
    Dim rangeToTest As Range 
    Dim lRow As Long 
    Dim c As Range 

    lRow = ActiveSheet.Range("A" & ActiveSheet.Rows.Count).End(xlUp).Row 

    Set rangeToTest = ActiveSheet.Range("A1:A" & lRow) 
     For Each c In rangeToTest 

      For Each sh In ActiveSheet.Shapes 
       sh.Delete 
      Next sh 
     Next c 

    ActiveSheet.Range("A1").EntireColumn.Hidden = True 

和它的工作。但我已經添加了其他列標題的評論,我將鼠標懸停在單元格上。我現在沒有收到評論..

刪除形狀與評論有關嗎?

回答

1

其實我已經添加了評論到我的工作表中的其他列。評論來自activesheet.shapes所以,因爲我無法隱藏列。有一次,我已經設定的配置爲它完美

此代碼的伎倆:

ActiveWorkbook.Sheets(sheetname).Activate 

Dim sh As Shape 
Dim rangeToTest As Range 
Dim lRow As Long 
Dim c As Range 

lRow = ActiveSheet.Range("A" & ActiveSheet.Rows.Count).End(xlUp).Row 

Set rangeToTest = ActiveSheet.Range("A1:A" & lRow) 
    For Each c In rangeToTest 

     For Each sh In ActiveSheet.Shapes 
      sh.Placement = xlMoveAndSize 
     Next sh 
    Next c 

ActiveSheet.Range("A1").EntireColumn.Hidden = True 
0

您不能直接在列上使用entirecolumn和隱藏屬性,這些屬性僅適用於Range()對象。就拿Range("A1").EntireColumn.Hidden = True

謝謝
納格

+0

改了行這樣的: ActiveSheet.Range(「A1」)EntireColumn.Hidden =真 但仍然是相同的錯誤 – Xavier

0

您應該刪除此行也

ActiveSheet.Columns(1)。選擇

+0

我已經刪除..仍然相同的錯誤 – Xavier

0

你的代碼只是正常工作對我?我在2010年的Excel中,也許你不是。按原樣插入,密碼保護表單。評論或沒有做出任何區別,它會隱藏它。

+0

應該是一個評論,但不能把它放在任何地方。 –

+0

我已經添加了自動過濾器到我想隱藏的列中......這會是一個問題嗎? – Xavier

+0

不是。您是否從沒有保護和評論的工作表中進行測試?只有連續添加密碼和評論。 –

0

兩件事情

  1. INTERESTING READ

  2. 不要使用Application.WorksheetFunction.CountA(Columns(1))發現最後一排。請參閱THIS關於如何查找最後一行的鏈接。

這是你正在嘗試(未測試)?

Option Explicit 

Sub Sample() 
    Dim ws As Worksheet 
    Dim cmt As Comment 
    Dim iRow As Long, lRow As Long 
    Dim Password As String 

    '~~> Change as applicable 
    Password = "Blah Blah" 

    Set ws = ThisWorkbook.Sheets("Project") 

    With ws 
     .Unprotect Password 

     lRow = .Range("A" & .Rows.Count).End(xlUp).Row 

     For iRow = 1 To lRow 
      Set cmt = .Cells(iRow, 1).Comment 
      If Not cmt Is Nothing Then 
       .Cells(iRow + 1, 1) = .Cells(iRow, 1).Comment.Text 
       .Cells(iRow, 1).Comment.Delete 
      Else 
       'MsgBox "No Comments" 
       Debug.Print "No Comments" 
      End If 
     Next iRow 

     .Columns(1).EntireColumn.Hidden = True 

     .Protect Password 
    End With 
End Sub 
+0

感謝您的答案。 但我仍然有錯誤。 – Xavier

+0

什麼錯誤和在哪一行? –

+0

請檢查我的問題更新 – Xavier

相關問題