![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
お世話になります。
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ランキング
-
関数の動作説明
-
セグメントエラー
-
init関数の意味
-
DLL<->VB間での受け渡し(文字...
-
構造体とfscanf
-
printfとscanfの違いって・・・
-
1mWの緑レーザポインタで紙は、...
-
fopne で失敗する原因
-
基本アルゴリズムの『返す』の...
-
#include <stdio.h> #include <...
-
int型ポインタの加算
-
Go言語のプログラムについて
-
構造体のアドレス渡し
-
C言語グローバル変数
-
単方向リスト
-
c言語のポインタについて初心者...
-
VC++6.0 MFC ダイアログバーを...
-
ポインタを使うことのメリット...
-
ポインタ引数をさらにポインタ...
-
C言語のバグの警告文について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
init関数の意味
-
C言語のポインタに直接アドレス...
-
fopne で失敗する原因
-
Run-Time Check Failure #3とい...
-
C言語の関数と配列に関する質問
-
LPSTR型の初期化について
-
戻り値で構造体を返すことは可...
-
参照型で受け取った引数をポイ...
-
構造体とfscanf
-
ExcelVBAでのkernel32(64bit)
-
アプリを32bitから64bit移行
-
Cで作成したDLL関数をVBから呼...
-
C言語でのconstを返す関数
-
main(int argc,char **argv[])...
-
DLL<->VB間での受け渡し(文字...
-
エラーの意味
-
PASCALとFARの意味
-
ハンドルはポインタか
-
CWnd::EnableWindow()の扱い方
おすすめ情報