• ベストアンサー

エクセルVBAで定義したセルを使う時

シート1のセルA1にTESTと定義して、標準モジュールでRange("TEST")と書いています。 同じプログラムを別のシートでも使おうと思ったのですが、 同じブックで別のセルに同じ名前を定義できないようです。 そこで、シート2のセルA1にはTESTAという名前を定義しました。 アクティブなシートがシート1の時は、Range("TEST") アクティブなシートがシート2の時は、Range("TESTA")としてプログラムを書いていますが、 シート名を変えられたら、使えなくなります。 何か良い方法は無いでしょうか?

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

  • ベストアンサー
  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

シートレベルで名前を定義すれば出来ます。 例えばA1にTESTと名前を付けたい場合、 A1を選択→数式→名前の定義→範囲欄を該当のシート名を選び、名前を付けてOKします。 これは各シート毎に設定可能なので、シート1、シート2それぞれ行います。 プログラム的には、どのシートがアクティブでも Range("TEST") でOKです。

miya2004
質問者

お礼

ありがとうございます。 範囲をシートだけに出来るのですね。

関連するQ&A

  • EXCEL 名前の定義 VBA参照の方法

    EXCELの名前の定義を、VBAから参照する方法を教えていただきたいのですが  名前を定義する    シートA  名前:TEST 範囲:シートA    シートB  名前:TEST 範囲:シートB    シートC  名前:Pass 範囲:ブック  それぞれをVBAから参照する場合    Range("TEST").Value: シートA内のVBA    Range("Pass").Value  では、参照できず。    Worksheets("シートA").Range("TEST").Value    Worksheets("シートC").Range("Pass").Value  にて、参照できました。 明示的なシート名入力が必要なのでしょうか? よろしくお願いいたします。

  • エクセルのユーザー定義関数で(VBA)

    エクセルのVBAで、セルに「=SheetName」と書き込めば、その関数を書き込んだセルが属するシート名をセルに代入さるようなユーザー定義関数を作りたいと考えています。 で、標準モジュールに Public Function SheetName(test) SheetName = ????? End Function と、書き込んでふと止まりました。 ユーザー定義関数を書き込んだシートの名前ってどうやって取得すればいいのでしょうか?VBでいうSenderみたいなのってあるんでしょうか? どなたか?詳しい方教えて頂けないでしょうか? 宜しくお願いいたします。

  • VBAにおけるセルの名前の参照方法

    現在、Aシート、Bシートがあり、BシートのA1セルに test という名前を付けました。(範囲はブック) Aシートが再計算されれば、BシートのA1セルをメッセージボックスで表示したいのですが、調べましたが、よくわかりませんでしたので、詳しい方教えてください。 範囲はブックになっているし、他に同じセルの名前もつけれないようになっているので、 このような記述で大丈夫かと思いましたがエラーが出でしまいました。 なぜでしょうか?やはりわざわざ毎回シート名から記述が必要なのでしょうか? Private Sub Worksheet_Change(ByVal Target As Range)      MsgBox (Range("test").Value) End Sub このようにシート名から書けば表示されました。 Private Sub Worksheet_Change(ByVal Target As Range)      MsgBox (Worksheets("B").Range("test").Value) End Sub

  • 名前付きセルの利用方法 Excel2013 VBA

    ExcelでVBAで設定値を書いたシートを参照する際に、 Shell Worksheets("設定").Range("B1") と、書くのが見にくいので、名前付き参照で見やすくできないかと試してみたのですが うまくいきません。 ※名前付きセル範囲は手動で作って、"ブック"という範囲扱いになっているようです。 標準モジュールのテスト関数で Public Sub test() MsgBox Range("起動Path").Value End Sub とすると正しく文字列が表示できるのですが、 同じ事をSheet1モジュールのダブルクリックイベントに入れたらエラーとなります。 ※上記のMsgBox文をイベントの途中にコピペしてみました。 ちょっと理由がよくわからないので、どなたかお助けくださいませんでしょうか…

  • Excel : 関数内からセルを更新したい

    実行環境は Excel 2000 です。 新規ブックに、 標準モジュールを追加し、 Function Test()   Cells(2, 2) = "OK"   Test = 2 End Function という関数を追加します。 Sheet1 の、 セル「A1」に「10」を入れます。 セル「A2」に「=Test() + A1」 セル「A1」を変更すると、 関数「Test()」が呼び出されます。 このとき、コードのように、B2 のセルに「OK」を 表示させたいのですが、 「アプリケーション定義またはオブジェクト定義のエラーです。(1004)」 のエラーが発生してできません。 マクロやボタンなどのイベントプロシージャでは可能なのですが、上記のようにセルに組み込んだ関数が、 更新により実行された場合はできないのでしょうか? (Cells の指定を Workbooks(1).Worksheets(1).Cells(2, 2) としてもダメでした) (「書式」→「セル」→「保護」→「ロック」はチェックされていません) すみませんが、よろしくお願い致します。

  • excel vba 選択されたセルの範囲を別のセル

    excel vba 選択されたセルの範囲を別のセルに書き込みたい。 お世話になっております。 乱筆乱文お許し下さい。 EXCEL VBAについてですが、或るブックを閉じる時(Private Sub Workbook_BeforeClose(Cancel As Boolean))にその時点でACTIVEなsheetの名前を指定シートの指定セルに書き込み、そのブックを開く時(Private Sub Workbook_Open())に指定シートの指定セルの値の名前sheetをACTIVEにすることは出来たのですが、もう一歩進んで、 ブックを閉じる時(Private Sub Workbook_BeforeClose(Cancel As Boolean))にその時点でselectされているcellの範囲(単一セル・複数セル共に、名前がついていたら名前、ついていなければrangeを表す文字列)を指定シートの指定セルに書き込み、そのブックを開く時(Private Sub Workbook_Open())に指定シートの指定セルの値の名前cell範囲をselectするようなことがやりたいのですが、私の検索の仕方が下手で、なかなか出てきません。どなたかご教示下さい。よろしくお願いします。

  • エクセル VBAで関数を定義したけれどもうまくいかない

    以前ここで教えていただいた方法ですが、 セルB1からB100までのいずれかを変更した際に プロシージャが起動する方法として まず VBAで標準モジュールに 関数を定義して Function mykansu(dum As Range) for i=1 to 100 if cells(i,2)=1 then cells(i,6)="yes" next i End Function そしてexcelシートでセルA1に =mykansu(B1:B100) とやれば、B列の変更を加えたらプロシージャが起動する と教えていただきました。 しかし A1に #Value と出たきりでVBAのプロシージャが動かないのはなぜでしょうか。教えてください。

  • エクセルVBA、同名の<定義した名前>がある場合

    エクセル2010です。 Book_AのシートをBook_Bのシートに貼り付けようと思います。 Book_AとBook_Bに同じ名前の<定義した名前>があった場合、手作業でもマクロでも、シートをコピーしてそのまま他BOOKの別シートに貼り付けようとすると、 「移動またはコピーする数式またはシートには、移動またはコピー先のワークシートに 既にある名前<定義した名前>が含まれています。この名前を使用しますか?」 と聞いてきます。 この名前をそのまま使用したいので手作業の時は、[はい] をクリックすればいいだけなのですが、マクロで自動的に貼り付けをしていると、ここで中断されてしまいます。 ここをマクロで自動的に[はい] をクリックしたことにするのはどのようにすればよろしいでしょうか?

  • エクセルにおけるセルへの名前のつけ方につきまして

    同一ブックの別シートで、それぞれのシートのセルに同じ名前をつけることはできないのでしょうか?マクロなどを使用せずにエクセル表左上の「名前ボックス」で定義したいのですが。

  • ユーザー定義関数でシート名を取得したい

    例えば、以下のユーザー定義関数で Public Function Test(A As Range) Test=A.Address End Function AにアクティブシートのセルA1~セルB2を指定すると「$A$1:$B$2」という値が帰ってきますが、 別のシートのセルA1~セルB2を指定しても、「$A$1:$B$2」という値が帰ってきます。 シート名が抜けてしまっているのですが、シート名はどのようにしたら取得できますか?

専門家に質問してみよう