アプリ版:「スタンプのみでお礼する」機能のリリースについて

基礎的な質問で恐縮ですが、マクロで記録すると普段良く見るA1というような記録ではなくR1C1という記録になってしまうのですが、これは「仕様」なのでしょうか?
マクロ初心者なのですが、このような基本の決まりを理解するためにわかりやすいHPや本があれば教えてください。

「できるExcel VBA2003」は読んで一通り手順はわかったのですが、わからないことが多くて困っています。よろしくご指導ください。

A 回答 (2件)

最初に、こういう話は、関係ないと言う人もいるかもしれませんが、A1方式とR1C1方式とは、開発の時期は別で、当初、Lotus1-2-3(ViciCalc)をみて、Microsoft は一部は真似たようですが、Mac用で、C.シモニーが開発した時には、R1C1方式しかなかったのです。

その後、Lotus1-2-3ユーザーを取り込むために、A1方式を採用しました。本来は、マクロでは、R1C1の仕様のほうが、その考え方を理解すると使いやすいのですし、VBAでは、機能的には、R1C1方式のほうに軍配が上がります。

しかし、ワークシート上では、R1C1方式は、常に起点になる場所をまず決めない見えてこないのです。

以下の場合は、合っているとも間違っているとも言えません。R1C1とA1方式では考え方が違うからです。

>ActiveCell.FormulaR1C1 = "=SUM(R[-6]C:R[-1]C)"
> ↓
>ActiveCell.Formula = "=SUM(A1:A6)"

もし、マクロを書くなら、絶対参照と相対参照を組み合わせて、このように書きます。
Range("A6").FormulaLocal ="=SUM(R1C1:R[-1]C)"

それに、FormulaR1C1は、ほとんど使うことはありません。FormulaLocalは、互換モードでもあるので、A1方式もR1C1方式も入力が可能です。

Formulaの中では、FormulaLocal が一番使いやすいかと思います。いわゆる、Localの関数としては、JIS関数などがあります。

VBAプログラムを組むのでしたら、全体的には、記録マクロは、あまり依存しないほうが上達が早いはずですが、数式については、あまり深く考えないほうがよいです。R1C1でも、A1方式で、どちらでもよいのですが、なるべく数式入力のコードは置かないほうが良いようです。=

VBA側のモードにもよりますが、ふつう、その数式の監視がなされてしまいますので、メモリに負担になりますから、一般的なマクロにするか、WorksheetFunction.Sum のようにしたほうが負担は少ないようです。

入門レベルで分からない部分は、CellsとRange, WorksheetとSheet, WindowとWorkbookなど、オブジェクトとして似ているものが多いので、分かりにくいと思います。こういう場合は、片方が必ず優先し、同位ではないのですが、同じように書かれてある教本は読まないことです。同位で覚えればよいと思ったら、半永久的に覚えられません。

ちなみに、Range, Worksheet, Workbook が優先します。Cells に関しては、ループなどでは、カウンターを代入しやすいのですが、多くの人は、A1方式に慣れているので、Range方式のほうが使いやすいのです。
    • good
    • 0
この回答へのお礼

背景も含めた詳しいお話大変勉強になりました。
ご回答ありがとうございました。

お礼日時:2011/01/28 05:47

もん1冊読んだくらいでは当たり前。


それよりGoogleで「マクロの記録 R1C1」などで照会し
http://officetanaka.net/excel/vba/tips/tips106.htm
などを読んでから質問しては。
ほか
ーー
使うほうからは
Formulaで良いと思うが特殊例で
FormulaLocal
FormulaR1C1
FormulaR1C1Local
などのプロパティを勉強し調べる手見たら。
実際はR1C1形式を気にしなくても良いと思う。もっと別に勉強することが沢山在る。
Microsoftは歴史的に自社創始のR1C1方式に思い入れがあり残しているようだが、普通はA1形式を使うと思う。
http://detail.chiebukuro.yahoo.co.jp/qa/question …

「ツール]→[オプション]→[全般]タブにて「R1C1参照形式を使用する」のチェックを外す、もやってみてください。
左右できないはず。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。参考になりました。

お礼日時:2011/01/28 05:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!