最初に表示された列の列番号を取得する方法はありますか?
したがって、列 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
編集
機能することの証明