エクセルVBAアプリケーションオブジェクト
すべてのオブジェクトの母親は、Excel自体です。私たちは、Applicationオブジェクトを呼び出します。アプリケーションオブジェクトは、Excelに関連する多くのオプションへのアクセスを提供します。
WorksheetFunction
あなたはExcelの機能にアクセスするために、Excel VBAでWorksheetFunctionプロパティを使用することができます。
1.たとえば、場所 コマンドボタンワークシート上で、次のコード行を追加します。
Range("A3").Value = Application.WorksheetFunction.Average(Range("A1:A2"))
ワークシート上のコマンドボタンをクリックすると、ExcelのVBAは、セルA1とセルA2の値の平均値を計算し、セルA3に結果を格納します。
注:代わりにApplication.WorksheetFunction.Averageの、単にWorksheetFunction.Averageを使用しています。あなたは、数式バーを見れば、あなたは、式自体は、セルA3に挿入されていないことがわかります。セルA3に式自体を挿入するために、次のコード行を使用:
Range("A3").Value = "=AVERAGE(A1:A2)"
ScreenUpdating [[screenupdating]を
コードを実行しながら、時々、あなたは(ちらつき回避するため)無効画面更新にそれが役に立つかもしれません。その結果、あなたのコードは速く実行されます。
1.たとえば、場所 コマンドボタンワークシート上で、次のコード行を追加します。
Dim i As Integer For i = 1 To 10000 Range("A1").Value = i Next i
ワークシート上のコマンドボタンをクリックすると、ExcelのVBAは、各値を二のほんの一部が表示され、これは時間がかかることがあります。
2.次のようにコードを更新し、プロセスをスピードアップします。
Dim i As Integer Application.ScreenUpdating = False For i = 1 To 10000 Range("A1").Value = i Next i Application.ScreenUpdating = True
その結果、あなたのコードは、はるかに高速に実行されますと、あなたは唯一の最終結果(10000)が表示されます。
DisplayAlertsの
あなたは、コードを実行中にアラートを表示しないようにエクセルVBAを指示することができます。
1.たとえば、場所 コマンドボタンワークシート上で、次のコード行を追加します。
ActiveWorkbook.Close
ワークシート上のコマンドボタンをクリックすると、ExcelのVBAはExcelファイルを閉じて、あなたが行った変更を保存するように求められます。
2.次のようにコードを更新し、コードの実行中にこの警告を表示しないExcelのVBAを指示します。
Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True
その結果、ExcelのVBAは、あなたが行った変更を保存するためにあなたを求めることなく、あなたのExcelファイルを閉じます。すべての変更は失われます。
計算
デフォルトでは、計算が自動に設定されています。その結果、Excelが自動的たびに式の変化に影響を与える値をワークブックを再計算します。ワークブックは、多くの複雑な数式が含まれている場合は、手動に計算を設定することで、あなたのマクロをスピードアップすることができます。
1.たとえば、場所 コマンドボタンワークシート上で、次のコード行を追加します。
Application.Calculation = xlCalculationManual
ワークシート上のコマンドボタンをクリックすると、ExcelのVBAは、マニュアルに計算を設定します。
2.あなたは、ファイル、オプション、式をクリックすることで、これを確認することができます。
あなたは、セルA1の値を変更したとき3.ここで、セルB1の値が再計算されません。
手動でF9キーを押して、ブックを再計算することができます。
4.ほとんどの場合、あなたはあなたのコードの末尾に再び自動的に計算を設定します。単純にこれを達成するために、次のコード行を追加します。
Application.Calculation = xlCalculationAutomatic