• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロの動作するタイミング)

マクロの動作するタイミング

このQ&Aのポイント
  • VBAによるマクロを利用して、Excelシートでのオートフィルターの適用タイミングについて質問です。
  • Excelシートにおいて、セルをダブルクリックすることでオートフィルターを適用し、列をコピーするマクロを作成しましたが、選択したsheet名がB1で表示されるようにする方法について知りたいです。
  • Excel2003のWinXP環境での操作です。

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

  • ベストアンサー
  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.1

これでどうですか。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$B$1" Then Exit Sub Application.EnableEvents = False Sheets(Target.Value).Columns("A").Copy Range("A1").PasteSpecial Paste:=xlPasteAll Selection.AutoFilter Field:=1, Criteria1:="<>" Columns("A:A").Select Selection.Copy Application.EnableEvents = True End Sub ・・・ 注 Application.EnableEvents = False Application.EnableEvents = True 上のコードを使ったら、必ず、下のコードで Trueにしないといけません。 そうしないと、イベントが発生しなくなります。 なぜ、Application.EnableEvents = Falseを使うかというと、コピーペーストや値の代入で、イベントが発生して、自分自身を呼び出そうとするからです。

hee1
質問者

補足

有難うございます。 上記の通り貼り付けましたが、上手く行きませんでした。 ------------------------------------------ Sheets(Target.Value).Columns("A").Copy Range("A1").PasteSpecial Paste:=xlPasteAll ------------------------------------------ この2行を除いて実行したら上手く行きました。 この2行はどういう意味か分かりませんが…。 勉強不足ですみません。

その他の回答 (1)

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.2

補足、読ませてもらいました。 Target.Valueには、セル Range("$B$1")の値が入ります。(If Target.Address <> "$B$1" Then Exit Subのコードが有るので) 質問文に、"sheet1のB1でsheet名の一覧をドロップダウンから選択できるようにし、"と有りましたので、B1が"シート2"と成っていたら >Sheets(Target.Value).Columns("A").Copyは Sheets("シート2").Columns("A:A").Copyと同じ意味になります。 つまり、セルの"B1"で指定したシートのA列をsheet1のA列に貼り付けています。 でわでわ

関連するQ&A