ExcelVBAで、セルのアドレスから行番号・列番号を取得する方法を解説します。
また、部品化した関数もご紹介したいと思います。
はじめに
この記事では、セルのアドレスから、行番号や列番号を取得する方法を説明します。
例えば、セルのアドレスが「C15」であれば、行番号は「15」、列番号は「3」を取得することが出来ます。
また、この処理が簡単に使用出来るように、部品化したものもご紹介します。
行番号の取得
以下がソースコードになります。
セルのアドレスとして、「Z20」を設定しているので、取得される行番号は「20」となります。
Sub Sample()
ActiveSheet.Range("Z20").Select
MsgBox (Selection.Row)
End Sub
列番号の取得
以下がソースコードになります。
セルのアドレスとして、「Z20」を設定しているので、取得される列番号は「26」となります。
Sub Sample()
ActiveSheet.Range("Z20").Select
MsgBox (Selection.Column)
End Sub
リンク
行番号の取得(部品)
行番号を取得する処理を部品化したものになります。
ソースコード
Public Function GetRowNumByAddress(ByVal cell As String) As Long
Dim r As Range
Set r = Range(cell)
r.Select
GetRowNumByAddress = Selection.Row
End Function
呼び出し方
引数にセルのアドレス(A1など)を渡して実行することで、行番号を取得することが可能です。
Sub Sample()
MsgBox (GetRowNumByAddress("Z20"))
End Sub
列番号の取得(部品)
列番号を取得する処理を部品化したものになります。
ソースコード
Public Function GetColumnNumByAddress(ByVal cell As String) As Long
Dim r As Range
Set r = Range(cell)
r.Select
GetColumnNumByAddress = Selection.Column
End Function
呼び出し方
引数にセルのアドレス(A1など)を渡して実行することで、列番号を取得することが可能です。
Sub Sample()
MsgBox (GetColumnNumByAddress("Z20"))
End Sub
記事は以上です。本記事の方法で、行、列番号を取得することが出来ますが、1つ欠点があり、実行時にアクティブセルが移動してしまいます。
他に良さげな方法があれば教えてください。
リンク
コメント