Excel VBA:是否从左侧返回第一个未隐藏的列?
有没有办法获取第一个未隐藏列的列号 因此,如果列A被隐藏,则返回2。Excel VBA:是否从左侧返回第一个未隐藏的列?,excel,vba,Excel,Vba,有没有办法获取第一个未隐藏列的列号 因此,如果列A被隐藏,则返回2。 如果列A和B被隐藏,则返回3。 如果A和C被隐藏,则返回2,以此类推 试试这个 ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 0).End(xlToLeft).Column 编辑 证明这是有效的 试试这个 ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 0).End(xlToL
如果列A和B被隐藏,则返回3。
如果A和C被隐藏,则返回2,以此类推 试试这个
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 0).End(xlToLeft).Column
编辑
证明这是有效的
试试这个
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 0).End(xlToLeft).Column
编辑
证明这是有效的
子测试()
作为整数的Dim ColCounter
ColCounter=1
当ColCounter>0且ColCounter<66536时执行此操作
如果Sheet1.Columns(ColCounter).Hidden=False,则
MsgBox(ColCounter)
退出Do
如果结束
ColCounter=ColCounter+1
环
端接头
子测试()
作为整数的Dim ColCounter
ColCounter=1
当ColCounter>0且ColCounter<66536时执行此操作
如果Sheet1.Columns(ColCounter).Hidden=False,则
MsgBox(ColCounter)
退出Do
如果结束
ColCounter=ColCounter+1
环
端接头
无循环
更新:不处理最左边的列被隐藏的情况。如果无单元测试是多余的,则Tmdean的较短解决方案更优越
Sub-FirstNonHidden()
变暗rng1 As范围
设置rng1=单元格。特殊单元格(xlCellTypeVisible)
如果是rng1.1列,则
MsgBox rng1.区域(1).列
其他的
MsgBox“无隐藏单元格”
如果结束
端接头
无循环
更新:不处理最左边的列被隐藏的情况。如果无单元测试是多余的,则Tmdean的较短解决方案更优越
Sub-FirstNonHidden()
变暗rng1 As范围
设置rng1=单元格。特殊单元格(xlCellTypeVisible)
如果是rng1.1列,则
MsgBox rng1.区域(1).列
其他的
MsgBox“无隐藏单元格”
如果结束
端接头
最简单的方法可能是
Dim column_num As Long
column_num = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Cells(1).Column
不过,使用循环会更有效一些,就像bhuang3的解决方案一样,但它可以变得更简单一些
Dim cursor As Range, column_num As Long
Set cursor = Range("A1")
Do Until cursor.ColumnWidth > 0
Set cursor = cursor.Offset(0, 1)
Loop
column_num = cursor.Column
最简单的方法可能是
Dim column_num As Long
column_num = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Cells(1).Column
不过,使用循环会更有效一些,就像bhuang3的解决方案一样,但它可以变得更简单一些
Dim cursor As Range, column_num As Long
Set cursor = Range("A1")
Do Until cursor.ColumnWidth > 0
Set cursor = cursor.Offset(0, 1)
Loop
column_num = cursor.Column
不幸的是,这对我不起作用。请说明您遇到了什么问题。无论我遇到什么问题,它都返回1。请解释您遇到的问题。无论整数的最大值是32767,它都返回1,因此检查<65536是重复的。@Tmdean谢谢..我只是忘记了excel中列的最大计数…excel 2007和later@Tmdean我明白了,非常感谢:)整数的最大值是32767,所以检查<65536是重复的。@Tmdean谢谢..我只是忘记了excel中列的最大计数…excel 2007和later@Tmdean我明白了,非常感谢:)这会返回一列,不管是否隐藏任何单元格。是的。。。根据我对问题的理解,这就是它应该做的…+1。经过进一步思考,我同意这会返回一列,不管是否隐藏任何单元格。是的。。。根据我对问题的理解,这就是它应该做的…+1。经过进一步思考,我同意我很好奇“有没有办法获得第一个未隐藏列的列号?”这一点尚不清楚。我在谷歌上搜索这个问题的解决方案,结果中出现了这个问题,我似乎很清楚被问到了什么。投票结束问题的人熟悉Excel和VBA吗?顺便说一句,我不是在挖苦人,只是想真正理解这个问题为什么被关闭,以便更好地理解什么是可以接受的,什么是不可以接受的。我很好奇“有没有办法获得第一个未隐藏的列的列号?”这一点还不清楚。我在谷歌上搜索这个问题的解决方案,结果中出现了这个问题,我似乎很清楚被问到了什么。投票结束问题的人熟悉Excel和VBA吗?顺便说一句,不要挖苦人,只想真正理解这个问题为什么被关闭,更好地理解什么是可以接受的,什么是不可以接受的。