• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【VBA】複数シートのうち、任意シートのみで動作)

【VBA】複数シートのうち、任意シートのみで動作

このQ&Aのポイント
  • 【Excel2010】において、Sheet1~10のうち、Sheet10以外(=Sheet1~9)に指定のマクロを実行したい場合、どのようにすればよいでしょうか。
  • VBA初心者のため、Sheet1~9の各シート内で特定の検索キーワードをJ列に自動的に設定するマクロを作成しました。
  • 現在、VBAの習得中であるため、基本的な質問ですが、どうかご教示いただけますと幸いです。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

Sheet1~9が左端から連続して存在しているという過程で Sub 検索keyを追加2() Dim i As Long Dim Sh As Worksheet For i = 1 To 9 Set Sh = Sheets(i) Sh.Activate With Sh.Range("A1", Sh.Cells(Rows.Count, 1).End(xlUp)).Offset(, 9) .Formula = "=CONCATENATE(A1,C1)" .Copy .PasteSpecial Paste:=xlPasteValues End With Set Sh = Nothing Next End Sub

comatte2019
質問者

お礼

kkkkkm 様 連日の質問へ回答いただき、誠にありがとうございます。 『追記』のお気遣いにも感謝申し上げます。 最初にご教示いただいたコードをアレンジすることで、スムーズに動作できました。 重ねがさね、お手数をお掛けしました。 また機会がございましたら、お力添えのほど 何卒よろしくお願い申し上げます。

その他の回答 (2)

  • kon555
  • ベストアンサー率51% (1842/3559)
回答No.3

具体的なコードは既に回答がついているので、補足的なものを。 まず複数のシートに対して同一の処理を行う場合、使うのは「For Each」または「For」です。 どちらでもいけますが、個人的に使いやすいのは「For」なので、まずはFor文を覚えましょう。。 以下に例示しますが、これはで全てのシートに対して動作します。 ・Forの場合 Sub test1() Dim i As Long For i = 1 To Sheets.Count  Sheets(i).~~(行いたい処理) Next i End Sub 「For i = 1 To Sheets.Count」で、「変数iを、1からシート番号最大値まで変化させつつ、以下の処理を繰り返す」という意味になります。 そしてSheets(i)で、シートのi番目という意味になりますので、順繰りに全てのシートに対して処理が行われる事になります。 今回のケースは「シート1から9まで」なので、Forなら 「i = 1 To 9」にする。またはif関数でシートの名前や番号で条件づける事で、ご希望の動作が達成できます。 他に色々な方法はありますが、ひとまずこのForで処理する方法を覚えてしまえば、8~9割のパターンには対応できます。

comatte2019
質問者

お礼

kon555 様 この度は、懇切丁寧な解説、アドバイスを頂戴しまして 誠にありがとうございました。 初心者のわたくしでも理解できました。 ベストアンサーはコードを記載いただきました方とさせていただきましたが、 kon555 様の解説と合わせて眺めることにより、そのコードをよくよく理解することができました。 今後はアドバイスいただいた「For」文を使っていこうと思います。 まだまだ勉強を始めたばかりでわからないことだらけです。 改めて別の質問をすることもあるかと思います。 またお時間許されましたら、是非ご教示いただきたくお願い申し上げます。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

No1の追加です。 ちらちらして遅いなどがありましたら Application.ScreenUpdatingで画面表示を止めたり Sh.Activateを外す などして対応してください。