• ベストアンサー

エクセル: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")こうなりますか。

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

  • ベストアンサー
noname#123709
noname#123709
回答No.4

#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をみながら独学でやっています。ネット上 でもいろんな情報がありますので勉強になりますよ。

taktta
質問者

お礼

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

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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 です。

taktta
質問者

お礼

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

noname#123709
noname#123709
回答No.2

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

taktta
質問者

お礼

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

taktta
質問者

補足

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

noname#123709
noname#123709
回答No.1

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

taktta
質問者

補足

sheet1をアクティブシートにするは、どうするんですか。 Sheets("sheet1").Selectでもそうなりますか。

関連するQ&A