重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

そもそも出来るかどうか、わかりませんが、
もしかしたらと思い、質問させていただきました。
2つのエクセルファイル「個別」と「合計」があるとします。
「個別」はCドライブの「所属者」フォルダに
「合計」はCドライブの「集計」フォルダにあるとします。

「個別」ファイルには以下のような表とコマンドボタンがあります。
A1 A2・・・はセルの位置を表しています。
   A1 A2 A3
B1 B2 B3
C1 C2 C3

コマンドボタンをクリックすると、この表と同じ内容が
「合計」ファイルの以下の位置に移動するようにしたいです。
   E1 E2 E3
F1 F2 F3
G1 G2 G2
要するに「個別」ファイルにある表をコピーして、
「合計」ファイルの指定した位置に貼り付けるという操作を
マクロを使ってコマンドボタンをクリックすることで
自動に行えるようにしたいのです。
もし可能ならば、
どのようにコードを入力するべきか教えてください。
マクロに関しては素人ですので、
できれば入力すべきものをそのまま回答していただけると
ありがたいです。

A 回答 (3件)

>Private Sub CommandButton1_Click()


なのでそのボタンのあるシートモジュールに記述されていると思います。

記録マクロが記述されている標準モジュールに書き換えて動作確認してみてください。
マクロの名前は記録マクロを参考に Sub マクロ名() としてください(Private Sub ではありません)

設置したボタンから起動したければ今記述しているコードを

Private Sub CommandButton1_Click()
マクロ名
End Sub

とすればよいでしょう。


※シートモジュールではイベントマクロが記述できるので興味深いのですがシートを超えたコーディングなどはより知識を必要とするので結構難解です
    • good
    • 0
この回答へのお礼

返信が送れて申し訳ありません。
Sinogiさんの回答通りやってみました。
モジュールという言葉を知らなかったので、時間がかかりましたが、
自分のやりたいことができるようになったので、非常に助かりました。
ありがとうございます。

お礼日時:2009/08/16 23:11

「実行エラー'9’インデックスが有効範囲にありません」のメッセージウィンドウでデバッグを選択すれば該当のコードが黄背景で表示されます。

どこでとまっていますか?

提示のコードでは "C:\集計\合計.xls" が開いた状態で実行しなければエラーになります。

"C:\集計\合計.xls"を開くところからコーディングしたければ、「開く」作業も記録できるので、そこからやってみましょう。

この回答への補足

"C:\集計\合計.xls"を開くところを含めて以下のように
コードを改良しました。

Private Sub CommandButton1_Click()
Range("A1:C3").Select
Selection.Copy
Workbooks.Open Filename:="C:\集計\合計.xls"
Range("E1").Select
ActiveSheet.Paste
Windows("個別.xls").Activate
ActiveWindow.WindowState = xlNormal
ActiveWindow.WindowState = xlNormal
End Sub

このコードで貼り付けたいファイルが開けるようになりました。
しかし以下のようなエラーが出てしまいます。
実行時エラー”1004”
RangeクラスのSelectメソッドが失敗しました。

デバックするとRange("E1").Selectが黄色く表示されます。
この場合はどう対処するべきでしょうか。

補足日時:2009/08/10 17:54
    • good
    • 0

まずはマクロ記録をしましょう。


そのコードで必要な動作が最低限再現できるはずだから、希望の動作にするために必要な加工をします。そのときにわからないことがあれば具体的に明示して質問しましょう。

>できれば入力すべきものをそのまま回答していただけると
>ありがたいです。
ひょっとしたら希望通りの回答をする人が居るかもしれませんが、まずは「自分で考える」姿勢が無ければご希望の目的に達するのは困難だと思います。

この回答への補足

アドバイスありがとうございます
マクロの記憶を参考に自分なりやってみた結果が以下の通りです。
Private Sub CommandButton1_Click()

Range("A1:C3").Select
Selection.Copy
Windows("C:\集計\合計.xls").Activate
ActiveWindow.WindowState = xlNormal
ActiveWindow.WindowState = xlNormal
Range("E1").Select
ActiveSheet.Paste
Windows("個別.xls").Activate
ActiveWindow.WindowState = xlNormal
ActiveWindow.WindowState = xlNormal

End Sub

これだと、「実行エラー'9’インデックスが有効範囲にありません」
と表示させ、うまくできません。
どこを直せばよいでしょうか。

補足日時:2009/08/10 15:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!