複数のブックを開いているとエラーが出てしまいます
エクセルのマクロ初心者でたいへん恐縮です。質問の仕方が悪ければお詫び申し上げます。
エクセルでそれぞれ違うマクロが記録された二つのブックを開いて、シートの表から抽出などの操作をしています。例えば、(1).xlsと (2).xlsにはそれぞれ部品表のようなリストを含めて3つのシートがあります。その二つのブックを頻繁にアクティブに切り替えながら作業をしようとしているのですが、片方を使っていると別のブックを使った時に「インデックスが有効範囲にありません」というエラーが出て、アクティブブックとは違うシートを読み込んでしまっているようです。
ちなみにブックを一つだけ開いて操作している時は全くエラーはでません。二つのブックを扱っている時だけです。マクロはエンターを押すと実行されるようになっており、一方を実行するともう片方のブックでエラーが出てしまいます。
その二つのブックのコードでエラー(黄色く表示)になるのは以下の★~★の部分です。
------------------------------------------------------------------------------------
<(1).xlsのマクロ>
Sub Auto_Open()
' Auto_Open Macro
ActiveSheet.Unprotect
'
★Sheets("パッキンリスト").Columns("B:N").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("B2:B3"), CopyToRange:=Range("検索出力表!Extract"), Unique _
:=False★
ActiveWindow.SmallScroll Down:=-28
Range("C19:N19").Select
Selection.Copy
Range("D3:E14").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=True
ActiveWindow.SmallScroll Down:=4
Rows("21:21").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
ActiveWindow.ScrollRow = 1
Range("B3").Select
Application.OnKey Key:="{RETURN}", Procedure:="Auto_Open"
Application.OnKey Key:="{ENTER}", Procedure:="Auto_Open"
ActiveSheet.Protect UserInterfaceOnly:=True
End Sub
-----------------------------------------------------------------------------------
<(2).xlsのマクロ>
Sub Auto_Open()
' Auto_Open Macro
ActiveSheet.Unprotect
If Range("B3").Cells = "" Then
MsgBox " ☆ パーツNo,が未入力です。"
ActiveSheet.Protect UserInterfaceOnly:=True
Exit Sub
End If
★Sheets("パーツリスト").Columns("C:G").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("B2:B3"), CopyToRange:=Range("B20:E20"), Unique:= _
True★
Range("C21:E21").Copy
Range("D3:E5").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=True
ActiveWindow.ScrollRow = 1
Application.OnKey Key:="{RETURN}", Procedure:="Auto_Open"
Application.OnKey Key:="{ENTER}", Procedure:="Auto_Open"
ActiveSheet.Protect UserInterfaceOnly:=True
End Sub
------------------------------------------------------------------------------------
二つのブックを開いて、下のタスクバーでブックを切り替えて操作してもお互いが干渉せずそれぞれのブックのプログラムがエラー無く動くようにしたいのですが、
もし、何か解決法などございましたらご教授いただければ幸いです。
何卒よろしくお願い申し上げます。
お礼
>初めのアクチブシート名をシート名で変数に保存しているようだから >シートAの処理が終わったら、保存したシート名でアクチブにしたら仕舞いでは。 実際やりたかったのはそういう事なんです。 下記にも書かせていただきましたが、特にコード自体に問題は無かったようで、一度保存して閉じた後、流したらうまくいきました。 ご回答ありがとうございました。 お手数おかけ致しました。