Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 无法在Excel 97-2003工作簿中隐藏列_Vba_Excel_Hide - Fatal编程技术网

Vba 无法在Excel 97-2003工作簿中隐藏列

Vba 无法在Excel 97-2003工作簿中隐藏列,vba,excel,hide,Vba,Excel,Hide,我试图使用vba在工作表中隐藏A1列。但是我收到一个错误“无法设置范围类的隐藏属性” 这是我的密码: ActiveWorkbook.Sheets("Project").Activate ActiveSheet.Unprotect password Dim cmt As comment Dim iRow As Integer For iRow = 1 To Application.WorksheetFunction.CountA(Columns(1))

我试图使用vba在工作表中隐藏A1列。但是我收到一个错误“无法设置范围类的隐藏属性”

这是我的密码:

  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,以检查工作表是否受到保护,以及该列的单元格中是否有任何可用的注释

第一个MsgBox返回为无注释,第二个返回为false。

因此,工作表不受保护,注释也不存在

困惑于为什么会出现错误

请帮帮我

更新:

我更改了代码,如下所示:

 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
它成功了。但我在其他列标题中添加了注释,我将鼠标悬停在单元格上时会看到这些注释。我现在没有收到评论


删除形状是否与注释有关?

您不能直接在列上使用
entirecolumn
和隐藏属性,这些属性仅适用于Range()对象。取
范围(“A1”).entireclumn.Hidden=True

谢谢

Nag

您也应该删除此行


ActiveSheet.Columns(1)。选择

您的代码对我来说很好??我在excel 2010中,也许你不是。按原样插入,并使用密码保护工作表。评论与否没有什么区别,它会把它隐藏起来。

两件事

  • 不要使用
    Application.WorksheetFunction.CountA(列(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
    

    将行更改为:ActiveSheet.Range(“A1”).EntireClumn.Hidden=True,但仍然是相同的错误应该是注释,但无法将其放置在任何位置。我已将自动筛选添加到我试图隐藏的列中。。。这会成为一个问题吗?不会。你是从没有保护和注释的纸上测试它的吗?然后才连续添加密码和注释。
    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