« VBAでセルの高さと幅を自動調節する | トップページ | コピーしてコピーしたセルを挿入する »

2010年3月 2日 (火)

列番号を英文字に変換してRangeプロパティに使う

2つの変数、例えば i と j などで
For文を使ってセルを指定したいとき
Rangeプロパティのみ対応していて
Cells( i, j )ではできないプロパティがあるので
少し手間が必要です。

なぜなら、
Ragneプロパティは、A1形式にしか対応してないからです。
2つの変数 i、j を使ってA1形式にする必要があります。

マイクロソフトサポートオンラインで次の頁がありましたので

Excel で列番号を英文字に変換する 方法

この頁の
ConvertToLetterファンクションプロシージャを使ってやってみます。

列番号を英文字に変換するしくみについては
この頁で具体例を挙げて説明されています。
Chr関数のアルファベットなんて使う時ないな~
なんて思ってましたが
こういうときに使うんですね。

列番号を英数字にするしくみは
要するにアルファベットは全部で26文字なので
26進数ですね。

26までは、普通にAからZまでで
27なったら1つ繰り上がってAA
28から52まではABからAZ、
53 (=26*2+1)になったらまた繰り上がってBA

というふうです。

次のコードは、
ConvertToLetterファンクションプロシージャを
標準モジュールにコピペしてから実行してください。

列番号を英数字に変換してRangeプロパティに使うコード:

Sub macro100302a()
'列番号を英数字に変換してRangeプロパティに使う

    Sheets.Add
    Dim i, j As Integer
    For i = 1 To 100
        For j = 1 To 100
            'Rangeプロパティに使う
            Range(ConvertToLetter(j) & i) = ConvertToLetter(j) & i
        Next j
    Next i
End Sub

実行後のシートの一部
Vba20100302a

単純にセルにA1形式の文字列を入れただけです。

R1C1形式をRangeプロパティに使いたいときは
記事「R1C1形 式をA1形式に変換する
を参考にしてください。

|

« VBAでセルの高さと幅を自動調節する | トップページ | コピーしてコピーしたセルを挿入する »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 列番号を英文字に変換してRangeプロパティに使う:

« VBAでセルの高さと幅を自動調節する | トップページ | コピーしてコピーしたセルを挿入する »