スライドショースライドショー

【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入門】画面の更新を停止して処理を高速化する方法とは
    更新日 : 2019年5月22日

    GetOpenFilenameメソッド

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

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

    サンプルコード:

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

    実行直後のダイアログ:

    実行結果:

    選択したファイルパス:C:\Users\Siro\Desktop\フリーランス\ライター\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

    無料でSEからWebエンジニアへ転職しませんか?



    侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

    • システムエンジニアという職業だけどコードが書けない
    • 事務作業が多くスキルがないため将来が不安
    • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
    という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

    弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

    既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

    まずは無料体験レッスンを予約する

    書いた人

    Sanshiro Wakizaka

    Sanshiro Wakizaka

    フリーランスエンジニア兼ライターのワキザカ サンシロウです。
    ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

    プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

    おすすめコンテンツ

    あなたにぴったりなプログラミング学習プランを無料で診断!

    プログラミング学習の効率を劇的に上げる学習メソッドを解説