
お世話になります。
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言語のポインタに直接アドレス...
-
セグメントエラー
-
init関数の意味
-
Run-Time Check Failure #3とい...
-
戻り値で構造体を返すことは可...
-
ExcelVBAでのkernel32(64bit)
-
fopne で失敗する原因
-
C言語でのconstを返す関数
-
CWnd::EnableWindow()の扱い方
-
CopyMemory()をmemcpy()に書き...
-
ハンドル、アドレス、ポインタ...
-
コーディング規約について
-
TCHAR文字列内の検索について
-
登録した文字列をランダムに表...
-
C++で関数ポインタから関数名を...
-
アプリを32bitから64bit移行
-
NULLとブランクの違い
-
GLSL + glDrawElementsについて
-
構造体の削除について
-
NULLポインタは0と書かなければ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のポインタに直接アドレス...
-
fopne で失敗する原因
-
戻り値で構造体を返すことは可...
-
LPSTR型の初期化について
-
Run-Time Check Failure #3とい...
-
ExcelVBAでのkernel32(64bit)
-
参照型で受け取った引数をポイ...
-
init関数の意味
-
セグメントエラー
-
アプリを32bitから64bit移行
-
ハンドルはポインタか
-
ハンドル、アドレス、ポインタ...
-
C言語でのconstを返す関数
-
C++で関数ポインタから関数名を...
-
パスからファイル名を抽出
-
ReadFileの読み込みエラーについて
-
#define NULL ((void *)0) の弊害
-
CImage GetBitsメソッドについて
-
ポインタ変数の疑問
-
Cで作成したDLL関数をVBから呼...
おすすめ情報