none
VBA稼働中はマウスポインタが砂時計になるようなしかけを RRS feed

  • 質問

  • 稼働時刻を事前指定して、時刻になると稼働するプログラムをVBAで組みました。幸い順調に動いてくれていますが、稼働開始までのあいだ、VBAが回っていると一目でわかるよう、マウスポインタが砂時計になるようにしたいのです。検索するとマウスポインタの変形コマンドがあるようですがこれをソースコードに挿んでも、マウスポインタの形状が変わらないのです。いったいどうしたらいいのでしょう?

    2020年12月28日 6:41

回答

  • まず前提として、マウスポインタは「自プロセスが管理しているウィンドウ上」でしか変化しない仕様ですので、ご注意ください。

    別のアプリケーション(例えばブラウザー)上にカーソルが移れば、VBA でセットしたカーソル形状は反映されなくなります。

    検索するとマウスポインタの変形コマンドがあるようですが

    お使いの VBA によって、砂時計カーソル⌛を表示する方法が異なります。たとえば…

    1. Access VBA の場合には『DoCmd.Horglass True』、もしくは『Screen.MousePointer = 11』です。
    2. Excel VBA の場合には、『Application.Cursor = xlWait』です。
    3. Word VBA の場合には、『System.Cursor = wdCursorWait』ですが、End Sub に到達してプロシージャ実行が終了すると、カーソル形状が元に戻ります。

    ちなみにブラウザーでのマウスカーソル形状は、スタイルシートの cursor プロパティで指定します。
    2020年12月28日 8:42

すべての返信

  • まず前提として、マウスポインタは「自プロセスが管理しているウィンドウ上」でしか変化しない仕様ですので、ご注意ください。

    別のアプリケーション(例えばブラウザー)上にカーソルが移れば、VBA でセットしたカーソル形状は反映されなくなります。

    検索するとマウスポインタの変形コマンドがあるようですが

    お使いの VBA によって、砂時計カーソル⌛を表示する方法が異なります。たとえば…

    1. Access VBA の場合には『DoCmd.Horglass True』、もしくは『Screen.MousePointer = 11』です。
    2. Excel VBA の場合には、『Application.Cursor = xlWait』です。
    3. Word VBA の場合には、『System.Cursor = wdCursorWait』ですが、End Sub に到達してプロシージャ実行が終了すると、カーソル形状が元に戻ります。

    ちなみにブラウザーでのマウスカーソル形状は、スタイルシートの cursor プロパティで指定します。
    2020年12月28日 8:42
  • 2. Excel VBA の場合には、『Application.Cursor = xlWait』です。

    返信ありがとうございます。これは前にやってみたのですが…私が先日組み上げたソースコードは、指定時刻になるとテキストと画像を指定サイトの投稿ページに自動アップするというもので、つまり指定時刻が来るまでは作動しないわけです。果たして機動しているのか、ぱっと見はわからないので、作動中だと一目でわかる工夫が欲しいなと思って、それでマウスポインタの変形を考えたわけです。

    しかし先ほどテスト稼働してみたら、青の小さいドーナツがくるくる回るあれがちゃんと画面に出るのを確認しました。これが出ていても、EXCELのほかのブックシートでの作業はちゃんとできるようなので、これで間に合うかなと今は考えています。

    毎回とんちんかんな質問投稿の連続で恐縮です。自分はほんとうにど素人で、野球でいうときっと「バッターってどの守備ですか?」レベルの質問を繰り返しているビギナーですけど、必死です。

    2020年12月29日 4:54