エクセルVBAのユーザーフォームにテキストボックスをつけてIMEモードのプロパティをIMEMODE ONにしておいたのですが、一度フォームをhideして、再びshowするとIMEMODEが無効になってしまいます。なぜそうなるのか、そしてそうならないためにはどうしたらいいか教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:ta2 No.1

回答回数5ベストアンサー獲得回数0

ポイント30pt

実際に試して見ましたが、hide→showの後もimemodeは有効でした。

プロパティ内の設定だけではなく、コード内にもimemodeを設定している記述はないでしょうか?

id:hidebroken

わざわざありがとうございます。

すべて検索したんですが、コード内にあったのはそのフォームをShowする時にオンにするコードとフォームがアクティブになったときのイベントでオンにするコードがありましたが、コメントアウトしても結果は変わりませんでした。

うちのPCの問題なんでしょうか?たまにヤフーとか開いたときなどに、検索キーワードを入力する場所でIMEモードがオンにならなかったりするんですが、メモリの問題?(と勝手に思い)と思い立ち上げてるアプリケーションを閉じると直ったりします。

ただ、今回は開いているのはエクセルとVBEとこの質問ウインドウのみです。

そのフォームをいったん閉じるボタンで閉じてまたshowすれば、IMEは有効になるんですが、hideだとIMEモードに影響があるんでしょうか。謎です。

2004/08/08 17:54:56
id:aki73ix No.2

回答回数5224ベストアンサー獲得回数27

ポイント30pt

プログラムを組んでいても確かにそうなるのですが、通常のアプリケーションを使っていてもよく起こる現象ですよね^^;

アプリケーションのコントロールごとに、IMEのプロセスが起動するわけですが、リソース不足でIMEの設定が保存できないのが理由ではないかなと思っています

WindowsMessageを拾うか、Show/Hideの時にIMEMODEの値を保存、復帰してみてはいかがでしょうか?

これはあまり無いかもしれませんが、imeModeプロパティが正しく設定されていないのかもしれません、こちらのURLを参考にしてみてください

ただ、VBにはテキストボックスでIMEの設定をすると他のアプリケーションとは違って設定が他のテキストボックスと連動して変化してしまうという”仕様”があるそうです VCでは起こらないそうなので、このあたりも疑ってみた方がいいかも知れません

そのことが、こちらの掲示板に少しかかれていました

id:hidebroken

ありがとうございます。疑うポイントが広がってありがたいです。

2004/08/14 22:23:13

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません