【ExcelVBA】セルのアドレスから行番号・列番号を取得する


この記事はプロモーションを含みます。

ExcelVBA

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つ欠点があり、実行時にアクティブセルが移動してしまいます。
他に良さげな方法があれば教えてください。

コメント

タイトルとURLをコピーしました