- ベストアンサー
シートの選択について
エクセルのVBAにて、シートの選択について質問です。 直前まで【テスト1】と言うシートで作業をしていて、その後 Worksheets("テスト2").Activate Worksheets("テスト2").Select Range("A1").Value = 123 テスト2のA1に123と言う文字を表示させるとします。 プログラムを走らせてみたのですが、123と言う数字はテスト1のシートに記述されてしまいました。 ホントに初歩的な質問で申し訳ありませんが、テスト2に表示される方法を教えて頂けたらと思います。 それでは、よろしくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
シートモジュールに記述していませんか?(他のシートをアクティブにできません。) 標準モジュールに記述してくださいね。 Worksheets("テスト2").Activate Worksheets("テスト2").Select と2つは必要ありません。 どちらでも良いので、一つにしてくださいね。
その他の回答 (4)
- hana-hana3
- ベストアンサー率31% (4940/15541)
>For文で指定した変数をCallで標準モジュールに飛んだ先で使おうと思ったら、値が0になってしまっていました。 1.グローバル変数を使う。 2.プロシージャにパラメーターを渡す。:Call Dummy(Prm)
お礼
ご回答ありがとうございました。 私は20年位前にBASICを使っていた程度だったので、VBAも見よう見まねで始めたのですが、本当に勉強不足と言うのを痛感させられます。 でも、プログラムがきちんと動いた瞬間は嬉しい物ですね。 これからもよろしくお願い致します。
- xls88
- ベストアンサー率56% (669/1189)
変数のスコープについて勉強してください。 第5回 変数の適用範囲(スコープ) http://pc.nikkeibp.co.jp/pc21/special/2007_gosa/eg5.shtml
お礼
ありがとうございます。 変数の使い方も良くわからず、初歩的なミスを犯していました。 勉強させていただきます。
- xls88
- ベストアンサー率56% (669/1189)
シート名を明示してください。 Worksheets("テスト2").Range("A1").Value = 123
お礼
ご回答ありがとうございました。 hana-hana3さんがご指摘のように、記述するモジュールの違いだったようです。
- hallo-2007
- ベストアンサー率41% (888/2115)
Worksheets("テスト2").Range("A1").Value = 123 だけでは?
お礼
ご回答、ありがとうございました。 モジュールの違いによると言う、初歩的なものだったようです。 勉強になりました。
補足
ありがとうございます! 記述するモジュールによってアクティブに出来る、出来ないと言うのがあるんですね。 本当に初歩的な質問ですが、丁寧にご回答を頂き、ありがとうございました。 ただ、もう一点分からない部分が出てきてしまいました。 シートの変更は上手く行ったのですが、 For文で指定した変数をCallで標準モジュールに飛んだ先で使おうと思ったら、値が0になってしまっていました。 For文の変数は、飛んだ先では使えないのでしょうか?