Excel VBA で列番号を英文字に変換する方法でエラーが出たので対応してみた
Microsoftさんが書いていたものが、英文字2桁までしか対応しておらず、注意が必要となっていたので、対応してみました。
ConvertToLetter関数をそのまま使うと、702列を超えたタイミングでエラーになると思います。
戻り値を見ると、"[A"という値が返ってきています。
というわけで、修正版関数を作ってみました。
(想像以上に修正点がなくって、iAlphaの値が26より大きい場合、再帰的に同じ関数を呼び出すようにしただけです)
数値→英文字に変換する考え方は、Microsoftのページ参照でお願いします。
これだけの修正であれば、最初から実装しておいてくれればよかったのに、とかちょっと思った。
ConvertToLetter関数をそのまま使うと、702列を超えたタイミングでエラーになると思います。
戻り値を見ると、"[A"という値が返ってきています。
というわけで、修正版関数を作ってみました。
(想像以上に修正点がなくって、iAlphaの値が26より大きい場合、再帰的に同じ関数を呼び出すようにしただけです)
Public Function ConvertToLetter(ByVal iCol As Integer) As String
Dim iAlpha As Integer
Dim iRemainder As Integer
iAlpha = Int((iCol - 1) / 26)
iRemainder = iCol - (iAlpha * 26)
If iAlpha > 0 Then
If iAlpha > 26 Then
ConvertToLetter = ConvertToLetter(iAlpha)
Else
ConvertToLetter = Chr(iAlpha + 64)
End If
End If
If iRemainder > 0 Then
ConvertToLetter = ConvertToLetter & Chr(iRemainder + 64)
End If
End Function
数値→英文字に変換する考え方は、Microsoftのページ参照でお願いします。
これだけの修正であれば、最初から実装しておいてくれればよかったのに、とかちょっと思った。