• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ワードでタイマーの設定 日本語入力ができない)

ワードでタイマーの設定 日本語入力ができない

このQ&Aのポイント
  • ワードでタイマーを設定する方法を教えて頂いた者です。コマンドボタンをクリックし、設定時間が来ると自動的にメッセージボックスが出て文章の保護をかけるという設定です。しかし、入力を始めると日本語入力がうまくいきません。
  • コマンドボタンに設定されたコードは正常に動作しており、設定時間が来るとメッセージボックスが表示されます。しかし、文字入力を始めると一部の文字が変換されてしまいます。
  • 問題の原因は不明ですが、日本語入力が正しくできるようにするためには、他の入力方法を試したり、ソフトウェアの設定を変更したりする必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 いくつか方法を探ってみましたが、ご指摘のマクロは、私のように、JISかな入力の者には問題ないのですが、ローマ字変換をする人たちにとっては、1文字入力するたびに、マクロでIMEに割り込みが入ってしまうので、二文字として途切れてしまいます。 私は、前回の時に、OnTimeメソッドの方法を探していたのですが、今度は、逆に、変換中は、マクロが割り込みできないという不都合で、経過時間を過ぎても、Enterを入れない限りは、マクロで終了合図が出ないというので、結果的にはやめました。 外部から、IME制御という方法もないわけではありませんが、そういう方法は、イレギュラーで、PCの全体の環境に左右されやすいのです。 テキストボックスのような環境でしたら、一文字ずつ監視して、おそらくは可能だと思いますが、Wordのドキュメント上では、今のところ分らないのです。Wordのドキュメント には、Excelのような豊富なイベント(入力監視)モードがありません。 最初の話にもどって、他のツールをお探しになったほうが無難だと思います。Word上では、個人の自主申告に任せるぐらいしかないように思います。

blindcrow
質問者

補足

丁寧で分かりやすい回答、ありがとうございます。 >マクロでIMEに割り込みが入ってしまうので、 >二文字として途切れてしまいます。 IMEに割り込みが入ってしまうとは思いもよりませんでした。さすがにIME制御するわけにはいきませんね。(泣) 私の自宅にあるPCはWord2000、IME2000ですが、友人のPCはWord2003、IME2003だったので試しに開いて実行してもらいました。するとWord2003ではちゃんと動くんです! 文字もちゃんと認識して変換もできますし、ますます訳が分かりません。Word2003ではIMEに関係なくマクロを実行できるんでしょうか? それともIMEの入力方式「スタンダード」「ナチュラルインプット」に関係あるのでしょうか?

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。Wendy02です。 コントロールツールのコマンドボタンとテキストボックスで、方法を考えてみました。 KeyUp イベントで、時間が経つと、次の入力が不可能になります。当初のイメージとはだいぶ違ったものになりますが、目的は可能です。(テキストボックスの枠線が取れれば、イメージとしては、よくなるのですが。プロパティで、いろいろ調整してみてください。) 注意:コマンドボタンを貼り付けて、Enter を押して、パラグラフを換えてから、テキストボックスを設置してください。テキストボックスから作ったら、コマンドボタンがなかなか入りませんでしたる フォントの大きさにもよりますが、画面一杯に入れるというのは不可能だと思います。2分ですと、どんなにがんばっても、500文字を超える人はいないと思います。1ページ満杯で、だいたい、1200字だったかな? もちろん、本格的な入力検査は、専門のツールのほうがよいのです。 2分経って、キーを入力して、それを上げたとたんに、終了が入ります。 'ThisDocument に貼り付けて使います。 '------------------------------------------------ Dim StopFlg As Boolean Private Sub CommandButton1_Click() Dim StartTime As Date Dim LastTime As Date StartTime = Now() StopFlg = True LastTime = StartTime + TimeValue("00:02:00") Application.OnTime LastTime, "ThisDocument.CheckMode" 'テキストボックス設定 With TextBox1   .Enabled = True   .MultiLine = True   .EnterKeyBehavior = True   .BorderStyle = fmBorderStyleNone   .Text = ""   .SelStart = 1   .AutoSize = False End With End Sub Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)  TextBox1.Enabled = StopFlg End Sub Sub CheckMode()  StopFlg = False  MsgBox "2分経ちました。終了です!" End Sub

blindcrow
質問者

お礼

ご回答ありがとうございます。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

#1 のWend02です。 >Word2003ではIMEに関係なくマクロを実行できるんでしょうか? きちんと、最後に、終了の合図が出たのですか? もし、そうでしたら、たぶん、まったく違う構造なのでしょうね。私には分りません。 >IMEの入力方式「スタンダード」「ナチュラルインプット」に関係あるのでしょうか? これも分りません。 Wordに関して、もう少し詳しい方もいらっしゃるかもしれませんが、Word上で、働かせるツールというもの自体、私は知らないです。 一般的に入力スピードを検定するようなソフトというのは、もともと、キーボードから直接信号を取っていますから、Wordのように一般文字入力をする仕組みとはだいぶ違っています。私に言えるのは、このぐらいです。

blindcrow
質問者

お礼

ご回答ありがとうございます。 Wordのバージョンによって構造が違うのかもしれませんし、Wordを使ってタイピングチェックすること自体が厳しいのかもしれませんね。 もう少しいろいろ試してみて、どうしてもできない場合はタイピングソフトの導入も検討してみようと思います。 貴重なお時間を使って頂いてありがとうございます。 もうちょっとがんばってみます!!