• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[excel vba] マウスポインタの変更)

[Excel VBA] マウスポインタの変更方法

このQ&Aのポイント
  • Excel VBAでマウスポインタの変更方法を教えてください。xlDefault、xlNorthwestArrow、xlIBeam、xlWait以外のクロス型のポインタに変更したいです。
  • 図形をコピーして貼り付けるタイミングで、クロス型のマウスポインタに変更したいです。WindowsAPIを使用した方法では一時的に変更できますが、マウスを動かすと元に戻ってしまいます。
  • どのように書けばクロス型のマウスポインタを永続的に変更できるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答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