著作一覧 |
kkkkkkkkさんの「Excel VBAで素数 featuring イルカ」を見て、Agentを生で使うのではなく、Office::Assistantとして使えばアニメーションを妙なことをしなくても使えることを知った。
知ったのは良いけど、この方法だとアニメーションで指定した動作を行う前にAgent::sayの呼び出しに入ってしまうように見える(というか、VBAのデバッガで止めて確認できたわけだけど)。
多分、こうじゃないかな(もちろん知ってて簡略化して書いている可能性もあるけど)。
Public Sub PrimeNumbersCalmMeDown() ' pgクラスは呼べないからとりあえず削除 Dim str As String 'ここでは篩わない。先に考え中の動作に入らせる。 With Assistant .On = True .Visible = True .Animation = msoAnimationThinking End With '篩う代わりにビジーループ。1980年代のプログラムみたいだ。 For i = 1 To 100000000 Next i 'もちろん、本来は死ぬほど篩えば良い。 '多分100までだと瞬時なのでビジーループも併用したほうが良いかも。 'そのへんの篩う最大数とビジーループの回数の調整が肝かも。 str = "1,2,3" 'ここで篩う str = str + Chr(10) + "落ち着け… 素数を数えて落ち着くんだ…" str = str + "4,5,6" 'さらに篩う ' With Assistant.NewBalloon .Text = str .Show End With End Sub
Agentを実行するプロセスはOfficeのようなAgentのホストアプリケーションではなく、AgentSvrというWindowsサービスなので、ビジーループをしていてもジェスチャーは止まらないことを利用する。
実際に篩って求めてるのかどうかは知らないけど。
Excel使っていたら、またもや(以前Wordでもあった)イルカが機転をきかせてくれた。
セル間のコピペをしまくっていたら、ウィンドウの右に醜く邪魔でこれっぽっちも役に立たないオフィスクリップボードが出てきて、出てはクローズを死ぬほど繰り返していたら、ボワワーンとイルカが登場。
「この機能の表示はお嫌いのようですね。再表示したければ(忘れたし思い出す気もない)を選択してください。」(うろ覚え)
これで静かにフォーカスも奪われずに集中して作業ができるというものだ。ありがとうイルカ。
#それにしても、オフィスクリップボードって機能的な意味はわかるのだが喜んで利用している人っているのかな?
ジェズイットを見習え |
オフィスのクリップボード,ウザイので私はレジストリいじっておとなしくさせてます.<br>HKCU\Software\Microsoft\Office\???\Common\General<br>AcbControl=1