こんにちは。先日ワードでタイマーを設定する方法を
教えて頂いた者です。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2005982
コマンドボタンをクリックし、設定時間が来ると自動的にメッセージボックスが出て文章の保護をかけるという設定です。
設定はうまくいったのですが、コマンドボタンをクリックしたあとに入力を始めると、文字入力がうまくいきません。「あいうえお」は入力出来ますが、「かきくけこ」や「さしすせそ」などが「KあKいKうKえKお」や「SあSいSうSえSお」になってしまいます。
コマンドボタンに設定したコードは次の通りです。
Private Sub CommandButton1_Click()
Static isClick As Boolean
If Not isClick Then
isClick = True
SendKeys "%({E})", False
SendKeys "+({L})", False
SendKeys "{HOME}", False
Pause 10
MsgBox "作業を終了して下さい。"
isClick = False
ActiveDocument.Protect Password:="hokuden", NoReset:=False, Type:= _
wdAllowOnlyComments
End If
End Sub
Public Sub Pause(ByVal PauseTime As Double)
Dim E As Double
E = Timer + PauseTime
Do While Timer < E
DoEvents
Loop
End Sub
日本語入力を正しく入力できるようにするのはどうすればいいでしょうか?
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
こんばんは。
いくつか方法を探ってみましたが、ご指摘のマクロは、私のように、JISかな入力の者には問題ないのですが、ローマ字変換をする人たちにとっては、1文字入力するたびに、マクロでIMEに割り込みが入ってしまうので、二文字として途切れてしまいます。
私は、前回の時に、OnTimeメソッドの方法を探していたのですが、今度は、逆に、変換中は、マクロが割り込みできないという不都合で、経過時間を過ぎても、Enterを入れない限りは、マクロで終了合図が出ないというので、結果的にはやめました。
外部から、IME制御という方法もないわけではありませんが、そういう方法は、イレギュラーで、PCの全体の環境に左右されやすいのです。
テキストボックスのような環境でしたら、一文字ずつ監視して、おそらくは可能だと思いますが、Wordのドキュメント上では、今のところ分らないのです。Wordのドキュメント には、Excelのような豊富なイベント(入力監視)モードがありません。
最初の話にもどって、他のツールをお探しになったほうが無難だと思います。Word上では、個人の自主申告に任せるぐらいしかないように思います。
この回答への補足
丁寧で分かりやすい回答、ありがとうございます。
>マクロでIMEに割り込みが入ってしまうので、
>二文字として途切れてしまいます。
IMEに割り込みが入ってしまうとは思いもよりませんでした。さすがにIME制御するわけにはいきませんね。(泣)
私の自宅にあるPCはWord2000、IME2000ですが、友人のPCはWord2003、IME2003だったので試しに開いて実行してもらいました。するとWord2003ではちゃんと動くんです!
文字もちゃんと認識して変換もできますし、ますます訳が分かりません。Word2003ではIMEに関係なくマクロを実行できるんでしょうか?
それともIMEの入力方式「スタンダード」「ナチュラルインプット」に関係あるのでしょうか?
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
No.2
- 回答日時:
#1 のWend02です。
>Word2003ではIMEに関係なくマクロを実行できるんでしょうか?
きちんと、最後に、終了の合図が出たのですか?
もし、そうでしたら、たぶん、まったく違う構造なのでしょうね。私には分りません。
>IMEの入力方式「スタンダード」「ナチュラルインプット」に関係あるのでしょうか?
これも分りません。
Wordに関して、もう少し詳しい方もいらっしゃるかもしれませんが、Word上で、働かせるツールというもの自体、私は知らないです。
一般的に入力スピードを検定するようなソフトというのは、もともと、キーボードから直接信号を取っていますから、Wordのように一般文字入力をする仕組みとはだいぶ違っています。私に言えるのは、このぐらいです。
ご回答ありがとうございます。
Wordのバージョンによって構造が違うのかもしれませんし、Wordを使ってタイピングチェックすること自体が厳しいのかもしれませんね。
もう少しいろいろ試してみて、どうしてもできない場合はタイピングソフトの導入も検討してみようと思います。
貴重なお時間を使って頂いてありがとうございます。
もうちょっとがんばってみます!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) エクセルで、1つのセルで上書き足し算して セルの範囲を指定できますか? パソコン初心者です。 お時間 3 2023/07/05 06:13
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/08 15:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スクロールしてもボタンを常に...
-
押したボタンの位置取得(共通の...
-
コマンドボタンがあるかどうか...
-
Excel:コマンドボタンの移動
-
[ExcelVBA] コマンドボタンを押...
-
Auto CAD の F1(ヘルプ)を機...
-
excelコマンドボタンと内容を別...
-
ShowAllDataのエラーを回避したい
-
EXCELのシート名を指定してその...
-
ActiveXコントロールのコマンド...
-
Excel2007 VBA シート上のオ...
-
access レコード移動の早送り的な
-
エクセルVBA シート上にあるコ...
-
エクセルVBA
-
Wordでドラッグした文字列を括...
-
Excel VBA --- コマンドボタ...
-
ワードにタイマーを設定したい
-
InDesignには「1段階戻る」の...
-
エクセルVBAでOptionButtonのオ...
-
Excel VBAについて【図形を組み...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel:コマンドボタンの移動
-
コマンドボタンを押すたびに大...
-
スクロールしてもボタンを常に...
-
押したボタンの位置取得(共通の...
-
コマンドボタンがあるかどうか...
-
エクセルVBAでOptionButtonのオ...
-
コマンドボタンで「終了ボタン...
-
Excel VBA --- コマンドボタ...
-
エクセルVBA シート上にあるコ...
-
ShowAllDataのエラーを回避したい
-
Accessのコマンドボタンの立体...
-
エクセルVBA
-
EXCELでNo.を変えて印刷したい
-
PPTのコマンドボタンがクリック...
-
マクロ登録ボタンに色をつける
-
実行中の作業を中止させるコマンド
-
エクセルのコマンドボタンの位...
-
[ExcelVBA] コマンドボタンを押...
-
Wordでドラッグした文字列を括...
-
チェックボックスで「いずれか1...
おすすめ情報