
エクセルシートのダブルクリック イベントで
Call マウス左クリック
とします。
ret = SetCursorPos(929, 12) カーソル移動と
SendKeys " 12345"
は動くのですが
mouse_event 2, 0, 0, 0, 0 '左ダウン
mouse_event 4, 0, 0, 0, 0 '左アップ
この二つが 動いてくれません。
遅延させるタイマー入れたり、するのですが同じです。
MODULE の中に入れたり、シートの中に入れても 同じです。
どこが、問題なのでしょうか
よろしくどうぞ
Sub タイミング()
stime = gettickcount
Do While gettickcount - stime < 1000
DoEvents
Loop
Sub マウス左クリック()
ret = SetCursorPos(929, 12)
mouse_event 2, 0, 0, 0, 0 '左ダウン
mouse_event 4, 0, 0, 0, 0 '左アップ
ret = SetCursorPos(309, 282)
SendKeys " 12345"
ret = SetCursorPos(309, 320)
SendKeys " 12345"
SendKeys " {ENTER}"
SendKeys " %(RY)", True
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Type POINTAPI
X As Long
Y As Long
End Type ’位置取得
'------------------------------------------------------------------
Private Declare Sub mouse_event Lib "user32" _
(ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As _
Long, ByValcButtons As Long, ByVal dwExtraInfo As Long)
Public Declare Function SetCursorPos Lib "user32" _
(ByVal X As Long, ByVal Y As Long) As Long
No.2ベストアンサー
- 回答日時:
すべてを標準モジュールに書いてみました。
実行開始はシート1に置いた「角丸四角形」にマクロの登録をして、これをクリックします。
Option Explicit
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Type POINTAPI
X As Long
Y As Long
End Type '位置取得
'------------------------------------------------------------------
Private Declare Sub mouse_event Lib "user32" _
(ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As _
Long, ByValcButtons As Long, ByVal dwExtraInfo As Long)
Public Declare Function SetCursorPos Lib "user32" _
(ByVal X As Long, ByVal Y As Long) As Long
Public Declare Function GetTickCount Lib "kernel32" () As Long
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub 角丸四角形1_Click()
Call タイミング
Call マウス左クリック
End Sub
Sub タイミング()
'ここはわずらわしいのでSleepに変えました。
'Dim stime As Long
'stime = GetTickCount
'Do While GetTickCount - stime < 1000
'DoEvents
'Loop
Sleep 1000
End Sub
Sub マウス左クリック()
Dim ret As Long
ret = SetCursorPos(929, 12)
mouse_event 2, 0, 0, 0, 0 '左ダウン
mouse_event 4, 0, 0, 0, 0 '左アップ
'ret = SetCursorPos(309, 282)
Sleep 500
SendKeys " 12345"
ret = SetCursorPos(309, 320)
SendKeys " 12345"
SendKeys " {ENTER}"
SendKeys " %(RY)", True
DoEvents: DoEvents: DoEvents
End Sub
これでペイントの右上のボタンをクリックさせ
セルに12345を2回表示させました。
2010版のせいかSendKeys " %(RY)", Trueは校閲らしいのですがYがわかりませんでした。
Excelのどの版でも正常に動作すると思いますので、理解を進めてください。
なおシートのセルをダブルクリックして開始させる場合は
上記の角丸四角形・・のところを変えます。
(あるいはそのまま残しておけばどちらからでも実行できます。)
Worksheet_BeforeDoubleClickイベントを使い下記のようにします。
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Call タイミング
Call マウス左クリック
End Sub
No.1
- 回答日時:
SetCursorPos(929, 12)
この座標は正しいですか。
古いXP機の1024x800モニターで、該当のWindowが最大化されている状態の時の
「最小化」か「最大化:元に戻す」あたりだと思いますが・・・。
(スクリーン座標とOfficeのピクセル座標の関係はかなり難しいので、メニューだけ表示させるとか最大化しておくとかしないとちょっとしたことでうまく動作させられなくなります。)
プログラムは最初の部分以外を標準モジュールに書いてあるみたいなので無関係と思いますが
Private Declare Sub mouse_event Lib ・・・・・
これだけprivate宣言してあるのは間違えやすいので他とそろえるようにしたほうがいいです。
ありがとうございます。
座標軸は間違っていないと思います(で、座標軸取り込む部分も記載しました)
現状、マウスがとんだ状態で、クリックすれば予定通りですので、
で、ぶっちゃけ、いろいろなところからのコピペゆえ
Private Declare Sub mouse_event Lib ・・・・・
これだけprivate宣言してあるのは・・・
どう直せばいいでしょ?? 恐縮ですが
置く場所を 間違ったかな?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ExcelVBAでスペースキー操作したい
Excel(エクセル)
-
マウスのクリックを自動で
C言語・C++・C#
-
VBAで、なぜかSendkeyが効きません。
PowerPoint(パワーポイント)
-
-
4
VBAでのカーソル移動とマウスクリック
Access(アクセス)
-
5
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
6
Excel VBAでマウスの左クリックのイベントを検知するには
Visual Basic(VBA)
-
7
API関数ImmSetConversionStatus のビットセット
Visual Basic(VBA)
-
8
今更、VBAでRPA、キーボード操作自動化ってどうやるの?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UWSファイルの編集?
-
デスクトップに直接画像を表示...
-
Unityでピクセル情報を取得する...
-
UWSC画像認識で座標の位置がず...
-
「ご処理進めて頂きますようお...
-
UMLでの例外処理
-
VBAでループ内で使う変数名を可...
-
CloseとDisposeの違い
-
尻毛って処理する?。
-
エクセルVBAで、MsgBox やInput...
-
VBAでCOPYを繰り返すと、処理が...
-
ACCESS DCOUNTの抽出条件について
-
UPS警告音を止めたい
-
エクセルの画面にユーザーフォ...
-
エクセルで、日付を入力すると...
-
アクセスVBA フォームのス...
-
銀行の窓口処理の件で知ってる...
-
確認ダイアログを次からは表示...
-
月度は何て読みますか?
-
frm型への代入の仕方について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#で、画像の、指定した座標の...
-
VBでクリックイベントを発生さ...
-
Excel VBAで他アプリケーション...
-
マウスイベントが動かない
-
外付ディスプレイで AutoHotkey...
-
UWSファイルの編集?
-
エクセルVBAで画像を貼り付ける...
-
UWSC画像認識で座標の位置がず...
-
NoxPlayerとUWSCのadbの座標に...
-
uwscについて、同一の画像(仮...
-
ピクチャーボックスのスケール...
-
C言語でグラフ作成??
-
ひし形のあたり判定について
-
VBA HTML要素または文字の座標...
-
マウスカーソルの移動
-
PHPでエクセルのグラフを作成ま...
-
WindowsAPI ツリービューについて
-
画像中のある座標でマウスオー...
-
UWSCのプログラミングついて教...
-
元の比率で画像を切り抜きする方法
おすすめ情報