may the VBA be with you

Excel VBAとか業務自動化とか

フォルダ作成マクロ ができるまで その2

はじめに

前回、

vba-belle-equipe.hatenablog.com

フォルダをたくさん作ることができるようになったわけですが、VBEから実行するのは手間です。

もうちょっと使いやすくしてみましょう。

ダブルクリックで実行させる

f:id:vba-belle-equipe:20160314202703p:plain

画面は前回と同じです。

ボタンを追加してもいいんですが、今回は「セルをダブルクリックで実行」にしてみます。

シートモジュール

ダブルクリックでイベントを起こすためには、標準モジュールではなく

f:id:vba-belle-equipe:20160315093055p:plain

シートモジュールに書きます。

単純に標準モジュールの「makeFolders」を実行したい時は

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Call makeFolders
End Sub

です。

ちなみに「Worksheet」「BeforeDoubleClick」を選択すると、自動的に作成されますので、「Call makeFolders」を中に書くだけです。*1


これで、どこをダブルクリックしても実行されるようになりました。

使ってみる

実行されます。

セルが編集モードになってしまう

が、実行後、セルの中にカーソルが表示されるようになるのが気になります。

vba ダブルクリックイベント 編集モード」あたりで検索すると

  Cancel = True

で解決することがわかります。

1列目だけに制限したい

ダブルクリックイベントは便利です。

が、何の気なしにしまう場合もありますので、イベントが起こる範囲は制限したほうが無難です。

今回は、1列目でダブルクリックした場合だけ実行するようにしましょう。

改良案

以上を踏まえ、

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Target.Column <> 1 Then
    Exit Sub
  End If
  Cancel = True
  Call makeFolders
End Sub

こんなところでしょうか。

まとめ

ダブルクリックイベントは便利です。

が、イベントが起こることをユーザーが知らないと大変なことにもなりかねませんので、使いどころには注意しましょう。

*1:画面はExcel2002のものです