【VBA入門】Applicationオブジェクトのメソッド・プロパティ厳選10選

皆さんは、VBAでApplicationオブジェクトを使ったことがありますか?

Applicationオブジェクトは、アプリケーション全体の処理・設定を操作するためのオブジェクトです。覚えておくと便利なメソッド・プロパティが多いので、よく使うものだけでも覚えておくととても便利です。

そこで今回は、

  • Applicationオブジェクトとは
  • 覚えておくと便利なメソッド・プロパティ厳選10選
  • その他のApplicationオブジェクトのメソッド・プロパティ一覧
  • といった基礎的なことから、応用的な方法まで、徹底的に解説します!

    Applicationオブジェクトとは

    Applicationオブジェクトは、Excel全体をあらわすオブジェクトのことです。

    Excel全体に対しての操作、設定変更をしたい場合に使います。

    ただ、ApplicationオブジェクトはExcel全体なので、操作するためのメソッド・設定をするためのプロパティの量がとても多いです。

    そのため、覚えておくと便利なメソッド・プロパティに絞って使い方を解説します!

    Applicationオブジェクトで覚えておくと便利なプロパティ・メソッドとは

    それでは、覚えておくと便利なメソッド・プロパティを解説します!

    ScreenUpdatingプロパティ

    ScreenUpdatingは、画面の更新を止めることができるプロパティです。

    別のブックやシートからデータ取得・コピー・削除などの操作をする場合、そのままVBAの処理を動かすとシートの表示が何度も切り替わるため処理が遅くなってしまいます。

    そのため、ScreenUpdatingを使って画面の更新を止めるのがおすすめです!

    サンプルコード:

    Sub Test1()
      '画面更新を停止
      Application.ScreenUpdating = False
      
      '
      '
      'メインの処理
      '
      '
      
     '画面更新を再開
      Application.ScreenUpdating = True
     
    End Sub

    処理の開始でFalseを指定して画面更新停止、処理の最後でTrueを指定して画面更新再開することで、メイン処理中に画面の表示が更新されなくなり、処理を高速化することができます。

    ScreenUpdatingプロパティの詳しい使い方は以下で解説しているので、気になる方は見てみてくださいね!

    【ExcelVBA入門】画面の更新を停止して処理を高速化する方法とは
    更新日 : 2020年4月15日

    GetOpenFilenameメソッド

    GetOpenFilenameは、ファイル選択ダイアログを使うためのメソッドです。指定したファイルを操作する処理を作りたいときに、とても便利なメソッドです。

    次のように、ファイル選択ダイアログを使った処理を簡単に作ることができます。

    サンプルコード:

    Sub Test2()
      'ファイルパスを取得
      Dim strFilePath As String
      strFilePath = Application.GetOpenFilename(Filefilter:="Excelブック,*.xlsx,CSVファイル,*.csv")
    
      '選択したファイルパスを表示
      Debug.Print "選択したファイルパス:" & strFilePath
    
    End Sub

    実行直後のダイアログ:

    実行結果:

    選択したファイルパス:C:UsersSiroDesktopフリーランスライター1. サムライエンジニアブログ91.VBA_ApplicationオブジェクトTest.xlsx

    このように、簡単にファイル選択ダイアログを使うことができます。

    GetOpenFilenameメソッドの詳しい使い方については以下記事で詳しく解説しているので、気になる方は見てみてくださいね!

    【VBA入門】ファイルを選択のためのGetOpenFilename関数とは
    更新日 : 2019年4月25日

    Runメソッド

    Runは、他のブックのマクロを動かすことができるメソッドです。

    「Application.Run ブック名!プロシージャー名,引数1~30」で指定したマクロを実行することができます。

    Book1.xlsmサンプルコード:

    Sub Test_Run()
      '別ブックのマクロ実行
      Application.Run "Book1.xlsm!Test", "別のブックのマクロを実行しました"
    End Sub
    

    Book2.xlsmサンプルコード:

    Sub Test(strMessage As String)
      MsgBox strMessage
    End Sub
    

    実行結果:

    このように、簡単に別ブックのマクロを実行することができます。複数のマクロブックを使った処理を作る場合、とても便利ですね。

    Displayalertsプロパティ

    Displayalertsは、メッセージの表示/非表示を変更するためのプロパティです。

    Trueで表示、Falseで非表示にすることができます。

    ファイルの削除・ブックの削除・シートの削除で、削除確認メッセージを表示せずに処理をすすめたい場合に、よく使います。

    メッセージが表示されるサンプルコード:

    Sub Test()
      'ブック作成
      Dim wb1 As Workbook
      Set wb1 = Workbooks.Add
     
      'ブック保存
      wb1.SaveAs Filename:=ThisWorkbook.Path & "" & "SaveAsで保存したファイル.xlsx"
      
      'ブックを閉じる
      wb1.Close
    End Sub

    メッセージ非表示のサンプルコード:

    Sub Test()
      'ブック作成
      Dim wb1 As Workbook
      Set wb1 = Workbooks.Add
     
      'ブック保存
      Application.DisplayAlerts = False 'メッセージを非表示
      wb1.SaveAs Filename:=ThisWorkbook.Path & "" & "SaveAsで保存したファイル.xlsx"
      Application.DisplayAlerts = True  'メッセージを再表示
      
      'ブックを閉じる
      wb1.Close
    End Sub

    このように、簡単にメッセージを非表示にすることができます。

    Displayalertsプロパティの詳しい使い方については以下詳しく解説しているので、気になる方は見てみてくださいね!

    【ExcelVBA入門】DisplayAlertsプロパティでメッセージを制御する方法とは
    更新日 : 2019年5月21日

    Waitメソッド

    Waitは、処理を指定時間止めることができるメソッドです。

    1秒処理を止めるサンプルコード:

    Application.Wait Now() + TimeValue("00:00:01")

    Now関数で現在の時刻を取得し、TimeValue("00:00:01")を足すことで1秒処理を止めています。

    このように簡単に処理を止めることができます。

    VBAの処理を止める方法は、Waitメソッド以外にSleep関数があります。

    使い方については以下で詳しく解説しているので、気になる方は見てみてくださいね!

    【VBA入門】Sleep関数(API)やWaitメソッドで処理を止める方法
    更新日 : 2019年4月23日

    CutCopyModeプロパティ

    CutCopyModeは、コピー状態を解除するためのプロパティです。

    Copyメソッドでセルをコピーした際に、コピーの状態が次のように残ってしまいます。

    この状態をクリアするための処理です。

    サンプルコード:

    Sub Test()
      Activesheet.Range("A3:C3").Copy Activesheet.Range("A10:C10") 'コピー
      Application.CutCopyMode = False 'コピー状態のクリア
    End Sub

    実行結果:

    このように簡単にコピー状態をクリアすることができます。

    Copyメソッドの使い方については以下記事で詳しく解説しているので、気になる方は見てみてくださいね!

    VBAでセル・シート・ファイルをコピー(値、書式のみも解説)
    更新日 : 2019年4月21日

    OnTimeメソッド

    OnTimeは、指定した時刻に処理を実行することができるメソッドです。

    OnTimeメソッドの使い方:

    OnTime(マクロ実行時刻, 実行するプロシージャ名)

    12時にshowMessageプロシージャを実行するサンプルコード:

    'メイン処理
    Sub Main()
      Application.OnTime TimeValue("12:00:00") , "showMessage"
    End Sub
    
    'メッセージを表示する処理
    Sub showMessage()
      MsgBox "12:00時になりました。1時間休憩してください。"
    End Sub

    実行結果:

    このように、簡単に時間指定で処理を実行することができます。

    InputBoxメソッド

    InputBoxは、入力画面を簡単に作ることができるメソッドです。

    例えば、次のような入力画面を作ることができます。

    サンプルコード:

    Sub Test()
      Dim Num As Long
      Num = Application.InputBox(Prompt:="数値を入力してください", Type:=1)
      
      MsgBox Num & "を入力しました"
    End Sub

    実行画面:

    このように、簡単に入力画面を作ることができます。また、もう少し凝った画面を作りたい場合は、ユーザーフォームもおすすめです。

    次のような画面を作ることができます。

    InputBoxメソッドの使い方・ユーザーフォームの作り方については、以下で詳しく解説しています。

    気になる方は、ぜひ見てみてくださいね!

    【ExcelVBA入門】入力ダイアログを作るためのInputBoxの使い方とは
    更新日 : 2018年8月2日
    【VBA入門】ユーザーフォームの使い方(テキスト表示、カレンダー)
    更新日 : 2019年4月22日

    Calculationプロパティ

    Calculationは、自動計算を手動計算に変えることができるプロパティです。

    次のように自動計算、手動計算を簡単に切り替えることができます。

    サンプルコード:

    Sub Test()
      '画面更新停止
      Application.Calculation = xlCalculationManual     '手動計算
     
     
      'メイン処理********************************
      'セルの値を使って計算したいときのみ再計算実行
      Application.Calculate 
      ‘*****************************************
     
      '画面更新再開
      Application.Calculation = xlCalculationAutomatic  '自動計算
     
    End Sub
    

    Excel内に関数をたくさん使ったセル数式があると、値を書き込むだけで再計算に時間がかかってしまうので、手動にするのがおすすめです!

    Calculationメソッドの詳しい使い方については以下で解説しているので、気になる方は見てみてくださいね!

    【ExcelVBA入門】処理の実行時間を高速化する方法を徹底解説!
    更新日 : 2019年8月28日

    Statusbarメソッド

    Statusbarは、ステータスバーに値を表示するためのメソッドです。

    次のように書くことで、ステータスバーに値を表示することができます。

    使い方:

    Application.Statusbar = 表示する値

    サンプルコード:

    Sub Test()
        Dim i As Long
        For i = 1 To 1000
            Application.StatusBar = i & "回目の処理実行中…"
        Next i
        Application.StatusBar = False
    End Sub

    実行途中の画面:

    For文で繰り返し処理を1000回動かし、回数をステータスバーに表示するサンプルです。

    処理に時間がかかってしまうようなツールを作る場合、ツールを使う人にとっては「いつ処理が終わるのか?」がわかる方がうれしいですよね。

    そんな時は、ステータスバーを使って処理の進捗がわかるようにしておくのがおすすめです!

    Applicationオブジェクトのメソッド・プロパティ一覧

    今回は、Applicationオブジェクトでよく使われるメソッド・プロパティを抜粋して解説していますが、他にメソッド・プロパティはたくさんあります。

    一度にすべて覚えるのは難しいので、この記事で良いなと思ったものをまずは取り入れてみてください。

    また、「Excel全体でこんな処理ができないかな?」と思ったときは「Application やりたいこと」などでググってみると見つけやすいのでおすすめです!

    ただ、他にどんなメソッド・プロパティがあるか気になる方もいますよね。

    そんな方向けに、一覧が見やすくまとまっている記事があったので紹介します!

    VBA Applicationオブジェクト プロパティ・メソッド 一覧

    まとめ

    今回は、Applicationオブジェクトでよく使うプロパティ・メソッドについて解説しました。

    Applicationオブジェクトは便利なプロパティ・メソッドがとても多いです。今回解説した方法はどれも簡単なので、ぜひ使ってみてくださいね!

    LINEで送る
    Pocket

    「プログラミング、右も左もわからない…」という方にオススメ

    当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

    その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

    侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

    cta_under_bnr

    「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

    書いた人

    Sanshiro Wakizaka

    Sanshiro Wakizaka

    新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
    Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
    また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
    現在はフリーランスエンジニア兼テックライターとして活動中。

    おすすめコンテンツ

    いまならレッスン期間が2週間延長!この秋、プログラミングを学ぼう

    転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー