• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字を変えてループ処理をする方法がわかりません)

ループ処理で複数の名前を変えて処理を行う方法

xls88の回答

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

配列にします。 Dim arg As Variant Dim i As Long arg = Array("JPN", "CHN", "KOR", "HOZ", "USA") For i = LBound(arg) To UBound(arg) MsgBox arg(i) Next

vesper580109
質問者

お礼

xls88さん ご回答ありがとうございます。 得たい結果が得られていないのでループ処理がうまくいっているのかどうかまだ分かりませんが、まずはお礼申し上げます。 Variant型を使用しているので、argを処理中のどの位置に挿入しても処理が回ると思っているのですが、うまくいきません。 下記のように、"harituke"シートのB列にargが存在していて、オートフィルタをかけた後 事前に準備されている各argのWorksheetsに貼り付けていく作業をしています。 すると .CurrentRegion.SpecialCells(xlVisible).Copy Worksheets("arg").Range("A1") でエラーになってしまい、得たいループ処理が初めでつまづいてしまっています。 下記ソースをForとNextの間に入れるだけではうまくいかないのでしょうか。 Sheets("harituke").Activate With Worksheets("harituke").Range("B1:B500") .AutoFilter Field:=1, Criteria1:="arg" .CurrentRegion.SpecialCells(xlVisible).Copy Worksheets("arg").Range("A1") .AutoFilter Worksheets("arg").Range("1:1").Delete End With

関連するQ&A

  • EXCELVBA シート毎にピボットテーブル処理

    お世話になります。 シートが複数(可変ですがだいたい10個ほど)あります。 sheet1~sheet10 左から2番目のシート(sheet2)から順に全シートの同じ場所に営業成績をしめす表があり、これを毎回ピボットテーブルで集計しています。 やりたいこと sheet1にボタンを作成して、クリックするとsheet2~sheet10(実際は可変です)までピボット集計を自動で実施したいのです。 ピボット集計は自分でマクロ記録したコードを埋め込みますので、sheet2~sheet10(実際は可変です)に自動でピボット集計する処理コードをご教授いただけませんでしょうか。 例) Sub ピボット() 全シートループ処理 "ピボット集計処理" i = i + 1 次シートへ End Sub どなたかお知恵をお借りできませんでしょうか。 よろしくお願い致します。 環境 EXCEL2013 Winbdows7

  • エクセル マクロ ループ ファイル展開

    マクロ ループ処理について質問です。 test エクセルファイルのD1セルから下にファイル名を入れていき、その名前(フルパスで入れています)のファイルを開きつつ、シートを 26-4 に選択していくループ処理をしたいのですが、2週目から Sheets("26-4").Select  でエラーになります。 原因は、test ファイルがアクティブになっているからだと思うのですが、その対策の仕方が、検索してもうまく見つからなかったので、質問しました。 ご回答よろしくお願いします。 エクセル2010 使用しております。 Range("D1").Select i = 1 Do Until ActiveCell.Value = "" Workbooks.Open Filename:=Range("D" & i) '操作事項マクロ Sheets("26-4").Select Windows("test.xlsm").Activate ActiveCell.Offset(1, 0).Select '下にずれる i = i + 1 Loop End Sub

  • Excelセル参照方法(初心者で申し訳ありません)

    ExcelにてAファイルとBファイルを別々に立ち上げBファイルのセル内容をAファイルにて見たいのですがどのようにしたらよいか解りません。 Aファイルはアドイン関数?(名前これでいいのかわからないです?)で内容がリアルタイムで変わる為VBマクロにてある秒数ごとに変わる 情報をサンプリングしサンプリング内容にて処理をおこないたいのですが, VBマクロ(ウエイトを入れた無限ループ)を実行するとAファイルのセル内容が変わりません。当たり前ですね。 そこでBファイルにてマクロを実行しBファイルのセルの内容をAファイルにて参照して処理をおこないたいと思っております。 ただ基本的なところ参照のしかたが解りません。HELPをみてもgooの質問をみてもみあたりません 別々に立ち上げたファイル間でのセルは参照できないのでしょうか?初歩的な質問で申し訳ありませんが よろしくお願いします。

  • バッチ処理でAcess処理終了後にメッセージがでるのはなぜですか?

    バッチファイルで、Access2000のマクロ「AutoExec」を起動させて処理をおこないたいのですが、 「AutoExec」の処理が終了し、Accessが終了すると、以下のメッセージボックスが表示されてしまいます。 メッセージボックスの内容 「'C\xxx.mdb'がみつかりません。名前を正しく入力したかどうかを確認してから、やり直してください。 ファイルを検索するには、「スタート」ボタンをクリックしてから、[検索]をクリックしてください。」 Access2000は、該当のディレクトリに、置いていますし、 ちゃんとAccess2000のマクロ「AutoExec」の処理は実行されています。 Access2000の処理は、正常に終了しているのに、こんなメッセージが表示されては、 意味がありません。 このAccess2000の「AutoExec」のバッチ処理は、何十個もあるバッチ処理の一部です。 バッチ処理の途中でメッセージが出るとその後自働で、行われる予定のバッチ処理が、 行われないので非常に困ってます。 どうしたらよいですか? とにかく、バッチ処理で、Access2000を起動させ、マクロ「AutoExec」を使用して処理を行いたいのです。 その間、どんなことがあっても、メッセージボックスの表示などで、処理を止めてはならないのです。 お願いします。誰か教えてください。 バッチファイル名(このバッチファイルの次に、Access2000とは、無関係のバッチファイルの処理がたくさんあります) xxx.bat バッチファイルの内容 CALL c:\yyy.mdb(又は、startc:\yyy.mdb)

  • ExcelからWordの複数文章の特定部分を一括処理

    ExcelからWordの複数文章の特定部分を一括処理 初めて質問をしますのでおかしな点があればご指摘いただけると幸いです。 Excelのマクロなどで文章の処理をしております 文章自体は定形なのですが文章内の名前部分のみを変更して一括処理したいと思っております  ExcelからWordを開く    Excelの名前一覧から名前を取得    Wordの定型文の名前部分を置換して印刷    一覧から取得した名前を含むファイル名で別名保存  Excelから次の名前へ、繰り返し処理 毎日同じ内容を行うので簡単に出来ればと思い調べているのですがわかりません こういった場合はVBAの方が良いのでしょうか 何かマクロソフトを入れればいいのでしょうか その方法でどうすればできるのか教えていただけませんでしょうか

  • エクセル マクロ ループで?

    度々すいません。マクロはほぼ初心者ですがよろしくお願いします。 前回の質問で、ある程度教えていただいたのですがループさせる方法がよくわかりません。 http://okwave.jp/qa4469670.html サンプルでコードは Sub test()  Dim st As String, s As String, stmp As String  Dim sht As Worksheet, rw As Long, col As Long  st = "<div align='center'><b>$4</b></div>@<div align='center'><a rel='nofollow' href='$8'><img src='$9' border='0' alt='$3'></a></div>@<div align='center'><a rel='nofollow' href='$8'>$3</a></div>@$5@$6@<!--$1$2-->"  st = Replace(Replace(st, "@", Chr(10), 1, -1, 1), "'", Chr(34), 1, -1, 1)  Set sht = ActiveSheet '//現在のシートを設定 '------- 1行分の処理 ----  rw = 2 '//処理対象の行番号(2行目に設定)  s = st '//雛型の文字をコピー  For col = 1 To 9 '//A~I列までをループ(col=列番号)   stmp = "$" & Format(col, "#")    '//各セルの内容で置換え   s = Replace(s, stmp, sht.Cells(rw, col).Text, 1, -1, 1)  Next col  sht.Cells(rw, 14).Value = s '//結果をN列に入れる End Sub です。 マクロを実行するとセルN2に出力されます。これをN2以降、N3N4・・・も表示されるようにしたいです。 rw = 2 '//処理対象の行番号(2行目に設定)を固定させないでループすればいいようなのですが、どのようにすればいいのでしょうか? Sub test()~End Sub内全てを教えていただけないでしょうか? よろしくお願いします。

  • VBA マクロ 集計の方法

    マクロで集計するツールを作っているのですが、 各々のエクセルに下記のようなデータが入っています。 data.xls 日付 名前 12/1 ああああ 12/5 いいいい 12/8 うううう   ・   ・   ・ data2.xls 日付 名前 12/1 ああああ 12/5 いいいい 12/8 うううう 12/4 3333   ・   ・ このように色々なエクセルのデータを集計する場合、 集計しようとするデータの数がわからない場合は どのように処理したらいいのでしょうか? たとえば、配列をある程度考えられる数分確保し、 その分だけループさせて、日付又は名前が空になるところまでやる必要があるのでしょうか? どのようにしたら、効率よくデータ数を取得できるか教えてください。

  • WordのVBAマクロの実行を、一気に取り消す

    こんにちは。 Word2007以降で、1つのVBAマクロで行った処理を全て取り消す方法が見つからず、困っています。 例えば、Word文書の内容を、Forループなどで1段落ずつ処理していくマクロの場合、 そのマクロを実行した後、実行前の状態に戻すには、段落の数だけアンドゥをしなけれななりません。 こういったマクロの実行を、一気に取り消す方法は無いのでしょうか? 以上の件について、何か良い方法を知っておられる方がいらっしゃれば、是非教えて頂きたいと思います。 では、よろしくお願い致します。

  • VBAの作成方法について

    マクロ初心者です。 エクセルの値のコピペに時間がかかっているため、マクロを使って自動化させたいと思っています。 どなたかソースを教えていただけますでしょうか? <内容>  ・「実績データ」という名前のエクセルデータに値を貼付けさせたい。   シート構成は「140」「540」といった部門コード名のシートが複数あります。  ・値を持っている別エクセルデータは「実績データ140」と最後に部門コード3桁をつけた名前になります。  ・「実績データ140」のデータを「実績データ」のシート140にそのデータを貼付けしたい。  ・なお、「実績データ140」ファイルのシート名は140です。

  • VBAのChangeFileOpenDirectoryの部分がうまくいきません

    VBAでLAN内のフォルダに格納されているファイルを開く処理を行いたいのですが、 エラーが出ます。(下記参照) 実行時エラー'462' リモートサーバーがないか、使用できる状態ではありません。 詳細ですが、 Excel2000をベースにWord2000を組合せてマクロを組んでいます。 まずExcelでシート内のファイル名とそのフォルダを指定してやり、 そのフォルダにある該当する名前のWord2000ファイルを 開いて印刷、そして一旦閉じるという処理です。 これをファイルやフォルダを変えてExcelのリストにある 全てのファイルを順々に印刷させていきたいのです。 ループ処理で順々に開いて印刷、そして閉じる為、 そのファイルが格納されているフォルダのディレクトリを 一回一回 ChangeFileOpenDirectory で指定することになります。 ループ処理の1回目はうまくいきました。 しかし、2回目からが上記のエラーが出て進みません。 最初からマクロを起動し直すと、やはり1回目のループだけ うまくいきます。 ヘルプでも詳しく解説されていないので、参っています。 分かりにくい部分は補足しますので、 お力を貸して下さい。