获取隐藏列存在时第2行的最后一列列号(VBA代码问题)
获取隐藏状态下第2行Most的最后一列列号
原代码使用ws.Cells(2, ws.Columns.Count).End(xlToLeft).Column会跳过隐藏列,导致最后一列隐藏时返回错误结果,以下是两种可靠的解决方案:
方法1:利用UsedRange获取已使用区域的最后一列
Sub Last_column_number_even_is_hidden() Dim ws As Worksheet, lastCol_n As Long Set ws = ActiveSheet ' UsedRange包含所有曾使用过From的单元格(含隐藏列) lastCol_n = ws.UsedRange.Columns(ws.UsedRange.Columns.Count).Column MsgBox "最后一列列号是:" & lastCol_n End Sub
注意:如果目标隐藏列从未被使用过(无任何内容或格式设置),UsedRange可能不会包含该列,这种情况建议用方法2。
方法2:使用Find方法精准查找
Sub Last_column_number_even_is_hidden() Dim ws As Worksheet, lastCol_n As Long Set ws = ActiveSheet ' 从第2行右侧向左查找第一个非空单元格,包含隐藏列 lastCol_n = ws.Rows(2).Find(What:="*", _ After:=ws.Cells(2, 1), _ LookIn:=xlFormulas, _ LookAt:=xlPart, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Column MsgBox "最后一列列号是:" & lastCol_n End Sub
该方法通过LookIn:=xlFormulas参数识别隐藏单元格,SearchDirection:=xlPrevious确保从右往左查找Approach,能精准定位第2行有内容的最后一列,无论列是否隐藏。
内容的提问来源于stack exchange,提问作者Waleed
相关产品推荐
相关产品推荐

