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

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

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

下図で状況を説明します。 ①中央の「シート名変更」ブックの全シートについて、各シートのE1セルをキーとして、VLOOKUPでシート名を左の「シート名マクロ」ブックから拾い、「シート名変更」ブックの各シートのA1セルに一旦表示させます。(本当はシート名をダイレクトに変えたい) ②「シート名変更」ブックのA1セルに表示された文言を、そのシートのシート名とします。 ③「シート名変更」ブックの全てのシートが同じ書式である為、最終シート迄①/②を繰り返します。 現状、右の様にコードを書きましたが、上手く動くのがアクティブシートのみとなり、次のシートに処理が移行しません。 間違いを教示頂きたく、宜しくお願いします。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1620/2460)
回答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/17068)
回答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

  • ExcelのマクロによるVLOOKUPの参照シートの変更について

    ExcelのマクロによるVLOOKUPの参照シートの変更について ブックAのSheet1のセルA1にドロップダウンリストを作成し、アルファベットの"J"、"M"、"A"が選択できるようにしてあります。 ブックAのSheet2のセルB1には、以下の式が入力してあり、別のブック(ブックB)から情報を読み込んでいます。 =VLOOKUP(A1,'¥¥s_g¥欠席¥[ブックB.xls]国語'!$B$4:$V$30,4,FALSE) やりたい事は↓ ブックAのSheet1のセルA1にある、ドロップダウンリストを変更すると、ブックAのSheet2のセルB1にある式(上記式)の参照シート(上記式では「国語」の部分)が変更さえるマクロを作りたいのですが、うまくできません。 ちなみに、ドロップダウンリストの"J"を選択した場合は、ブックBのシート"国語"を参照し、リストの"M"を選択した場合は、ブックBのシート"数学"を参照し、リストの"A"を選択した場合は、ブックBのシート"美術"を参照するようにしたいです。 よろしくお願いします。 また、マクロを使わずして出来るようでしたら、その方法も合わせて教えて下さい。

  • Excel VBA シートへのリンク

    セルA1表示されている名前と同じシート名(別シート)へリンクするマクロを 作成したいです。 A1セルには関数が入力されていて 他のセルで条件を選択すると該当するシート名と同じ名前が表示されるようになっています。 よろしくお願いします。

  • 【エクセル】他のBookの、シート名を抽出したい

    ブックA,Bがあって、 ブックAのSheet1に「商品名、シリアル番号、商品サイズ・・・」とい ったような項目の表があります。また、Sheet1の表を基にして、数値の 違う表がSheet30まであります。 ブックBのSheet1のA列にはブックAのデータに対応するシリアル番号が ずらっと並べてあります(抜けてたり、多かったりするかもしれません)。 そこで、隣のB列に、A列に書いてあるシリアル番号をブックAから参照 (検索?)して、同じシリアル番号が入力されたセルのあるシートの、 シート名を表示したいです。おねがいします。 VLOOKUPで対応するシリアル番号のセルを探し出して、そのシートを表 示させるようなことを考えていたのだけど、参照するデータの列が左端 ではないし、検索するシートがたくさんあるし、ぜんぜんわかりませ ん。マクロを使用すれば出来るのでしょうか? エクセル2003を使用しています。 長文になってしまい、わかりにくいかと思いますが回答お願いします。

  • エクセル上のシートの再表示ができない!!

    こんにちは。 早急に、教えてください。 同じブック内にあるsheet1を参照している、 sheet2があります。そのsheet2のセルには、 =sheet1!A1・・・と表示されるのに、 sheet1が見つかりません。 書式-シート-再表示でも、「再表示」 がアクティブになりません。 sheet1はどこに行ってしまったのでしょうか。 よろしくお願いいたします。

  • VBA セルの値と同じ、別ブックのシートに貼付け

    いつもお世話になります。 シートをコピーし、閉じたブックのシートに貼付けしたいのですが、詳細は次の通りです。 ブックA…マクロがあり、Sheet1のA1プルボタンから店舗名を選択すると、その店舗の在庫が表示されます。 ブックB…シートが100枚ほどあり、シート名が各店舗名になっています。 ブックAを開き、A1から店舗を選択し、在庫数を手入力で修正し、マクロボタンを押したら、ブックB(閉じた)の同じシート名に、値で貼付ける ブックAは上書きしないで閉じる 決算時期で困っています。よろしくお願いします。

  • VBA(Excel):他のブックからシートごと取込みたい

    他のブックからシートを取込む(シート名を変更して)VBAがわからないのですが、どなたか詳しい方がいましたら、ご教授下さいませ。 以下を例として、ご回答いただけると幸いです。 よろしくお願いします。 ---------------------------------- 次の3つのブックが存在するとします。 a.xls b.xls c.xls a.xlsにはシートが1つだけあり、シート名は"sheet1"です。 b.xlsにはシートが1つだけあり、シート名は"sheet1"です。 c.xlsにはシートが3つあり、シート名は"sheet1"、"sheet2"、"sheet3"です。 a.xlsにVBAマクロを作り、a.xls上で実行させて、 a.xlsの"sheet1"は残したまま、 b.xlsの"sheet1"のシート名を"sheet1-b"に変更して、 a.xlsのシートとして取込み、 同様に今度は、 a.xlsの"sheet1"、"sheet1-b"は残したまま、 c.xlsの"sheet1"のシート名を"sheet1-c"に変更し、 c.xlsの"sheet2"のシート名を"sheet2-c"に変更し、 c.xlsの"sheet3"のシート名を"sheet3-c"に変更し、 a.xlsのシートとして取込み、 最終的に、a.xlsには、 "sheet1"、"sheet1-b"、"sheet1-c"、"sheet2-c"、"sheet3-c" の、5つのシートが存在するようにしたいのです。 (各シート上のデータは、a.xlsの各シートとしてすべて移行されている) ----------------------------------

  • 【VBA】シート名をセルに入力すると、そのシートのコピーを実行させるには?

    【条件】 1.仮に「合計」というシートに、追加されるシートのあるデータをコピーしたい。 2.別シートに一定のフォームの集計データが入っているので、このシート名を変更して「A」という名前に変更する。そして、「合計」の入っているブックに移動する。 3.「合計」のA1のセルに「A」という入力をしマクロを実行すれば、「A」のシートの一定のRangeから、合計の任意の場所にコピーをするマクロをつくりたい。 4.このフォームは年間同じフォームで20回発生するがそのたびに、同じような作業が必要となります。 (シートにコピーする作業は、やめて、ブックの別ファイルのあるシートから、ある一定のRangeをコピー元として、「合計」にコピーするでも問題ないです)。 If ~ Elseif ~、myRange = A1で作っても、そのmyRange = A, Elseif = B、と延々につくらなければならない(=たぶんこれは原始的なのだと自認しています)のがはがゆく、 シート名が”文字列(または数字)”の場合、その”文字列(または数字)”をもつ、ブックまたはシートから、コピーを実行というコードをつくりたいのです。 よろしくお願いいたします。

  • エクセルのマクロを使ってシートごとに名前をつけて保存したい

    マクロ初心者です。宜しくお願いします。 1つのブックにシートが複数あります。 それぞれシートをコピーして新しいブックを作成し そのブックに名前をつけて保存したいです。 例えばブック名が「売上管理」でそのシートが「A店」「B店」「C店」と3シートあるとします。 シート名:A店を他のブックにコピーしてマイドキュメントに名前を付けて 保存する場合のマクロを教えてください。 ちなみにその際のブック名は「シート名+任意のセル(D2)」と できれば一番助かります。 ちなみにD2のセルにはToday関数が入ってます。

  • EXCELマクロ シートの追加、シート名の変更

    おはようございます。 1つのブックで1ヶ月分のシートをつくるマクロを考えています。 月次処理シートのA列に例えば8月であれば、 0801 0802 0803・・・と入力。(もしくは0801から0831までをマクロで自動表示) シートを1ヶ月分自動で生成するマクロを実行して、シート名を0801、0802、・・・とそれぞれ自動で変更。 1ヶ月分のブックの完成としたいのですが、どういうマクロを組めばよいでしょうか。

  • VBAでシートが追加されたタイミングで動かしたい

    いつもお世話になっております。 掲題の通り、マクロが動くタイミングを、 そのファイルにシートが追加されたときに自動で動くように したいのですが、どのようにしたらいいでしょうか。 具体的に言うと、シートを追加すると、そのシート名を自動で セルの値から取得し、変更してほしいのですが…。 今は以下のように作っています。 Sub シート名変更() Range("N3") = "=VLOOKUP($I$9,Sheet1!$V$2:$W$22,2,0)" ActiveSheet.Name = ActiveSheet.Range("N3") End Sub 申し訳ありませんがご教授いただけたら幸いです。 宜しくお願い致します。

専門家に質問してみよう