こんばんは。
VBAでユーザーフォームとEXCELシートを
2枚使ったプログラムを作成しております。
例えば、ユーザフォーム、ブックA-Sheet1、ブックB-Sheet2とした時に、
ブックAにあるボタンを押すとユーザフォームが起動します。
ユーザフォームを起動しアクティブにすると、ブックAもアクティブになります。
ユーザフォーム内にあるボタンを押した時に、ブックBのデータを表示したいので
VBA
1 Dim shtName 2 shtName = ActiveSheet.Name 3 If NOT shtName = "Sheet2" Then 4 Workbooks("ブックB.xlsx").Activate 5 Worksheets("sheet2").Activate 6 End If
とし、ブックBをアクティブにするように作りました。
ユーザフォーム内にあるボタンを最初に押した時は、ブックBがアクティブになりデータの確認ができました。
次にユーザフォームに再度フォーカスしてユーザフォームをアクティブにすると
ブックBの上にブックAが現れその上にフォームが表示され、
再度ユーザフォーム内にあるボタンを押してみてもブックBがアクティブにならずに無反応です。
本来ならIf NOT shtName = "Sheet2" ThenでブックAがアクティブになっているのでブックBを表示させたいです。
その後もう一度ユーザフォーム内にあるボタンを押すと実行エラー9 インデックスが有効範囲内にありませんとエラーになります。
Debug.Print等で確認したところブックBがアクティブにならずに(ブックAがアクティブ状態で)
Worksheets("sheet2").Activateが実行され実行エラー9となっております。
ユーザフォームへフォーカスしてボタンを押そうとした時にブックAをアクティブにさせない方法
またはブックBを確実にアクティブにするにはどうしたら良いのでしょうか?
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー