• ベストアンサー

Excel2003 マクロのR1C1記録

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

  • r2san
  • お礼率25% (1309/5228)

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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方式のほうが使いやすいのです。

r2san
質問者

お礼

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

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

もん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_detail/q1410583394 の 「ツール]→[オプション]→[全般]タブにて「R1C1参照形式を使用する」のチェックを外す、もやってみてください。 左右できないはず。

r2san
質問者

お礼

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

関連するQ&A

  • 2007 EXCEL マクロの使い方について

    EXCEL 2000/2002/2003対応の本を見ながらマクロを使った「介護日誌」を2007で作成していますが、2007年以前のバージョンだと[表示]ー[ツールバー]ー[フォーム]メニュを選択すると、[フォーム]ツールバーが表示されるはずなのですが、2007にはそういった[フォーム]ツールバーがなく、ボタンを作成できないのですが、どうすればいいのでしょうか? マクロの記録、終了ボタンはわかるのですが、よくわかりません。 基本的なことで恐縮ですが、よろしくお願いいたします。

  • Excel2007 マクロが記録されない

    Excel2007を使用しています。 Excelのオプション画面から、[開発]タブをリボンに表示するに チェックを入れています。 そこで質問です。 [開発]タブを選んで[マクロの記録]ボタンを押して 図形を貼り付け、文字色や配置を変更して、 [記録終了]ボタンを押下したのですが、何も記録されません。 OffceXPのときには、シェイプを張り付けるマクロや、 文字の色を変更するシェイプが記録されていたのですが。。。 何か設定が必要なのでしょうか? もし何か必要な手順がございましたら、教えて頂けませんか? よろしくお願いいたします。

  • Excel2007 [図形]マクロ記録

    Excel2007で次の手順で「雲形吹き出し」をマクロ記録したのですが記録されない!?、 Excel2000なら記録できました。 [挿入]⇒[図形]⇒[雲形吹き出し] 質問:Excel2007で記録するための方法をご教授お願いいたします。

  • Excel2010のマクロの記録について

    Windows 7でExcel2010を使用しています。 マクロの記録ボタンを押して、マクロの保存先を「個人用マクロブック」とすると 「起動フォルダーにある個人用マクロブックは、記録のために開かれた状態でなければなりません」 と出てきます。 色々検索をして調べてみました。 すると、ヘルプの中で「使用できないアイテム」を確認しましたか? という意見が圧倒的に多かったのですが、Excel2010のヘルプにはそんな物はありませんでした。 そこで、Alt+F11でVBAをあけてみて、左側のプロジェクト一覧を見たら、 atpvban.xls(ATPVBAEN.XLAM) VBAProject(Book1) VBAProject(FUNCRES.XLAM) があり、 Excel2007にあった VBAProject(PERSONAL.XLSB) がありません。 検索によるとPersonal.xlsbが必要なのかどうかわかりませんが、Excel2007にはそれがあり、記録もできました。 いったい、何が起こっているのかさっぱり分かりません。 個人的には、いつも「個人用マクロブック」が使えて、マクロの記録がどのファイルでもできたらよいと思っています。 どうすればよい顔してください。 よろしくお願いいたします。

  • Excel 2007のマクロ記録について

    Excel 2007のマクロ記録は、詳細はできないのでしょうか。 Excel 2000では、かなり詳細まで記述してくれますが、Excel 2007で同じことを 行っても、記述がありません。グラフの枠や、色などを変えるマクロを試してみましたが、記述されませんでした。  なにか、設定が不足しているのでしょうか このままだと、Excel 20007はVBAが使えないマクロとなりそうです。 どなたか、ご存じの方ご指導をお願いいたします。  マイクロソフトに問い合わせたら、有償相談だそうです。詳細内容を聞くのではなく、Excel2000と同じかどうか聞くだけでもですって。理不尽だと思います。

  • EXCEL自動マクロ登録でのR1C1形式でソースを作ることはできますか?

    エクセルでマクロの記録をすると A1形式の表記になってしまいますが R1C1形式にできないでしょうか? 自動マクロ登録で登録したコードを参照し VBAのソースを書いているのですが ループ処理などでいちいちR1C1形式に直すのが面倒です。 またそのまま使用してもVBAソース上に A1形式とR1C1形式のレンジ指定・セル指定が混在してしまいます。 何かすっきりするコーディング方法はあるでしょうか?

  • エクセル マクロ

    マクロ初心者です。 マクロに記録させたい手順が長く、途中でミスすることがあり困っています。 手順の記録を途中まで行なって一旦記録し、またその続きから記録するようなことは出来ますか? もしくは、手順をいくつかの行程に分けてマクロ記録し、それらをドッキングさせて一つのマクロにするようなことは出来ますか? ちなみにVBAは全く分からないので使えません。 よろしくお願いします。

  • エクセルのマクロについて

    エクセル(2002)で「マクロの記録」を利用して、手順をマクロ化して便利に使用しています。 さて、保存後に現在開いているブックを閉じたいのですが、閉じるという操作をすると、きっと記録されませんよね?保存までを記録させて、閉じる操作は手書きで追加記入したいのですが、どのように記載すればよろしいでしょうか。 マクロやVBAの勉強が不十分でお恥ずかしい限りです。

  • マクロの記録で何も記録できない理由は?

    「ブックを開く」という動作が知りたかったので、 現在開いているブック1から、マクロの記録ボタンを押し、 デスクトップにあるブック2をダブルクリックして開きました。 しかし記録終了ボタンを押した後、 ブック1の標準モジュールを確認しても Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2009/10/16 ユーザー名 : ' End Sub と何も記録できていません。 何故でしょう? ちなみにブックを開く方法は http://officetanaka.net/excel/vba/file/file01.htm で確認できました。 なのでマクロの記録で記載されない理由を教えてください。 エクセル2003です。

  • なぜ「マクロの記録」はaccessにはないのでしょうか?

    私はオフィス2003を使用していますが エクセル、ワード、パワーポイントには「マクロの記録」と言う機能があるのに accessにはないのでしょうか? この機能のおかげでものすごくVBAの学習ができてると思うのです。 もし理由を知っているからがいらっしゃったら教えてください。 よろしくお願いします。

専門家に質問してみよう