• ベストアンサー

ExcelVBAの関数の呼び出し方

お世話になります。 あるExcelシート「A」であるセルが押されたら、 別のExcelシート「B」のマクロを押されたセルの情報を引数として呼び出す方法を探しています。 簡単な例等や、参考URLでも結構です、何かご存知の方いらっしゃったらよろしくお願いします。

noname#1752
noname#1752

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

Book1とBook2を立ち上げておいて実行します。 この例は、Book1のSheet1のセルをダブルクリックすると、その値をBook2のSheet1のB2:B11に書き込みます。 Book1のシート1のコードウインドウに貼り付け ↓ Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   Workbooks("Book2").Worksheets("Sheet1").Activate   ActiveSheet.Book2_Sheet1_Macro Target.Value End Sub Book2のシート1のコードウインドウに貼り付け ↓ Sub Book2_Sheet1_Macro(myData As String)   Range("B2:B11") = myData End Sub

その他の回答 (2)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

下の例は、Sheet1のセルをダブルクリックするとそのセルの値を、Sheet2のB2:B11に書き込みます。 質問の意味はこういうことでしょうか? >あるExcelシート「A」であるセルが押されたら・・・ ということで、Worksheet_SelectionChange を使ってもSheet2のマクロを起動できますが、Sheet1で何かするたびにSheet2のマクロを実行するので Worksheet_BeforeDoubleClick にしています。また、あるExcelシート「A」、シート「B」は同一Book内にあるとしています。 ご参考に。 マクロ例です。 Sheet1のコードウインドウに貼り付け ↓ Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   Worksheets("Sheet2").Activate   ActiveSheet.Sheet2_Macro Target.Value End Sub Sheet2のコードウインドウに貼り付け ↓ Sub Sheet2_Macro(myData As String)   Range("B2:B11") = myData End Sub

noname#1752
質問者

補足

ありがとうございます、もうひとつ問題がありまして 異なるBook間でのマクロの呼び出しという問題があります。これもシート間と同じような感じなのでしょうか?

  • taka1014
  • ベストアンサー率30% (16/52)
回答No.1

fj.comp.applications.excelなどのNews Groupで 調べたり、聞いてみた方が正確に解ると思いますよ。 マイクロソフトのHP内にもExcel用のNews Groupが あります。

関連するQ&A

  • VBAで、あるエクセル表のセルをクリックしたら別のエクセル表が立ち上がるプログラム

    お世話になります。 あるエクセル表のセルをクリックしたら別のエクセル表が立ち上がるプログラムを作成したいと考えております。 具体的には、あるエクセル表Aはクラスの生徒の名前一覧表を表示したもので、ある生徒の名前をクリックしたら 別のExcel表Bが立ち上がって、その生徒の住所等の詳細情報が表示される。 このようなことをしたいと考えております。 VBA等のマクロを使用するのでしょうか? VBおよび、Excelは素人なので具体的にソース等や、 参考になるURL等の助言をお願いします。 以上よろしくお願いします。

  • Excel関数で

    例:ファイル名 drinkで sheet名 coke coffee orange ・・・その他約30sheetあり 各シートのG7セル(シート名と同じ)を新しいシート1のA1セルにcoke A2にcoffee A3にorangeと・・・ 各シートのAE28セルを新しいシート1のB1セル~B30セルに手っ取り早くコピー出来る方法が知りたいのです。 コピペでは手間がかかりすぎて苦戦してます。マクロのスキルはないためそれ以外でお願いします。

  • EXCEL関数のCHOOSEについて

    EXCEL関数のCHOOSEについて CHOOSEの第2引数以降の可変引数を別セルで定義して、 値を呼び出す方法を教えてください。 イメージ例: A1には"東京","北海道","神奈川" A2には=CHOOSE(1,A1) をして、"東京"が呼び出されることを求めています。 ※この例のA2結果は、"東京","北海道","神奈川"になってしまいます。

  • Q>ExcelVBAで特定のサブルーチンを無効にするには?

    Excel2000であるシートに Worksheet_Change のサブルーチン(A)を入れて更新されると起動するようにしています。(A)は特定の列(B)にデータが入ったときに行なう処理を記載しています。 この状態でそのシートの列(C)のセルを順番に更新するようなマクロ(D)を作ったのですが、1つのセルの更新ごとに(A)が起動してしまうので処理が遅くなってしまいます。 1.(D)の処理中は(A)を起動させたくないので、(D)の初めに(A)を無効にする処理を入れたいのですが、そんなコマンドはあるのでしょうか? 2.または、(A)の処理を Worksheet_Changeで実現するのではなく、特定の列(B)のセルが更新されたときのみに行なうようにする方法はないでしょうか? ご存知の方がいましたら、よろしくお願いします。m(_ _)m

  • 別excelのデータを引き出す時に、そのexcel名称を可変にしたいと思っています。

    別excelのデータを引き出す時に、そのexcel名称を可変にしたいと思っています。 なるべくマクロを使わないで出来るでしょうか? 例: =VLOOKUP(A1,[B.xls]Sheet1!$A$1:$E$10,4,FALSE) という関数を指定したとします。 [B.xls]Sheet1 この部分をセルA1に入れて、内容を変更することで 引き出し元のファイル&シートを変えたいと思っています。 つまりA1のセルの値を[C.xls]Sheet2にすることで、C.xlsファイルのSheet2からデータを引っ張って来たいのです。 出来るでしょうか? ご存知の方いらっしゃいましたら、宜しくお願い致します。 環境は OS:WINDOWS98 EXCEL2000 です。

  • 【ExcelVBA】検索したセルを別シートにコピペ

    はじめまして、マクロに関して、ネット情報を参考に作成しております初心者です。 早速ですが、質問させてください。 現在、Excel2003でマクロを作成しています。 内容は、検索用シート、データシート、検出シートと3つのシートがあるファイルで、 検索用シートの特定のセルに入れた文字が、データシート内にあるか部分一致検索を行い、 検出したセルを検出シートの「データシートで検出したセルと同じセル番地」に貼り付けたいのですが、 どのように組んだら良いでしょうか。 データシートでの検出結果は基本複数あり、それぞれに対して、貼り付けたいと思っています。 上記の中で <「データシートで検出したセルと同じセル番地」に貼り付けたい>という部分がうまくいかず、悩んでいます。 どうかご教授のほど、よろしくお願い致します。

  • エクセル関数について

    エクセルの関数についてなのですが、例えば「セルA3」に「セルB2」の値を表示させるには「=(B2)」と「セルA3」に表示させてます。別のSheetの値も表示できるのでしょうか?例えば「Sheet1.Range("A3")」の値をSheet2のA1に表示させたい場合Sheet2のA1にはどのような関数を入力していけばよいのでしょうか?VBAは使わずに表示したいのですが。関数はまだほとんど使ったことがないので分かる人いたら教えてください。よろしくお願いします。

  • VBAのマクロをシート内の式で使いたい

    VBAで、マクロの関数をエクセルの式で使うことは可能でしょうか? 引数や戻り値の制約も知りたいです。 引数はExcel側ではセル値B1とかになりますが、VBA側では何か対策でもあるのでしょうか? 'VBA public function test(byval a as integer, byval b as integer) as integer test = a + b end function 'エクセル側 C1セルに以下の式 =test(A1, B1)

  • エクセル関数INDIRECTについて

    エクセル関数 セルの参照についての質問です。 ひとつのBookの中に、AとBのシートがあります。 Aにデーターを入力し、Bに必要な部分だけセルの参照(INDIRECT)関数を使ってデーターを反映させていたのですが、Bのシートだけを別のBookとして保存した場合、INDIRECTの関数を使った部分がエラーの表示になってしまいます。(よく考えればAを参照しているので当たり前なのですが。。。) Bのシートを別のBookに保存しても参照しているデーターが消えない方法(関数)はあるのでしょうか? ご存知の方がいらっしゃいましたらご教授下さい。 (説明が下手ですみません)

  • ExcelVBA 他ワークブックへデータ書き出し

    いつもお世話になっております。 教えてください。 現在開いているExcelブックの特定箇所をボタンワンプッシュで、他Excelシートまでデータを書き出ししたいと考えておりますが、エラー発生のため、マクロ実行することができず困っております。コードを訂正する必要があると思うのですが、どのように訂正したらよいかわからず、ご教示頂けないかと思います。よろしくお願いします。 ex)添付ファイルを参照ください。現在開いているシート(シートA.xls)の特定箇所(A1)をマクロボタンを押下すると、他Excelシート(Cドライブの【シート】フォルダ内の【シートB】.xls)までデータを書き出ししたい(書き出す場所はシートAと同じA1)と考えております。 ※小生作成VBAコード Sub test() Workbooks("C:\シート\Bシート.xls").Worksheets("sheet1").Range("A1").Value = Workbooks("Aシート.xls").Worksheets("sheet1").Range("A1") End Sub

専門家に質問してみよう