Vba 无法在Excel 97-2003工作簿中隐藏列
我试图使用vba在工作表中隐藏A1列。但是我收到一个错误“无法设置范围类的隐藏属性” 这是我的密码: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))
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