R1C1形式をA1形式に変換する
たびたび、R1C1形式をA1形式に変換することがあったので
R1C1形式をA1形式に変換するFuctionプロシージャを作ってみた。
作ったという程のものでもないんですが…
詳しくは、
VBAのヘルプで「ConvertFormula」で検索してみてください。
まずは、下記のコードを標準モジュールにコピペしてください。
Function toA1(StrR1C1 As String) |
使い方ですが、toA1(StrR1C1)の「StrR1C1」の部分に
R1C1形式のString型を入れてください。
例1:とりあえずMsgBoxで使ってみる。
Sub Macro091231a() |
結果は、
です。
例2:Rangeプロパティで使ってみる。
Excel VBAでRangeプロパティを使うとき、R1C1形式は使えないのでR1C1形式をA1形式に変換する必要があります。
実は、このRangeプロパティのために
R1C1形式をA1形式に変換するFuctionプロシージャを作りました。
For文を入れ子して、変数 i, j など使って範囲を指定する場合
R1C1形式の方がわかりやすいので
R1C1形式を使おうとしたところ、
RangeはA1形式でないといけないようで
Range("R1C1:R3C4")などとするとエラーになりました。
そこで、私はRange(Cells(1,1), Cells(3,4)) の様にし始めました。
しかし、複数のシートやワークブックを使うようになると
絶対参照のほうが確実だなー
と思い、こんな感じに
WorkBooks("Book1.xls").Sheets("Sheet1").Range(Cells(1,1), Cells(3,4))
よく見るとCellsのところが相対参照になっちゃってるし…
そこまで絶対参照にすると分かりにくいし~
という流れで
R1C1形式をA1形式に変換するFuctionプロシージャにたどり着きました。
Sub Macro091231b() |
この例は
1行目に1を1列目まで
2行目に2を2列目まで
…
10行目に10を10列目のセルまで入れます。
実行するとこの様になります。
ascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
| 固定リンク
この記事へのコメントは終了しました。


コメント