• ベストアンサー

VBAについて教えて下さい

エクセルのファイルを2つ開いている状態で 仮に名前を試験1、試験2とします。 VBAを使用し 試験2の指定した位置にあるセル(数値)を 試験1の任意の位置に挿入する しかし、試験2のシートは複数あります。 僕がやりたいのは 試験1の任意の位置に挿入する数値は 試験2のシートが変わっていようが 今開いているシートから指定した位置にあるセルから数値を挿入してほしいのです いちいち、VBAを使いwooksheetsで指定するのも面倒なので質問しました。 なにか、別の方法あるでしょうか? あれば、コード書いて貰えるととても助かります。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 今仮に、開いている状態となっている2つのエクセルファイルの名前をそれぞれ試験1.xlsm、試験2.xlsmとします。  また、「試験2の指定した位置」とは、「試験2の現在開いているシート」の例えばA1セルであるものとします。  同様に「試験1の任意の位置」とは、例えば「試験1のSheet1のB2セル」であるものとします。  その場合、「試験2の現在開いているシートのA1セル」に入力されている数値を、「試験1のSheet1のB2セル」に転記(コピー)するVBAの構文は次の様なものになります。 Workbooks("試験1.xlsm").Worksheets("Sheet1").Range("B2").Value = Workbooks("試験2.xlsm").ActiveSheet.Range("A1").Value  尚、もしそのVBAのマクロを試験1.xlsmのファイルに記述している場合には、次の様に記述する事も出来ます。 ThisWorkbook.Worksheets("Sheet1").Range("B2").Value = Workbooks("試験2.xlsm").ActiveSheet.Range("A1").Value  逆に、もしそのVBAのマクロを試験2.xlsmのファイルに記述している場合には、次の様に記述する事も出来ます。 Workbooks("試験1.xlsm").Worksheets("Sheet1").Range("B2").Value = ThisWorkbook.ActiveSheet.Range("A1").Value  また、もしそのVBAのマクロを試験2.xlsmのファイルに記述している場合において、「試験2の現在開いているシートの現在選択しているセル」に入力されている数値を、「試験1のSheet1のB2セル」に転記(コピー)するVBAの構文は次の様なものになります。 Workbooks("試験1.xlsm").Worksheets("Sheet1").Range("B2").Value = ActiveCell.Value

kousukebojto
質問者

お礼

ありがとうございます! 思った結果が出ました! さらに、応用していきたいと思います!