- ベストアンサー
Excel2003VBAのマクロについての質問
- Excel2003のVBAで作成したマクロについての質問です。
- マクロを2つ作成し、それぞれのマクロの実行時にエラーが出る可能性があるかどうかについて教えてください。
- また、新しいブックに名前を付けてデスクトップに保存する方法についても教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
のあです。追加質問への回答 基本的にSheetのMoveを行えばSheetがAcctiveになりますが心配なら Sheets("Sheet1").Select とそのSheetを選択しActiveにしてやると確実です。 複数のブックが開かれている場合もありますので WorkBooks("ブック名").Sheets("Sheet1").Select が正しいでしょうか ブック名は通常.xlsを含むファイル名です しかし未保存のブックは.xlsが付かない"Book1"等になりますので 新規で作成する場合、ファイル名は変更する必要がありますけど 心配ならモジュール画面とExcelシート画面を半分の大きさで上下or左右に表示してデバッグツールボタンのステップインを押し1行毎に実行しExcel画面を見てるって方法もあります。 VBA画面のショートカットを変更していないならF8を押すと1行ごとの実行になります。 サブルーチンを使用していてサブルーチン内の表示は必要ないならShift+F8。 慣れてくればSelectionではなくて 対象シートならWorkBooks("ブック名").Sheet("シート名") 対象セルならWorkBooks("ブック名").Sheet("シート名").Range("A1") 若しくはWorkBooks("ブック名").Sheet("シート名").Cells(1,1) 対象シートがActiveなら Range("A1") = "あああ" で代入する事も可能です マクロ記録では必ず対象セルをSelectしてSelectされたセルに何かを行うように記録されますので.Selectから次行のSelectionまでを消して 短くして利用してます
その他の回答 (1)
- noah7150
- ベストアンサー率46% (116/251)
マクロは同一モジュール内に複数納めてもまったく問題ありません。 先頭の Option Explicit 一回だけ記述すればよいだけですので複写する時は不要です。 マクロ記録で行っているようですがマクロ記録では現在表示されているシートに対して行うように記録されますので別なブックを作成してモジュール追加してそこに複写してやれば別ブックにしてデスクトップなりマイドキュメントにマクロだけのブックとして保存する事も可能です。 ツールメニューからマクロ実行を呼び出すとブック名.マクロ名で表示されますので問題ありません。 気をつけるのは間違ってマクロが入ってるブックと前面にしてマクロ実行しないようにね。 また、決まったPCで使われるなら個人用のマクロブックが用意されていますのでそこに保存すればExcelを呼び出した時自動的に呼び出されブックは非表示状態で開かれます。 マクロ記録でマクロの保存先を個人用のマクロを選択すると自動的に作成され変更があるときはExcel終了時に個人用のマクロブック保存確認がされます。 バージョンや設定で変更も出来ますがPERSONAL.XLSの名前で作成されます。 C:\Documents and Settings C:\Program Files C:\windos 少しずつ変わってきていますが名前はPERSONAL.XLSのままです 一度作成するとウィンドウメニューの再表示の一覧に出るようになります また、PERSONAL.XLSが保管されているところに他のXLSを保存しておくとExcel起動時にやはり自動で呼び出されるようになります
お礼
ご回答ありがとう御座います。 >決まったPCで使われるなら個人用のマクロブックが用意されていますのでそこに保存すればExcelを呼び出した時自動的に呼び出されブックは非表示状態で開かれます。 そういえば「かんプロVBA」で そのような文章を読んだような気がしました。 そこに保存した方が確かに便利ですよね。 1点ご確認をお願いしたいのですが、1つ目のマクロで最終行 Sheets("Sheet1").Move のように挿入したシートを新しいブックに移動させているので 新しいブックがアクティブになっていると思っています。 そこに 2つ目のマクロ Selection.AutoFilter Field:=3 Selection.AutoFilter Field:=8 これを いきなり追加しても大丈夫なのかな? と不安になったもので今回質問させていただきました。 2つ目のマクロを そのまま 貼り付けてOKか、もしくは一旦元のブックをアクティブにするコマンドが必要なのか 再度 ご教授いただけませんでしょうか。 お手数お掛けしまして申し訳ありません。 何卒 宜しくお願い致します。
お礼
再回答 誠にありがとう御座います。 やはり 移動前のブックをアクティブにしないとダメでした。 ご教示いただいた内容 >WorkBooks("ブック名").Sheets("Sheet1").Select の「Select」を「Activate」に変更して、ご教示いただいた内容通りに VBEとExcelを並べて表示し、F8で1行づつ実行したら非常にわかりやすかったです。 お陰様でストレスなく作業を進めることが出来ます。 ありがとう御座いました。