こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

シートの選択について

エクセルのVBAにて、シートの選択について質問です。

直前まで【テスト1】と言うシートで作業をしていて、その後

Worksheets("テスト2").Activate
Worksheets("テスト2").Select
Range("A1").Value = 123

テスト2のA1に123と言う文字を表示させるとします。

プログラムを走らせてみたのですが、123と言う数字はテスト1のシートに記述されてしまいました。

ホントに初歩的な質問で申し訳ありませんが、テスト2に表示される方法を教えて頂けたらと思います。

それでは、よろしくお願い致します。

投稿日時 - 2009-01-30 23:18:31

QNo.4675555

すぐに回答ほしいです

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

シートモジュールに記述していませんか?(他のシートをアクティブにできません。)
標準モジュールに記述してくださいね。

Worksheets("テスト2").Activate
Worksheets("テスト2").Select
と2つは必要ありません。
どちらでも良いので、一つにしてくださいね。

投稿日時 - 2009-01-30 23:25:08

補足

ありがとうございます!

記述するモジュールによってアクティブに出来る、出来ないと言うのがあるんですね。

本当に初歩的な質問ですが、丁寧にご回答を頂き、ありがとうございました。


ただ、もう一点分からない部分が出てきてしまいました。

シートの変更は上手く行ったのですが、

For文で指定した変数をCallで標準モジュールに飛んだ先で使おうと思ったら、値が0になってしまっていました。

For文の変数は、飛んだ先では使えないのでしょうか?

投稿日時 - 2009-01-30 23:38:37

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

>For文で指定した変数をCallで標準モジュールに飛んだ先で使おうと思ったら、値が0になってしまっていました。

1.グローバル変数を使う。
2.プロシージャにパラメーターを渡す。:Call Dummy(Prm)

投稿日時 - 2009-01-31 09:31:14

お礼

ご回答ありがとうございました。

私は20年位前にBASICを使っていた程度だったので、VBAも見よう見まねで始めたのですが、本当に勉強不足と言うのを痛感させられます。

でも、プログラムがきちんと動いた瞬間は嬉しい物ですね。

これからもよろしくお願い致します。

投稿日時 - 2009-01-31 17:56:21

ANo.4

変数のスコープについて勉強してください。
第5回 変数の適用範囲(スコープ)
http://pc.nikkeibp.co.jp/pc21/special/2007_gosa/eg5.shtml

投稿日時 - 2009-01-31 01:28:22

お礼

ありがとうございます。

変数の使い方も良くわからず、初歩的なミスを犯していました。

勉強させていただきます。

投稿日時 - 2009-01-31 17:53:43

ANo.3

シート名を明示してください。
Worksheets("テスト2").Range("A1").Value = 123

投稿日時 - 2009-01-30 23:40:51

お礼

ご回答ありがとうございました。

hana-hana3さんがご指摘のように、記述するモジュールの違いだったようです。

投稿日時 - 2009-01-31 17:52:50

ANo.2

Worksheets("テスト2").Range("A1").Value = 123
だけでは?

投稿日時 - 2009-01-30 23:37:30

お礼

ご回答、ありがとうございました。

モジュールの違いによると言う、初歩的なものだったようです。

勉強になりました。

投稿日時 - 2009-01-31 17:51:52

あなたにオススメの質問