セルアドレスより列番号を取得
※セルアドレスよりアルファベット部分と行数部分を別々にして戻り値として返す部品と
アドレスのアルファベット部分を元に列番号を抽出する部品を組み合わせています
■呼び出し元プロシージャ
Sub 列番号取得() Dim columnIndex As Long columnIndex = fncGetColumnIndex("H2") MsgBox columnIndex End Sub
■呼び出し先プロシージャ①
Function fncGetColumnIndex(strAddress As String) As Long '------------------------------------------------------- '機能:セルアドレスよりカラムのインデックス番号を取得 '引数1:セルアドレス '戻り値:カラムのインデックス番号 '------------------------------------------------------- Dim strNum As Long Dim strChr As String Call infoCellAddress(strAddress, strNum, strChr) fncGetColumnIndex = Columns(strChr).Column End Function
■呼び出し先プロシージャ②
Sub infoCellAddress(strCellAddress, strNum, strChr) '------------------------------------------------ '機 能:セルアドレス(String型)より行数のみと ' 列名のアルファベットのみを個別に抜き出す '引数1:セルアドレス(String型) '引数2:行数格納用変数(String型) '引数3:列名アルファベット格納用変数(String型) '----------------------------------------------- '取得したセルアドレスからRowの数字のみ、アルファベットのみを取り出す With CreateObject("VBScript.RegExp") .Global = True '数字のみを取り出す .Pattern = "[A-Z,$]*" strNum = .Replace(strCellAddress, "") 'アルファベットのみを取り出す .Pattern = "[1-9,$]*" strChr = .Replace(strCellAddress, "") End With End Sub
■実行結果