概要
Relaxtoolsという超有名なアドインの中に「十字カーソル」という視覚支援機能があるが、
同アドイン内のカスタマイズ機能から登録できるのは設定機能orz...
なのでこれをショートカットから呼び出したり他のマクロの(例えば検索結果を表示する)に付加できるようにした。
作り方
xmlを見てみるとリボンで呼んでいるプロシージャがこれだとわかったのでこれをアドイン外から呼べるようにする。
Sub lineOnAction(control As IRibbonControl, pressed As Boolean)
リボンを押すたびにOn/Offが切り替わる仕組みは細かくはわからないけどpressed
のTrue
/False
で切り替えてるっぽい。
あとはリボンのボタンから呼び出す用のおまじないcontrol As IRibbonControl
をリボン外から呼ぶときにエラーになるので、同じ型の変数を用意して引数にぶち込む。(リボンを自作する場合はここをOptional
つけるとかで回避できる)
あとはおまけでActiveCell.EntireColumn.AutoFit
を入れておけば巨大な表相手で列名が###
となっていてもそこだけ読めるようになる。
コード
メイン
Sub 十字カーソル表示(有効化 As Boolean, 列幅AutoFit As Boolean)
If 列幅AutoFit = True Then: ActiveCell.EntireColumn.AutoFit
' Relaxtoolsアドイン必要
Dim control As IRibbonControl
Dim pressed As Boolean
Application.Run "RelaxTools.xlam!lineOnAction", control, 有効化
End Sub
呼び出す側:OnOff切替個別
Sub 十字カーソルOn()
Call 十字カーソル表示(True,True)
End Sub
Sub 十字カーソルOff()
Call 十字カーソル表示(False, False)
End Sub
呼び出す側:実行するたびにOnOff反転する
Sub 十字カーソルOnOff()
Static 状態 As Boolean
If 状態 = True Then
Call 十字カーソル表示Off
状態 = False
Else
Call 十字カーソル表示On
状態 = True
End If
End Sub
参考
他ブックのマクロを実行する
Application.Run "ブック名!Proc名",引数1,引数2,...
Relaxtools