セルをダブルクリックして電卓を起動させる方法
VBAから他のアプリケーションを起動させるにはShell【シェル】関数を使用します。
Shell【シェル】関数
Shell【シェル】関数の書式と設定値()の説明
[]内は省略可能です。
Shell(Pathname[,windowstyle])
- Pathname【パスネーム】(必須)
起動したいアプリケーション名を指定します。アプリケーションが保存されているパスがWindowsに登録されている場合は、ファイル名だけで起動できますがそうでないときは、フルパスで指定します。 - Windowstyle【ウインドウスタイル】(省略可)
実行時のウィンドウ形式を以下の定数または、値で設定します。Windowstyleの定数、値 定数 値 内容 vbHide
【ハイド】0 ウィンドウが非表示になり、フォーカスが
非表示のウィンドウに渡されます。vbNormalNoFoucs
【ノーマルノーフォーカス】1 ウィンドウがフォーカスを持ち
元のサイズと位置に復元されます。vbMinimizedFocus
【ミニマイズドフォーカズ】2 ウィンドウがフォーカスを
持って最小化されます。vbMaximizedFocus
【マキシミズドフォーカズ】3 ウィンドウがフォーカスを
持って最大化されます。vbNormalNoFocus
【ノーマルノーフォーカス】4 ウィンドウが直近のサイズと位置に復元されます。
現在アクティブなウィンドウが引き続き
アクティブのままです。vbMinimizedNoFocus
【ミニマイズノーフォーカズ】6 ウィンドウが最小化されて表示されます。
現在アクティブなウィンドウが引き続き
アクティブのままです。
セルをダブルクリックした時発生するイベントプロシージャー
シートモジュールにBeforeDoubleClick【ビフォアダブルクリック】イベントプロシジャーを作成します。
1.開発タブをクリックします。
2.Visual Basicボタンをクリックします。
3.シートモジュールをクリックします。
4.ドロップダウンリストからWorkSheetを選択します。
5.ドロップダウンリストからBeforeDoubleClickを選択します。
6.BeforeDoubleClickプロシージャが作成されました。
セルをダブルクリックして電卓を起動させるコード
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Shell "calc.exe", vbMinimizedFocus End Sub
A2セルからA5セルをダブルクリックしたとき電卓を起動させるコード
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim セル範囲 As Range Set セル範囲 = Intersect(Target, Range("A2:A5")) If Not セル範囲 Is Nothing Then Shell "calc.exe", vbMinimizedFocus End If End Sub
ダブルクリックで電卓を起動させるセル範囲を格納する変数「セル範囲」をオブジェクト型(Range)で宣言します。
3行目【Set セル範囲 = Intersect(Target, Range(“A2:A5”))】
Application【アプリケーション】オブジェクトのIntersect【インターセクト】メソッドを使用して共有せるがあるかを比較するセル範囲1には、ダブルクリックしたセルが渡されるBeforeDoubleClick【ビフォアダブルクリック】イベントプロシージャーの引数Targt【ターゲット】を指定し、第2引数のセル範囲2には、A2セル~A5セルを指定して、Intersect【インターセクト】メソッドの戻り値をオブジェクト変数「セル範囲」にSet【セット】キーワードを使用して代入します。
4行目【If Not セル範囲 Is Nothing Then】
If【イフ】ステートメントを使用して、比較演算子のNot演算子を使いオブジェクト変数「セル範囲」がNothingでない場合を定義しています。つまり、ダブルクリックしたセルがA2セルからA5セルの範囲に入っている場合を定義します。
5行目【Shell “calc.exe”, vbMinimizedFocus】
4行目の条件分岐が成立したらShell 【シェル】関数を使用して電卓を起動します。
Intersect【インターセクト】メソッド
引数に指定した2つ以上のセル範囲の共有セル範囲を取得するには、Application【アプリケーション】オブジェクトのIntersect【インターセクト】メソッドを使用します。Intersect【インターセクト】メソッドは引数に指定したセル範囲の共有部分がある場合はそのセル範囲やセルをRange【レンジ】オブジェクトで返し、共有部分がない場合はNoting【ナッシング】を返します。
Intersect【インターセクト】メソッドの書式と設定値(引数)の説明
[]内は省略可能です。
[オブジェクト.]Intersect(セル範囲1,セル範囲2[,セル範囲3,・・・・セル範囲30])
- オブジェクト(省略可)
Application【アプリケーション】オブジェクトを指定します。 - セル範囲1(必須)
共有部分があるか確認する1番目のセル範囲をRange【レンジ】オブジェクトで指定します。 - セル範囲2(必須)
共有部分があるか確認する2番目のセル範囲をRange【レンジ】オブジェクトで指定します。 - セル範囲3~セル範囲30(省略可)
共有部分があるか確認する3番目~30番目までのセル範囲をRange【レンジ】オブジェクトで指定します。
以上で、セルをダブルクリックして電卓を起動させる方法の解説を終了します。
ありがとうございました。