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

解決済みの質問

エクセル:VBA:マクロコード

エクセルVBAで、
(質問1)
マクロでsheet1のデータを処理して、sheet2に結果を表示するマクロで最初にsheet2をクリアーするというのはどうコードしますか。
(質問2)
マクロでsheet1のセル/データを使ったりsheet2のセル/データを使ったりしますが、データはどう切り替えるのですか。
常に今どちらのシートのことを問題にしているか宣言するのですか。
その場合、
例えば今sheet1を扱ってるとした場合にsheet2のデータCells(10, "D")をsheet1のセルCells(10, "D")に入れる場合、
Cells(10, "D")=Sheets("sheet2").Cells(10, "D")こうなりますか。

投稿日時 - 2006-03-07 17:22:56

QNo.2013260

困ってます

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

#1です
>一度アクティブになったら別のシートがアクティブになるまで、
>アクティブが続くんですか。両方アクティブというのもあるのでしょうか。
続きます。両方アクティブはないです。
Sheets(Array("Sheet1", "Sheet2")).Select
作業グループとして複数のシートを一度に選択できますが、この場合は
「Activate」は不可です。選択はできますが、作業可能になっているシート
は一つですから。
因みに
Sheets("Sheet1").Activate(1)
Range("A1").Value = 1(2)
Sheets("Sheet2").Range("A1").Value = 2(3)
Range("A2").Value = 3(4)
(1)でシート1をアクティブにします。
(2)でアクティブシートのA1セルに1を入力します。
(3)シート2のA1セルに2を入力します。シートを指定しているので現在どの
シートがアクティブになっていても関係ない。
(4)でアクティブシートのA2セルに3を入力します。(3)でシート2に対して
作業したがアクティブシートはシート1なのでシート1に対しての作業になる。

シートが複数あり、マクロの一覧から実行させるような使い方をする場合は
どのシートに対して実行するのかを考えて記述する必要があります。
シート名を指定しておけばどのシートがアクティブになっていても作成者の
意図したシートのみに作業してくれますから。

私はマクロの記録等を利用したりHELPをみながら独学でやっています。ネット上
でもいろんな情報がありますので勉強になりますよ。

投稿日時 - 2006-03-08 13:28:12

お礼

すべて解決しました.どうもありがとうございました。

投稿日時 - 2006-03-08 15:11:54

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

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

回答(4)

ANo.3

基本は
Worksheets("Sheet1").Cells(2, "A") = Worksheets("Sheet2").Cells(1, "A")
のパターンを覚える。
Worksheets("Sheet1").の部分をSh1とかで置き換える。
それには
Dim Sh1 As Worksheet  
Set Sh1=Workseets("Sheet1")
とする。Sheet2も同じ。
全的クリアは
Sub test01()
Worksheets("Sheet1").Cells.Clear
End Sub
です。

投稿日時 - 2006-03-08 10:17:08

お礼

すべて解決しました.どうもありがとうございました。

投稿日時 - 2006-03-08 15:12:35

#1です
>sheet1をアクティブシートにするは、どうするんですか。
>Sheets("sheet1").Selectでもそうなりますか。
構わないと思いますよ。下記でも大丈夫です。
Sheets("sheet1").Activate
ご自身で色々試されてはどうですか?前回の質問もそうですが、ほとんど
わからない状態ですよね?マクロの記録を利用して色々コードの中身を見て
みることから始めてはどうでしょうか?
「Cells(10, "D")」という使いかたしていますが行も列も変数でないので
あれば「Range("D10")」でよいのでは?

投稿日時 - 2006-03-08 08:36:03

補足

一度アクティブになったら別のシートがアクティブになるまで、アクティブが続くんですか。両方アクティブというのもあるのでしょうか。
そういうことの説明はどこかにあるのでしょうか。

投稿日時 - 2006-03-08 12:02:26

お礼

本を一つ購入すれば済むことと思いますが、基本的なこと知らなくて恥ずかしいです。助かりました.どうもありがとうございました。

投稿日時 - 2006-03-08 12:00:46

さっきも回答しましたが、似たような質問ですね。
質問1ですが、
シート全体の場合は「Sheets("sheet2").Cells.ClearContents」
一定の範囲の場合は「Sheets("sheet2").Range("A1:B10").ClearContents」
でよいかと思います。
質問2ですが、
Cells(10, "D")=Sheets("sheet2").Cells(10, "D")でよいと思いますが、
先頭のCellsの前は省略されているだけです。省略されている場合は現在の
アクティブシートと言う意味ですので違うシートを指定する場合はシート名
をつける必要があります。

投稿日時 - 2006-03-07 17:42:14

補足

sheet1をアクティブシートにするは、どうするんですか。

Sheets("sheet1").Selectでもそうなりますか。

投稿日時 - 2006-03-07 18:41:55

あなたにオススメの質問