- 締切済み
エクセルのデータの変更
今マクロでSheet1にあるデーターをSheet2・3・4・5・6・7それぞれにそれぞれの抽出条件で抽出できるよう設定してあるのですが、このSheet1を他のBookに変更した場合のマクロの変更の仕方を教えてください。 ちなみにいまは 標準モジュールに Sub 定義() Dim myTbl As Range, myQry As Range, sakiRng As Range End Sub と各シートの[Worksheet Activate] に Private Sub Worksheet_Activate() Set myTbl = Sheets(1).Range("myTbl") Set myQry = Sheets(8).Range("A_抽出条件") Set sakiRng = Sheets(2).Range("A3:AR3") myTbl.AdvancedFilter xlFilterCopy, myQry, sakiRng Dim rw As Long '入力最終行 rw = Range("I65536").End(xlUp).Row With Application Range("I" & rw + 1) = .Sum(Range("I1:I" & rw)) Range("AO" & rw + 1) = .SumIf(Range("AP1:AP" & rw), "済", Range("AO1:AO" & rw)) Range("AQ" & rw + 1) = .Sum(Range("AQ1:AQ" & rw)) End With End Sub となっています。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- taisuke555
- ベストアンサー率55% (132/236)
Sheets(1)を他のブックに移すという事ですか? テストしていないので、確信はありませんが、 Sheet1を移したブックを開いて、 Set myTbl = workbooks("ブック名").Sheets(1).Range("myTbl") または Set myTbl = workbooks("ブック名").Sheets("シート名").Range("myTbl") でいいのではないでしょうか? 多分、ブックを開かないと、エラーになると思います。 あと、 1.Sheets(1)を移動すると、Sheets(2)以降のINDEXはずれてしまうような気がします。 2.A_抽出条件の部分が具体的にどういうものか分からないので何とも言えませんが、 Private Sub Workbook_SheetActivate(ByVal Sh As Object) に書けば、各シートに記述しなくてもいいと思います。 (シートをアクティブにするたびに抽出し直す必要があるのか疑問ですが・・・) 3.Sub 定義()内の宣言は何でしょう・・・ 間違えた回答ならすみません。
- vbafriend
- ベストアンサー率47% (17/36)
初めまして。次のように操作してみてはいかがでしょうか ・マクロ記述用のブックを一つ作り、クラスモジュールにコードを記述する。 ・ブックに新しくツールバーを設け、そこにマクロ実行ボタンを貼り付けてマクロを実行できるようにする。 このようにすれば、マクロ記述用のブックが立ち上がっている間は、マクロを実行することが出来ます。 例えば、ブック1がアクティベートの時には、ブック1のシートにマクロが作用する。ブック2がアクティベートの時には、ブック2のシートにマクロが作用するというような動作をします。