以前にVBAでワンライナー(一行コマンド)を実行するための書籍を紹介した。
thom.hateblo.jp
※すでに絶版してしまったが、Amazonで中古本が手に入る。
ただ、これまでイミディエイトウインドウ自体を開くのにAlt+F11で起動し、マウスでイミディエイトウインドウを選択するという手順を踏むため、折角のコマンドがあまり格好よくない。
広いディスプレイを使っているなら、最初から横に並べて置けば良いけれど、ノートパソコンであればどうしてもExcelとVBEを切り替えて使うのが現実的。
これを素早く実行する方法を考えたので公開する。
さらに、ActiveSheetとか、Selectionとかを入力するのが手間なので、オリジナルのコマンドを作成してみた。
以下、自作コマンドを実行しているGIF動画
Ctrl+iでイミディエイトウインドウが起動するように設定した。
標準でCtrl+iはセルの文字をイタリック(斜体)にするためのコマンドだが、普通、日本語で斜体は使わないので要らない。(要るときはボタンで良い)
最初のイミディエイトウインドウ起動に少々時間がかかっているが、以降は素早く起動している。
そしてVBEを閉じる時は、Alt+F4ではなく、Ctrl+Space→Cを使っている。
ホームポジションが崩れないので慣れるとその方がストレスが減る。
ちなみに、デスクトップのキーボードを使っていて、Ctrlキーが押しにくい人は、左手小指の付け根で押してみて欲しい。
押しやすいかどうかは個人差があるようだが、ホームポジションを崩さずに押せるし、指にも負担がかからない。
さて、入力しているsq20(Square 20pixel)や、sr(Selected Range)はオリジナルマクロである。
PERSONAL.XLSBプロジェクトのOneLinerモジュールに記述してある。
問題は、イミディエイトウインドウでは、選択中のプロジェクトのマクロしか起動できないこと。
たとえば、OneLinerに書いたAshというプロパティをイミディエイトから参照してみた。
別プロジェクトが選択されていると、エラーになる。
そこで、Ctrl+iでイミディエイトを起動する際に、プロジェクトも自動選択するようにした。
今回OneLinerモジュールに実装したコードはこちら
Public Sub ShowImmediate() Application.VBE.MainWindow.Visible = True Dim w As VBIDE.Window Set Application.VBE.ActiveVBProject = Application.VBE.VBProjects("★") For Each w In Application.VBE.Windows If w.Type = VBIDE.vbext_wt_Immediate Then w.SetFocus End If Next End Sub Public Sub sq20() '方眼紙化 ActiveSheet.Cells.RowHeight = 12 ActiveSheet.Cells.ColumnWidth = 1.44 End Sub Public Property Get ash() As Worksheet 'Active SHeet Set ash = ActiveWorkbook.ActiveSheet End Property Public Property Get abo() As Workbook ' Active BOok Set abo = ActiveWorkbook End Property Public Property Get awi() As Window 'ActiveWIndow Set awi = ActiveWindow End Property Public Property Get sr() As Range 'Selected Range Set sr = Selection End Property Public Sub Clip(Target As String) Dim CB As New DataObject CB.SetText (Target) CB.PutInClipboard Debug.Print "文字列「"; Target; "」をクリップしました。" End Sub
※実行に必要な参照設定やセキュリティ設定の変更は以下記事を参照。
thom.hateblo.jp
今回、Ctrl+iへのマクロ割り当ては、Application.Onkeyではなく、通常のショートカット設定で対応している。
また、プロジェクト名を指定する以下の部分であるが、
Set Application.VBE.ActiveVBProject = Application.VBE.VBProjects("★")
これは以下の記事を参照。
thom.hateblo.jp
以上の環境を整えれば、ワンライナーも冗談ではなく便利に使えるようになる。
あとは書籍から使えそうなコマンドを拾って練習すると良い。
EXCEL VBA 1行コード活用辞典 (CD-ROM付き)
- 作者: 土屋和人
- 出版社/メーカー: 技術評論社
- 発売日: 2006/05/02
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
また、自分が良く使うマクロをPERSONAL.XLSB内に短い名前で登録しておけば、イミディエイトはなかなか良いランチャーになる。
引数を渡すこともできるので、Alt+F8やリボンのボタンで実行するよりも使いやすい。
エクセルマクロ超絶技巧 1行マクロで始めるVBAエキスパートへの道
- 作者: 羽山博
- 出版社/メーカー: RBB PRESS
- 発売日: 2006/05/23
- メディア: 単行本
- クリック: 2回
- この商品を含むブログ (2件) を見る
こちらも絶版書のようだ。
安かったので早速注文した。
届いたらレビューしようと思う。