お世話になります。
excel vba でマウスポインタの変更を教えてほしいのですが、「Application.Cursor」で使用可能な
・xlDefault
・xlNorthwestArrow
・xlIBeam
・xlWait
以上の4つではなく、クロス型(+のような形)のポインタに変更することはできないでしょうか?
図形をコピー⇒貼り付けするタイミングでこのマウスポインタ型に変更できたらと思っています。
windowsAPIを使用した下記の方法では、一時的には可能ですが、マウスポインタを動かすと元に戻ってしまいます。
書き方、使用方法など間違っているのでしょうか。
-----winAPIを使用したソース---------------------------------------------------------
Private Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Long) As Long
Private Declare Function SetCursor Lib "user32" (ByVal hCursor As Long) As Long
Private Const IDC_CROSS = 32515&
Sub CursorChangeTest()
Dim i As Double
Dim waitTime As Variant
SetCursor (LoadCursor(0, IDC_CROSS))
'ループ処理
For i = 1 To 5
waitTime = Now + TimeValue("0:00:01")
Debug.Print "きました " & i
Application.Wait waitTime
Next i
End Sub
------------------------------------------------------------------------------------
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
LoadCursorに加え、SetSystemCursor,CopyCursor の関数を使えばできると思います。
Application.Cursorで使用可能なシステムカーソル(例えばxlIBeam)をSetSystemCursorで変更するわけです。
モジュール単位で変数を追加し
Private hOldCursor As Long
変更前に
hOldCursor = CopyCursor(LoadCursor(0, IDC_IBEAM))
で退避しておいて
Call SetSystemCursor(CopyCursor(LoadCursor(0, IDC_CROSS)), IDC_IBEAM)
Application.Cursor = xlIBeam
解除は
Call SetSystemCursor(hOldCursor, IDC_IBEAM)
Application.Cursor = xlDefault
で戻します。
変数リセットが心配な場合 SaveSetting|GetSetting でレジストリを使うのも良いかもしれません。
失敗してカーソルが戻らなくなった時は、
コントロールパネルの[マウス]-[ポインタ]タブ-[OK]で戻してください。
#APIに詳しいわけではないので、ご自分で追加調査した上で、自己責任で試してくださいね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Excel(エクセル) 【VBA】 Alt+PrintScreenにてアクティブウィンドウのスクショを貼付する方法 4 2022/12/08 20:53
- Visual Basic(VBA) VBA リボンののリカバリーでオーバーフローエラーになります 2 2023/07/04 19:07
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セグメントエラー
-
C言語のポインタに直接アドレス...
-
Run-Time Check Failure #3とい...
-
init関数の意味
-
連結リスト 要素の入れ替え
-
戻り値で構造体を返すことは可...
-
ハンドルはポインタか
-
メモリのアドレスからの値の取...
-
ExcelVBAでのkernel32(64bit)
-
C言語でのconstを返す関数
-
fopne で失敗する原因
-
トリプルポインタが必須!とな...
-
アプリを32bitから64bit移行
-
基本アルゴリズムの『返す』の...
-
SystemC言語の文法(関数の引数...
-
NULLとブランクの違い
-
CopyMemory()をmemcpy()に書き...
-
AESのC言語による実装
-
C言語の関数と配列に関する質問
-
構造体とfscanf
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
C言語のポインタに直接アドレス...
-
init関数の意味
-
戻り値で構造体を返すことは可...
-
fopne で失敗する原因
-
C言語の関数と配列に関する質問
-
Run-Time Check Failure #3とい...
-
LPSTR型の初期化について
-
ExcelVBAでのkernel32(64bit)
-
main(int argc,char **argv[])...
-
アプリを32bitから64bit移行
-
連結リスト 要素の入れ替え
-
ハンドルはポインタか
-
Cで作成したDLL関数をVBから呼...
-
C言語でのconstを返す関数
-
NULLとブランクの違い
-
エラーの意味
-
DLL<->VB間での受け渡し(文字...
-
ハンドル、アドレス、ポインタ...
-
【C言語】戻り値が構造体の関数
おすすめ情報