[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBのSendkeysについて』(重機太郎)
WindowsXPのExcel2000です。
初めて投稿します。宜しくお願い致します。
久しぶりにVBを使って業務の効率化を図ろうとしたのですが、初歩的な所で
ハマってしまいました、助けて下さい。
要約すると、下記の様なマクロを作りました。
セルD1にAを入力してエンターを押し、セルA1に戻す。
Sub Macro1()
Range("D1").Select
SendKeys "{A}{ENTER}"
Range("A1").Select
End Sub
これを実行すると、何故か、セルA1にAと入力されてしまいます。
何故なんでしょう?
Sendkeysで、「A」「Enter」を送れ、という命令が実行されるよりもA1セルが選択される処理のほうが早いためです。
SendKeysは(大雑把に言うと)OSに対して「キーコードを送って」と伝える命令です。 そのままではOSに伝えた後にすぐ次の命令に移ってしまうためA1セルが選択された後にOSがキーを送る事になります。
SendKeysのWait引数にTrueを指定して
SendKeys "{A}{ENTER}",True
としてみてください。
>wait 省略可能です。名前付き引数 string の転送によって行われる処理が終了するまで、実行を一時中断するか >どうかを次に示すブール型 (Boolean) の値で指定します。 >(既定値) Falseプロシージャの終了を待たずに次の行に制御を移します。 >True処理が終了するまで実行を一時中断します。 (独覚)
Sub Macro1()
Range("D1").Value = "A"
Range("A1").Select
End Sub
ではダメなのでしょうか? (momo)
momoさんへ:
ありがとうございます。
AをD1に入力するだけなら確かにそうなんですけど、
やりたい事はもう少しだけ複雑?で、Sendkeysの機能が使いたかったのです。
(重機太郎)
Sendkeysは、本当にどうしようもないんで取りあえずこうしとくか みたいな方法です。 しかも、正常に作動しないことが多々あります。 まずは、この
>やりたい事はもう少しだけ複雑?
をSendkeysなしで実現することを検討されたほうが良いと思いますけどねえ!!
この掲示板では、苦肉の策で投稿することもありますが、自分の仕事ではまず使いません。
再度、検討してみてください。
ichinose
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.