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

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

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

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

Q&A

解決済

2回答

13817閲覧

excelVBAのフォームでタブ遷移がきかない

tayack122

総合スコア14

VBA

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

0グッド

0クリップ

投稿2016/09/29 04:10

excelのオープンイベントでフォームをshowしています。
TabKeyBehavior = False
にしているにもかかわらず、タブ遷移が効くときと効かないときがあります。
また代替手段としてkeypress,Keydownイベントを用いてタブ遷移を試みたのですが、keypress,Keydownイベントが呼び出されておりません。
(オープン完了後、ボタン起動でフォームを呼び出してもkeypress,Keydownイベントが呼び出されないことも確認済み)
※VBAプロジェクトの『プロジェクトを表示用にロックする』を有効にしております。
どのようにしたらexcelVBAのフォームでタブ遷移がきくようになるでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

テキストボックス2つ、ボタン1つのユーザーフォームを作成し、動作確認してみました。
TabKeyBehaviorはいずれもFalse。
VBAプロジェクトの『プロジェクトを表示用にロックする』を有効にし、ブックを開く際にフォームを表示するようVBA記述しました。

上記内容で作成したブックを開くと、フォームが開かれ、最初のテキストボックスにフォーカス。
その後Tab押下で次のテキストボックス、ボタンにそれぞれ正常に遷移できました。(現象の再現確認できず、です。。)

というわけで以下は推測からのアドバイスになります。

まず、各コントロールを入力した際に行われる処理などでフォーカス遷移を邪魔しているようなものがないか?という点が気になります。

また、以下に類似の現象でお悩みの方の記事がありました。
⇒エクセルの学校

ただ、この方は結局解決には至らなかったようです。
(上記の現象としてはTabキー押下時にフォーカス遷移せず、Tab文字入力として処理されているように見えます。)

試しに
・他の端末で同じファイルを使い同じ操作をしてみる(端末依存の問題)
・新規のExcelに同じフォーム・コードを移植して同じ現象が出るか確認(ファイル依存の問題)
といったように、調査の切り口を変えてみるのも解決の手がかりになるかもしれません。

ただ、環境に依存する現象だとすると、解決は難しいかもしれません。

投稿2016/09/30 01:24

jawa

総合スコア3013

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

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

tayack122

2016/10/05 00:27

いろいろと試していただきありがとうございました。 おそらく環境、アドインに依存するものだと判断しました。
guest

0

TabKeyBehaviorはデフォルトがFalseですので、意図的にTrueにしない限りはタブ遷移できそうです。
どこかで意図的にTrueにしている処理はないですか?

投稿2016/09/30 00:32

ttyp03

総合スコア16996

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

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

tayack122

2016/09/30 01:13

ご回答ありがとうございます。 意図的にTrueにする処理は組み込まれておりません。 また明示的にFalseを記述したにもかかわらず、Tab遷移が行われません。
ttyp03

2016/09/30 01:16

遷移が行われないときは、テキストボックスなどにタブが入力されるのですか? それともタブ自体無視されるのですか? 前者であるなら、どこかでTabKeyBehaviorをTrueにしている処理があるのかと。 後者であるなら、キーイベントを拾って何かをしている処理があるのではと推測します。
tayack122

2016/09/30 01:35

ご回答ありがとうございます。 前者ですが一切TabKeyBehaviorをTrueにする処理を記述していないため困っております。。。
ttyp03

2016/09/30 01:36

TabKeyBehaviorはTrueに書き換わっている、ということですか?
tayack122

2016/09/30 01:40

ご回答ありがとうございます。 TabKeyBehaviorをTrueにする処理を記述していないが、TabKeyBehaviorをTrueになっているような挙動をしているときがあるので困っております。(タブ遷移が正常に動作するときも50%ぐらいの確立であります)
ttyp03

2016/09/30 01:42

ではTabKeyBehaviorがTrueかどうかは確認していないということですね。 まずはそこから確認しましょう。 Trueになっているのであれば、どこかでTrueにしている処理がある。 Falseのままなら、Trueのときのようにふるまう処理がどこかにあります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問