有没有办法获取第一个未隐藏列的列号?
因此,如果 A 列被隐藏,则返回 2。
如果 A 和 B 列被隐藏,则返回 3。
如果 A 和 C 被隐藏,则返回 2,以此类推。
没有循环
更新:没有处理最左边的列被隐藏的情况。如果无细胞测试是多余的,那么 Tmdean 的较短解决方案是优越的
Sub FirstNonHidden()
Dim rng1 As Range
Set rng1 = Cells.SpecialCells(xlCellTypeVisible)
If rng1.Column <> 1 Then
MsgBox rng1.Areas(1).Column
Else
MsgBox "No hidden cells"
End If
End Sub
Sub test()
Dim ColCounter As Integer
ColCounter = 1
Do While ColCounter > 0 And ColCounter < 66536
If Sheet1.Columns(ColCounter).Hidden = False Then
MsgBox (ColCounter)
Exit Do
End If
ColCounter = ColCounter + 1
Loop
End Sub
最简单的方法可能是
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
试试这个
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 0).End(xlToLeft).Column
编辑
证明确实有效