1

有没有办法获取第一个未隐藏列的列号?

因此,如果 A 列被隐藏,则返回 2。
如果 A 和 B 列被隐藏,则返回 3。
如果 A 和 C 被隐藏,则返回 2,以此类推。

4

4 回答 4

4

没有循环

更新:没有处理最左边的列被隐藏的情况。如果无细胞测试是多余的,那么 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
于 2012-12-07T05:48:21.900 回答
3
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
于 2012-12-07T05:34:16.463 回答
3

最简单的方法可能是

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
于 2012-12-07T05:55:23.203 回答
0

试试这个

ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 0).End(xlToLeft).Column

编辑

证明确实有效 在此处输入图像描述

于 2012-12-07T05:30:58.237 回答