Libre Office Basic マクロ
セルアドレスのアルファベット列名を数値列番号に変換する。
LibreOfficeに限らずMSのExcelでもセルの番号は「AD23」のように列番号がアルファベットの26進表示、行番号は数字の10進表示
で表されます。人間が操作する場合にはこれでもいいのでしょうが、マクロでセルの操作をする場合には列番号も数値で扱うのが
普通です。しかし、ダイアログなどで人間がセルを指定し、それに基づいてプログラムで処理するときには人間が指定したアルファベット
の列番号を数値に変換する必要が出てきます。
以下はそういった変換処理を行うFunctionのサンプルです。「DEA35」のような複数桁の列表示にも対応しています。
OpenOfficeマクロプログラミング―「Writer」「Calc」「Base」…OOoをBasicで便利に! (I・O BOOKS)
Sub GetColNumTest()
Dim cnum as Long
cnum = GetColNum("DF56")
msgbox("DF56→" & cnum, 0, "列番号変換")
End Sub
Function GetColNum(strAdr as String) as Long
'"A1"形式のセルアドレスの列番号を返す。(Aは0)
'AG7 等の列アドレス複数桁にも対応
Dim nChrCode as Long
Dim numWork as Long
numWork=0
for i=0 to Len(strAdr)-1
nChrCode= ASC(UCASE(Mid(strAdr, i+1, 1)))
if nChrCode >= ASC("A") and nChrCode <= ASC("Z") then
numWork = numWork * 26 + nChrCode-ASC("A") +1
else exit for
end if
next i
'msgbox(numWork, 0, "GetColNum2")
GetColNum= numWork-1
End Function
