• ベストアンサー

【Excel VBA】計算式を絶対参照で記録したい

業務上Excelのマクロを頻繁に作っています。 マクロの自動記録で計算式を記録すると、R1C1形式の相対参照で記録されるのですが、 最終行等を変数で扱っている為、相対参照の場合ずれが生じてしまいます。 また、知識があまりない人から「コードが分かりづらい」と大変不評です。 いつも手動で地道に直しているのですが、如何せん面倒です。 記録する時点で、A1形式の絶対参照に設定する事は出来ないでしょうか? 使用バージョン:Excel 2000

  • Lambo
  • お礼率48% (12/25)

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

>いつも手動で地道に直しているのですが、如何せん面倒です。 計算式を一旦文字列にして記録し、VBEで「置換」作業すればどうでしょうか。 少しは楽になるかも知れません。 「マクロの記録」時に、例えば =SUM(A1:B1) と入力を終えた時点で、Enterで確定する前に、F2キーを押下げて編集モードにします。 文字カーソルを先頭(=記号の前)に移動し # を入力し、Enterで確定する。 以上で、記録されたコードは下記のようになります。   Range("C1").Select   ActiveCell.FormulaR1C1 = "#=SUM(A1:B1)"   Range("C2").Select 次に、VBEのコードウインドウで編集メニューの「置換」を使ってコードを加工します。 検索する文字列に、#= 置換後の文字列に、= として、「すべて置換」ボタンをクリックすれば   ActiveCell.FormulaR1C1 = "=SUM(A1:B1)" となります。 同じようにして、左辺の FormulaR1C1 を Formula に「置換」をします。   ActiveCell.Formula = "=SUM(A1:B1)" となれば完成です。 意図しない部分が「置換」されないように十分注意して行う必要があります。 「置換」作業を行うとき、コード範囲を選択して、「すべて置換」すれば選択範囲内のみで「置換」が実行されます。

Lambo
質問者

お礼

なるほど、コード上ありえない記号を用いて計算式を文字列として認識させ、その後置換処理で計算式に変換すればよいのですね。 問題は、その計算式のセルを使って展開する事が多いので、使用できる箇所が限られてしまう事ですが…。 とはいえ大変参考になりました。 有り難うございます。

その他の回答 (3)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.4

>問題は、その計算式のセルを使って展開する事が多いので、 >使用できる箇所が限られてしまう事ですが…。 何故ですか? 使用できる箇所が限られてしまうことは無いと思いますよ。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

関数を自動記録するとR1C1形式で記録されることを、最近知った者です。エクセルは大昔から使っていますが、関数入力を自動記録しようというニーズはありませんでしたね... それはさておき、仕様だからどうしようもない様な気はしますが、エクセルの沼は深いので、どなたからか解決策が出てくるかもしれません。 VBAで式をA1からR1C1形式に変換(その逆も可)するコードを見つけましたので、参考URLに貼っておきます。ページのかなり下の方に、「参照形式の変換」という項があります。ご参考まで。

参考URL:
http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page7.htm
Lambo
質問者

お礼

やはり仕様ですか…。 色々と探してみたのですが、全く情報が見つかりませんでした。 参考URLを拝見しました。 確かにR1C1形式をA1形式に変換はできるようですが、コード自体を変換する様な処理は出来なさそうですね。 情報ありがとうございます。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

絶対参照と相対参照を切り替えるには? http://www.geocities.jp/happy_ngi/YNxv9e96.html こちらでしょうか。

Lambo
質問者

補足

すみません。 当方絶対参照と相対参照の事を勘違いしておりました。 ($A$1の事ではなく、A1形式の事を絶対参照だと思っていました) 私がやりたいのは、A1形式のマクロの記録です。

関連するQ&A

  • エクセルのマクロで相対参照への切替

    本当に初歩的なことだと思うのですが、「新しいマクロの記録」を行い、相対参照に切り替えて「マクロの記録終了」になりますが、これがツールバーに表示されていて、相対参照への切替ボタン表示されていません。どうすれがいいか困っています。 EXCELはEXCEL2000です。よろしくお願いします。

  • マクロの相対セル参照記録って?

     エクセルで毎回同じ仕事をするもので少し前からマクロに取り組んでいます。  簡単な物しか作れませんが、確かに便利です。  操作手順を記録して行くだけの簡単なやり方しか出来ませんが(コードはよく分からない)その中で相対セル参照記録というものがありますが、これはどんな場合に使うのかよくわかりません。  私はコード、言語、モジュール等は理解できていないので編集しょうにも出来ず、毎回、削除、作り直ししています。  相対参照記録が必要になる場合とはどんな時なんでしょうか?参考書を見ても、『こんな場合に必要なんですよ』と詳しく記述されていないので意味が理解できません。やり始めたばかりなので何でもかんでも手順記録したのですが、エラーが出て再現しません。詳しい方、よろしくお願いします。

  • エクセルのマクロ絶対参照と相対参照の指定方法

    私は、エクセルでマクロ自動記録を勉強しはじめたものです。 エクセル2000の参考書で絶対参照と相対参照の指定方法の説明をみると、 「マクロの記録中に表示される<記録終了>ツールバーの<相対参照>ボタンで切り替えます。 このボタンをくぼんでいない状態にすると絶対参照、クリックしてくぼんだ状態にすると相対参照で記録されます。」 以上のように解説されているのですが、実際に試してみると、 ステップ1. ツールバー→マクロ→新しいマクロの記録→マクロ名とショートカットキー入力→OK ステップ2.操作どうりに自動的にマクロが記入される。 ステップ3.ツールバー→マクロ→マクロの終了→クリック ステップ4.絶対参照のマクロが登録されてしまいます。 絶対・相対参照の切り替えステップをが見つけることが出来なくて困っています。 過去カテによれば マクロの記録時に「操作終了」というツールボックスが表示されますよね? 2つあるボタンのうちの右側のボタンが相対参照と絶対参照を切り替えるためのボタンになっています. もしも「操作終了」のボタンが表示されないのであれば,一度ダミーでマクロの記録を実行して,記録中にメニューの下の空白部分(灰色の部分)を右クリックし,「記録終了」をチェックすると,ツールボックスが表示されるようになります。 これも試しましたが、マクロの記録時に「操作終了」も 記録中にメニューの下の空白部分(灰色の部分)も見付ける事が出来ません。 WindowsMe Office2000Personalに於いては、絶対・相対参照の切り替えは不可能なのでしょうか? 可能なら絶対・相対参照の切り替えボタンを表示させる方法を教えて頂きたいと思います、よろしくお願いします。

  • マクロの相対参照、絶対参照

    マクロを使い始めたばかりなんですけど 相対参照と絶対参照で困ってます 任意のセル(A1とする)を選択しておいてマクロの開始 B1のセルをコピー 最初のセル(A1)に貼り付け としたいんですけど B1のセルをコピー、を絶対参照にして 最初のセル(A1)に貼り付け、を相対参照にしてマクロに記録しました そのマクロをC1で使うと A1のセルにB1のセルを貼り付けてしまいます C1でマクロを使えばB1のセルをC1に貼り付けるようにはどうすればいいのでしょう 分かりにくい説明で申し訳ありません

  • Excel2007のマクロで教えてください

    Excel2003でも同じかもしれませんが、マクロを記録する場合、「相対参照で記録」のボタンの使い方がわかりません。「マクロの記録」ボタンをクリック後にセルを範囲選択さえしなければ、このボタンを使う必要は無いように思うのですが…(逆に「マクロの記録」ボタンをクリックしてマクロをスタートさせたあとでセルを範囲選択した場合、「相対参照で記録」ボタンは意味を成さないと思います。何か勘違いしているのでしょうか?) お忙しいところを申し訳ありませんが、ご存知の方よろしくお願い致します <(__)>

  • Excel2007のVBAについて

    Excel2007のVBAについて Excel2007以前では「マクロの記録」を実行して罫線や図形の描写を行って、「記録終了」を行うと作業していたコードが記述され、それを加工したりして使っていましたが、Excel2007で同じように行ってもコードが記述されてませんでした。 セルの操作等はコードが記述されていました。 どこか、私の操作方法が間違っているのでしょうか。また2003のようにコードを記述させる方法が別途あるのでしょうか、よろしくお願いします。 関係ないとおもいますが、 「Excelのオプション」で「開発タブをリボンに表示する」はチェック入れてあります。 「マクロの設定」では「すべてのマクロを有効にする」にチェックしています。

  • 相対参照でマクロを記録する方法

    こんばんは、教えて欲しいことがあり、投稿しています。 相対参照で、マクロを記録したいと思っています。 そのためのツールバー(四角いツールバーです。)が出てきません。 どなたかこのツールバーの出し方を教えて下さい。 よろしくお願いいたします。 なお、エクセルの2000と、2002で作業をしています。 どうぞよろしくお願いします!!

  • エクセルV2003です、マクロ記録時の相対参照、絶対参照のアイコンが表示させませんが・・・

    エクセルV2003です、マクロ記録時の相対参照、絶対参照のアイコンが表示させませんが、何処を操作すると出てまいりますか? ツール→ユーザー設定等々で確認してみましたが、見つけることが出来ませんでした。。 ~以前は使用していたのですが、いつからか消えていました。。。 初歩的なことかもしれませんが、よろしくお願いします。

  • Excel2002でマクロやVBAが使えない

    ファイルNO230881にExcel97で作ったマクロがExcel2000で使えないという質問がありましたが、私の場合Excel2000で作ったマクロがExcel2002で使えません。 ファイルNO230881の方は自動修復で直ったそうですが、自動修復のリストにExcel が乗ってきていないので困っています。 起きている症状は、 Excel2000で作成したマクロを、Excel2002で実行しようとしたら、***はマクロを含んでいますとメッセージが出て、マクロを有効にすると、オブジェクトライブラリは登録されていませんというメッセージが出てきたので、OKにし、もう一度マクロを有効にしたら、「***の修復   ***にエラーが検出されましたがMicrosoftExcelは次の修復を行うことによってファイルを開くことができました。修復を保持するにはこのファイルを保存してください。  VisualBasicプロジェクトが失われました。 ActiveXコントロールが失われました。」というエラーメッセージが出てきて、マクロがなくなってしまい、また新しくマクロを記録しようとしても、記録できません、というエラーメッセージが出てきてマクロが作れなくなってしまいました。 尚、セキュリティは中にしてありますが、低でもマクロの記録ができないです。なぜでしょう? VBAプロジェクトのライブラリファイル参照がうまくいっていないということはわかるんですが、VBエディタの[ツール]>[参照設定]がグレーで開くことができません。 みなさんのお知恵をお貸しください。

  • EXCEL2000 マクロダイアログボックス

    よろしくお願いします。 先日EXCEL2000にてツール→マクロ→新しいマクロの記録からマクロを作成しました。その作っているときに表示されていたはずの”相対参照ボタンや記録終了”のダイアログボックス「みたいものがあると思います…」が、先日思わず×を押して閉じてしまいました。 それからです、ツール→マクロ→新しいマクロを開いても、もう二度と出てこなくなりました。 さていったいこのツールはどこへ行ったのでしょうか? どこかを押せば出てくるとは思うのですが、分かりません。 ひとつアドバイスをよろしくお願いいたします。

専門家に質問してみよう