• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【VBA】全てのシートに処理)

【VBA】全てのシートに処理

このQ&Aのポイント
  • VBAを使用して全てのシートに処理を行いたい場合、以下の方法が考えられます。
  • まず、中央の「シート名変更」ブックの全シートに対して、各シートのE1セルをキーとして、VLOOKUP関数を使用してシート名を左の「シート名マクロ」ブックから取得します。
  • そして、取得したシート名を「シート名変更」ブックの各シートのA1セルに表示します。最後に、全てのシートに対して①と②を繰り返しますが、現状では上手く動作しておらず、アクティブなシートのみで処理が止まってしまう問題が発生しています。正しい方法を教えていただきたいです。

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

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

> 上手く動くのがアクティブシートのみとなり、次のシートに処理が移行しません。 以下に変更して試してみてください。 Nameやそれぞれの Rangeの前にはドットがあります。 Dim Ws As Worksheet Dim x As String For Each Ws In Worksheets With Ws x = .Range("E1").Value .Range("A1").Formula = _ Application.WorksheetFunction. _ VLookup(x, Workbooks("シート名マクロ.xlsm").Worksheets("一覧").Range("A:B"), 2, False) .Name = .Range("A1").Value .Range("A1").Clear End With Next Ws

0611birth
質問者

お礼

いつも有難うございます。 上手く動きました。 久しぶりにVBA熱が上がり、色々と作っていきたいと思っています。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

既に回答が出ているが、使う要素技術(VBAコードのパターン)は簡単。初歩段階の話。骨子は簡単。 具体的なブック・シートの名前等は使わないで済むことに注目。 Sub test01() '--Activebookの全シートを捉える For Each For Each sh In Worksheets MsgBox sh.Name Next End Sub '----A各シートのA1セルに表示された文言を、そのシートのシート名とします。 Sub test02() For Each sh In Worksheets MsgBox sh.Name sh.Name = sh.Range("A1") Next End Sub ーー >各シートのE1セルをキーとして、VLOOKUPでシート名を左の「シート名マクロ」ブックから拾 この部分はよく理解できない。質問者同時のことで、興味なく、面倒くさいので、自分でコードなど修正などを付け加えて。

0611birth
質問者

お礼

いつも有難うございます。

関連するQ&A