お世話になります。
以前にも似たような質問をさせていただきました。
EXCELに表示されている行番号を正確にとらえ、表示範囲が変更された場合(スクロール、ZOOM、その他で・・)、動的にある処理をする必要があります。 変更された範囲については、visibleRangeプロパティで変化を捉えることができるのですが、それトリガー(きっかけ)となるイベントがありません。
しかたがないので、Win32 APIのGetInputStateでマウス、またはキーボードの入力を待ち構えることにしました。 ところが、GetInputStateは入力があった場合は、1を返すはずなのですが、マウスボタンを押すと、1が返ったり、返らなかったり、また、キーをおしても反応しないようです。 実験は書きのコードにより、マウス、キーバードを押すと列1に"aa"という文字を行1から下に向かって書くようにしました。
根本的にこのAPIの使い方が間違っているのでしょうか? Web上で検索しても非常にシンプルなサンプルがあり、単純にこのAPIの0,1を判断して使っているようですので、わたしのコードで問題ないように思えるのですが・・・ どなたかアドバイスをお願いできますでしょうか。
Dim i Sub Main() i = 1 Do If GetInputState <> 0 Then Cells(i, 1) = "aa" i = i + 1 End If DoEvents Loop MsgBox "マウスクリックかキーの入力がありました。", vbInformation, "確認" End Sub
この記事にはVBAのコードが含まれています。
緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他
++++++++++++++++++++ OS ⇒Windows 2000 Version⇒Excel 2000 ++++++++++++++++++++ |