質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

3752閲覧

ユーザフォームのフォーカス時、別シートをアクティブにするには?

blacksanta

総合スコア23

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/04/14 16:55

こんばんは。

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を確実にアクティブにするにはどうしたら良いのでしょうか?
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

torisan

2019/04/15 01:40

>>ユーザフォームに再度フォーカスしてユーザフォームをアクティブにするとブックBの上にブックAが現れ Microsoft Office Personal 2010 で再現しませんでした。 何か記載以外のコードがありますか?
hatena19

2019/04/15 02:19

Office 365 の環境では再現しました。Office のバージョンに依存する事象なんでしょうか。
guest

回答1

0

ベストアンサー

フォーカス移動するイベント(クリック時イベントなど)内での、フォーカスを変更するコマンドは、イベント発生のタイミングの関係だと思いますが、うまく動作しないことがあります。

このような場合、私の場合はタイマー処理でコマンドの発生タイミングをずらして対処しています。

標準モジュール

vba

1Public Sub SheetActivate() 2 With Workbooks("ブックB.xlsx") 3 .Activate 4 .Worksheets("sheet2").Activate 5 End 6End Sub

ユーザーフォームモジュール

vba

1Private Sub CommandButton3_Click() 2 Application.OnTime Now(), "MyActivate" 3End Sub

ちなみに、If NOT shtName = "Sheet2" Then でアクティブシート名をチェックしてますが、意味ないですね。ユーザフォームのコマンドボタンをクリックするとフォーカスが移動しますので。

投稿2019/04/15 02:04

hatena19

総合スコア33692

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問