バージョン:マイクロソフト365
座標を取得したくなる時ってありませんか?
そんな時便利な方法があるのでご紹介したいと思います。
【完成後】
シートの左下にも表示させたい場合
座標とは
座標とは点の位置を表すのに使ういくつかの数の組。平面上では、直角に交わる二直線と点との距離と点の位置による正負の符号を考えた直交座標が使われます。
簡単に説明すると左上が基点としてx軸が横、y軸が縦に進んだ数値です。その数値を利用してクリックの場所を指定したりします。
使用箇所
例えばYOUTUBEなどの動画などでいつも同じ場所で見たい(歌を覚える時や英語の発音の練習など100回でも200回でもお好きなだけ)時など、クリックする場所(点)の数値を利用して毎回同じ場所をクリックさせたりすることができます。
その他ルーティン作業で毎回同じ場所をクリックすることがわかっていたならば、あらかじめ座標の数値を取得しといてクリックやsendkeyなどと併用して利用したりすることが可能になります。
覚えたらかなり便利な機能なので重宝できる機能の一つになると思います。
【エクセルVBA】YouTube動画を一定間隔で繰り返し再生(API)
解説
今回作成するものはただ単にマウスを動かしたら座標の数値が自動でA1セルにリアルタイムで表示するというものです。
ソースコードの記述は
2つです。
シートモジュール
実行するシートモジュールに記述します。
シートにはさまざまなイベントがありますが今回その説明は割愛します。
今回はChangeイベントを利用してセルB1の値が変わったら処理が実行されるようにします。
1 2 3 4 5 6 7 8 9 | Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Cells(1, 2)) Is Nothing Then Exit Sub 'チェンジするセルがB1セルではなかったら処理を終了 Else Call Sample 'チェンジするセルがB1セルだったら処理を実行SampleをCall(実行) End If End Sub |
標準モジュール
標準モジュールに処理内容を記述します。
①WindowsAPIを利用して座標を取得します(GetCursorPos)APIとは
②構造体を記述します(Type)
③繰り返し処理をします(Do While)繰り返し処理
④処理中に操作できるようにします(DoEvent)
⑤セルA1に取得した値を表示します。
主な処理はこの5つになります。
B1セルがONの間はGetCursorPosでリアルタイムに座標の値を取得し続けてくれます。
その間ループ処理をかけているのでDoEventでウィンドウズ側に操作を預けて操作ができるようにします。
実行中はA1セルに座標の縦軸と横軸がリアルタイムで表示されます。
終了する時はB1の値をOFFに切り替えたら処理は終了します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | Option Explicit 'APIを宣言➀ Declare Function GetCursorPos Lib "user32" (lpPoint As apiPos) As Long '構造体② Private Type apiPos x As Long y As Long End Type Sub Sample() Dim pos As apiPos 'API変数 Do While Cells(1, 2) = "ON" 'ONの間ループ③ DoEvents 'osに操作を移行④ GetCursorPos pos 'カーソル位置取得 Cells(1, 1) = "x" & pos.x & " " & "y" & pos.y 'セルA1に表示⑤ Loop Cells(1, 1).ClearContents 'セルA1の値をクリア End Sub |
次はシートを編集しリストボックスを追加します。
シートにON、OFFのリストを作成
データをクリックします。
データ入力規則をクリックします。
1から4までできたらOKボタンを押します。
B1セルに以下のように表示されます。
【応用】
まとめ
座標を使用する機会はそんなにないと思いますが取得することでいろいろな操作が可能になりますので、座標を使用して何を作成するかを考えてみてはいかがでしょうか!
以上です。
【関連記事】