
Excel VBA で、ユーザーフォームをクリックしたときのポインタのクライアント座標を取得し、フォーム上のラベルに表示するというスクリプトを作ろうと思っています。
ウェブで探し当てたVBのソースなどを参考にして、スクリーン座標を取得するところまではうまくいきましたが、「ScreenToClient」関数の書式がVB のソースと同じでは動かないようで、「コンパイルエラー:メソッドまたはデータメンバがみつかりません」というエラー表示が出て止まってしまいます(「Me」を「UserForm1」に代えても結果は同じでした)。
以下は実際のVBAソースです。どのようにすれば動くようになるのか、ご教示頂けませんでしょうか。宜しくお願いします。
'カーソルの位置座標をスクリーン座標で取得するAPI関数
Private Declare Function GetCursorPos Lib "user32" _
(lpPoint As POINT) As Long
'カーソルの位置座標をスクリーン座標からクライアント座標へ変換するAPI関数
Private Declare Function ScreenToClient Lib "user32" _
(ByVal hWnd As Long, lpPoint As POINT) As Long
'カーソルの位置座標用変数
Private CuP As POINT
'位置座標を受け取る構造体
Private Type POINT
x As Long
y As Long
End Type
Private Sub UserForm_Click()
'スクリーン座標を取得
GetCursorPos CuP
Label1.Caption = "クリック位置のスクリーン座標 X=" & CuP.x & " Y=" & CuP.y
'↑ここまではうまく動いています
'クライアント座標に変換
ret = ScreenToClient(Me.hWnd, CuP)
Label2.Caption = "クリック位置のクライアント座標 X=" & CuP.x & " Y=" & CuP.y
End Sub
No.1ベストアンサー
- 回答日時:
UserFormにはhWndプロパティはありません
ウィンドウハンドルを独自に取得しなければいけません
FindWindowで探すことにより ScreenToClientを使用出来ます
Private Declare Function FindWindow Lib "user32" alias "FindWindowA" _
(ByVal sClass as String, ByVal sTitle as String) as Long
とAPIを定義して
Dim hWndForm as Long
' ユーザーフォームのCaptionをsTitleに渡す
hWNdForm = FindWindow( vbNullString, "UserForm1" )
ret = ScreenToCLient( hWndForm, CuP )
といった具合にします
ご回答有難うございます!
そういうことだったんですね。思っていた通りの動きをしてくれました!
本当に助かりました。有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マウスイベントが動かない
-
uwscについて、同一の画像(仮...
-
gnuplotについての質問です。
-
セックスレスの既婚女性は自慰...
-
Visual Basic 6.0 コンボボック...
-
CloseとDisposeの違い
-
エクセルで、日付を入力すると...
-
エクセルVBAで、MsgBox やInput...
-
メルカリのメルカードで買い物...
-
「ご処理進めて頂きますようお...
-
VBAでCOPYを繰り返すと、処理が...
-
PDFフォームに本日の日付を自動...
-
オブジェクト名をVBAで指定...
-
「PC Helpsoft Driver Updated...
-
UPS警告音を止めたい
-
生活保護受給者は性欲をどんな...
-
お家デートをしててハグを長い...
-
ゲームパットN52Teの設定
-
フォームコントロールから作っ...
-
ACCESSで、新規か更新かの判断
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#で、画像の、指定した座標の...
-
VBでクリックイベントを発生さ...
-
Excel VBAで他アプリケーション...
-
マウスイベントが動かない
-
外付ディスプレイで AutoHotkey...
-
UWSファイルの編集?
-
エクセルVBAで画像を貼り付ける...
-
UWSC画像認識で座標の位置がず...
-
NoxPlayerとUWSCのadbの座標に...
-
uwscについて、同一の画像(仮...
-
ピクチャーボックスのスケール...
-
C言語でグラフ作成??
-
ひし形のあたり判定について
-
VBA HTML要素または文字の座標...
-
マウスカーソルの移動
-
PHPでエクセルのグラフを作成ま...
-
WindowsAPI ツリービューについて
-
画像中のある座標でマウスオー...
-
UWSCのプログラミングついて教...
-
元の比率で画像を切り抜きする方法
おすすめ情報