Excel VBA:从左侧返回第一个非隐藏列?
有没有办法获得第一个非隐藏列的列号?
所以,如果列A隐藏,返回2。
如果列A和B被隐藏,则返回3。
如果A和C隐藏,则返回2等。
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
没有循环
更新:没有处理最左边的列被隐藏的情况。 如果没有细胞testing是多余的,那么Tmdean更短的解决scheme是优越的
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
最简单的方法可能是
Dim column_num As Long column_num = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Cells(1).Column
使用循环会更有效率,但是,像bhuang3的解决scheme,但它可以做得更简单一些。
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
编辑
certificate是行不通的