- ベストアンサー
VBAの構文
- VBAの構文について教えてください!フィルタやソートを使ったデータ処理を自動化する方法を知りたいです。
- VBAを使って異なるブックのデータをVLOOKUPを使って結合し、フィルタとソートを行う方法を知りたいです。
- 異なるファイルのデータをVBAを使って処理し、特定のシートに結果を表示する方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>要は、これをファイルは何であれ、開いているファイルの「Critical」Sheetに対してにしたいわけです… ファイルを開いた後に、他のファイルをアクティブにしていなければ、開いたファイルがアクティブになっているはずなので、 Worksheets("Critical").Activate これだけで良いと思いますけど、どうでしょうか。
その他の回答 (2)
- nattocurry
- ベストアンサー率31% (587/1853)
・記録したマクロがどのようなコードになっているのか ・エラーはどのコードの部分で起きているのか ・エラーメッセージの内容はどうなっているか という具体的は内容を提示してください。
お礼
よくよく見てみたら、自分でもWorksheets をして指定をしていました。 ただ、item.xlsのほうをアクティブにしていたもので、うまく走ってくれてなかったようです。 そして、簡易Test版ではうまくいったのですが、本番のもうちょっと複雑なリストで、マクロを組みなおしてやってみたら、フィルタなどがズレまくってダメでした。。 構文見直してみます…
補足
遅くなってすみません。。。 マクロは下記のとおりです。 ActiveWindow.SmallScroll Down:=-117 Windows("DATA100310.xls").Activate ActiveWindow.SmallScroll Down:=-6 ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],[Item.xls]Sheet1!C1:C2,2,0)" Selection.AutoFill Destination:=Range("C1:C23"), Type:=xlFillDefault Range("C1:C23").Select Range("D19").Select エラーメッセージ 実行時Error '9' インデックスが有効範囲 にありません。 Windows("DATA100310.xls").Activate これに対してErrorが起こっているのですが、それは当たり前ですよね。 要は、これをファイルは何であれ、開いているファイルの「Critical」Sheetに対してにしたいわけです… その構文がわからないのです。。 よろしくお願いいたします。
- nattocurry
- ベストアンサー率31% (587/1853)
「マクロを走らせたいシート」、という文章が何を意味しているのかちょっと解りにくいですが・・・ 「フォルダ名:Itemのほう」のファイルにマクロを書き、 そのマクロで ・「DATA100310.xlsだったりDATA100315.xlsだったり」のファイルを開き、 ・そのファイルのシート「Critical」に対して、「フォルダ名:Item)にあるデータをもとに」「VLOOKUPをかけ、フィルタでソート」する だけですよ。 何をどう調べたのか解りませんが、「マクロの記録」でたいていのことは解りますよ。
お礼
えーとですね、説明がわかりづらかったですかね 1.Item.xlsを開きます 2.DATA100310.xlsを開きます 3.新しいマクロの記録をします(マクロの記録先はItem.xlsです4.DATA100310.xlsのCriticalシートに、Item.xlsのデータをひっぱってくるようにVLOOKUPをかけて、フィルタでソートします 5..マクロのI記録を終了します 6.DATA100310.xlsは閉じます 7.DATA100315.xlsを開きます 8.Item,xlsに記録したマクロを実行させます ここで、DATA100315.xlsに「Item.xlsのデータをひっぱってくるようにVLOOKUPをかけて、フィルタでソートする」という作業にはなってくれません。 Errorになり、デバックするか聞かれます DATA~というファイルは日々新しいものになります ファイル名に関係なく、開いているファイルのいつも同じ名前のシートに作業かけるというマクロを組みたいのです。 それを調べたのですが、わかりませんでした。
補足
わかりづらかったようなので補足します。 1.Item.xlsを開きます 2.DATA100310.xlsを開きます 3.新しいマクロの記録をします(マクロの記録先はItem.xlsです4.DATA100310.xlsのCriticalシートに、Item.xlsのデータをひっぱってくるようにVLOOKUPをかけて、フィルタでソートします 5..マクロのI記録を終了します 6.DATA100310.xlsは閉じます 7.DATA100315.xlsを開きます 8.Item,xlsに記録したマクロを実行させます ここで、DATA100315.xlsに「Item.xlsのデータをひっぱってくるようにVLOOKUPをかけて、フィルタでソートする」という作業にはなってくれません。 Errorになり、デバックするか聞かれます DATA~というファイルは日々新しいものになります ファイル名に関係なく、開いているファイルのいつも同じ名前のシートに作業かけるというマクロを組みたいのです。 それを調べたのですが、わかりませんでした。
お礼
Worksheets! そう、これが知りたかったのです! おかげさまで解決しました。 ありがとうございました!!