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のページ参照でお願いします。
これだけの修正であれば、最初から実装しておいてくれればよかったのに、とかちょっと思った。