【VBA】処理時間を計測するマクロの作り方!Timer関数の完全攻略ガイド

【VBA】処理時間を計測するマクロの作り方!Timer関数の完全攻略ガイド

 

VBAで作成したマクロが「なぜか遅い」「どこがボトルネックなのかわからない」と悩んでいませんか?

 

こんな問題は、『Timer関数で処理速度を測定するマクロ』を導入すれば解決できます。

 

たった3行のコードを追加するだけで、処理時間を正確に測定し、劇的な高速化が可能。

 

本記事では、Timer関数を使った基本的な計測方法から、ミリ秒単位での精密測定、複数処理の一括比較まで、実際に使っている実践テクニックを完全公開します。

「10秒かかっていた処理が1秒に短縮」「どの処理が重いか一目でわかる」など、明日から使える具体的なコード例とともに詳しく解説。

 

処理速度に悩むすべてのVBA開発者必見の内容です。

 

広告

【VBA】Timer関数を使った処理時間計測の基本

VBAでマクロの実行速度を測定したい場合、Timer関数を使うのが最も効率的で確実な方法です。

この関数を理解することで、処理パフォーマンスを正確に把握し、業務効率化に直結する改善ができるようになります。

 

Timer関数は午前0時を基準とした経過秒数を小数点以下まで精密に取得できるため、ミリ秒レベルでの詳細な時間測定が可能です。

これにより、どの処理がボトルネックになっているかを特定し、最適化のポイントを見つけることができます。

 

Timer関数とは?午前0時からの経過秒数を取得する仕組み

Timer関数は、

その日の午前0時00分00秒から現在時刻までの経過秒数を単精度浮動小数点数で返すVBAの組み込み関数

です。

 

たとえば、

午後3時30分45秒123ミリ秒の場合、Timer関数は52245.123という値を返す

となります。

 

この数値は秒単位で表現されており、小数点以下がミリ秒を表しているため、処理時間の微細な差も正確な測定が可能。

Timer関数の最大の特徴は、システムの負荷が軽く、計測自体が処理速度に与える影響がほとんどないことです。

Sub TimerBasicExample()
Dim currentTime As Single
currentTime = Timer
Debug.Print "現在の経過秒数: " & currentTime
End Sub

このコードは、

まずTimer関数が呼び出されて午前0時からの経過秒数が取得され、その値がcurrentTime変数に格納。その後、Debug.Print文によってイミディエイトウィンドウに現在の経過秒数が表示される

という内容です。

 

実行結果がこちら

Timer関数を使ったサンプルコードの実行結果

 

【VBA】処理時間計測の基本的な書き方とコード例

VBAで処理時間を正確に計測するには、

処理開始前と終了後にTimer関数を実行し、その差を計算するテクニック

が使われます。

 

この方法により、任意のコードブロックの実行時間を秒単位での取得が可能。

計測の精度を保つためには、変数の型をSingle型にして、Timer関数の戻り値を適切に処理することが重要です。

また、計測対象の処理の前後でTimer関数を呼び出すタイミングをできるだけ近づけることで、より正確な測定結果が得られます。

Sub BasicTimeMeasurement()
Dim startTime As Single
Dim endTime As Single
Dim elapsedTime As Single

' 処理開始時刻を記録
startTime = Timer

' 計測したい処理(例:10000回のループ)
Dim i As Long
For i = 1 To 10000
' 何らかの処理
Cells(1, 1).Value = i
Next i

' 処理終了時刻を記録
endTime = Timer

' 経過時間を計算
elapsedTime = endTime - startTime

Debug.Print "処理時間: " & elapsedTime & "秒"
End Sub

このコードは、

まず変数宣言後、startTime変数にTimer関数の値を格納。次に測定対象となるFor文のループ処理が実行され、10000回のセル書き込みを実行。ループ完了後、endTime変数に再度Timer関数の値が保存され、最後にelapsedTime変数で両者の差分を計算して処理時間を出力する

という内容です。

 

実行結果がこちら

マクロの処理時間を測定するサンプルコードの実行結果

 

Timer関数で取得できる時間単位と精度について

Timer関数の時間精度は約1/18秒(約55.6ミリ秒)が基本単位となっており、Windows環境では通常10~16ミリ秒程度の精度で時間測定が可能です。

この精度はシステムタイマーの解像度に依存するため、環境によって若干の差があります。

 

実際の業務でマクロの処理時間を測定する場合、この精度で十分実用的な結果が得られるはずです。

ただし、極めて短時間の処理(1ミリ秒未満)を測定する場合は、測定誤差を考慮して複数回実行の平均値を取るなどの工夫を施しましょう。

 

Timer関数は24時間を超えると0にリセットされる特性もあるため、長時間の処理には注意が必要です。

Sub TimerPrecisionTest()
Dim startTime As Single
Dim endTime As Single
Dim i As Integer

' 精度テスト用の短時間処理
For i = 1 To 5
startTime = Timer
Application.Wait Now + TimeSerial(0, 0, 1) ' 1秒待機
endTime = Timer
Debug.Print i & "回目: " & Format(endTime - startTime, "0.000") & "秒"
Next i
End Sub

このコードでは、

Application.Waitで正確に1秒間待機する処理を5回繰り返し、それぞれの測定結果をイミディエイトウィンドウに出力する。

という内容です。

 

実行結果がこちら

処理を5回繰り返し結果を出力するサンプルコードの実行結果

 

実行すると、1回目は約0.7秒。あとの4回は約1.000秒という結果が表示されました。

複数回処理を繰り返すことでTimer関数の測定精度を確認できます。

 

Timer関数を使った実践的な計測マクロの作成方法

実際の業務でVBAの処理時間を効率的に測定するには、汎用性の高い計測マクロを作成することが重要です。

 

単発の測定だけでなく、複数の処理を連続して測定したり、結果をリアルタイムで確認できる仕組みを構築することで、開発効率が大幅に向上します。

また、測定結果をワークシート上に記録する機能や、処理名を自動で識別する機能を組み込むことで、より実用的なパフォーマンス分析ツールとして活用できます。

 

これらの実践的なテクニックをマスターすることで、どんなエクセル業務でも応用できるスキルが身につきます。

 

簡単な処理時間計測マクロのサンプルコード

日常的にVBAで処理時間を測定するには、シンプルで使いまわしのきく計測マクロを用意しておくのが効率的です。

 

測定対象の処理を関数として分離し、計測部分を共通化することで、様々な処理に対して同じ方法で時間測定が可能です。

また、結果をメッセージボックスとイミディエイトウィンドウの両方に出力することで、用途に応じて確認方法を選択できます。

 

このようなテンプレートを作成しておけば、新しい処理の性能測定も素早く行えるようになります。

Sub SimpleTimeMeasurement()
Dim startTime As Single
Dim endTime As Single
Dim processName As String

processName = "データ処理テスト"

' 計測開始
startTime = Timer
Debug.Print processName & " 開始: " & Format(Now, "hh:mm:ss")

' ===== 測定対象の処理 =====
Call SampleDataProcess
' ========================

' 計測終了
endTime = Timer
Debug.Print processName & " 終了: " & Format(Now, "hh:mm:ss")

' 結果表示
Dim elapsedTime As Single
elapsedTime = endTime - startTime

Debug.Print "処理時間: " & Format(elapsedTime, "0.000") & "秒"
MsgBox processName & vbCrLf & "実行時間: " & Format(elapsedTime, "0.000") & "秒", vbInformation
End Sub
Sub SampleDataProcess()
' サンプルの重い処理
Dim i As Long, j As Long
For i = 1 To 1000
For j = 1 To 100
Cells(i, 1).Value = i * j
Next j
Next i
End Sub

このコードは、

まず処理名と開始時刻がイミディエイトウィンドウに記録され、続いてSampleDataProcess関数が呼び出されて実際の測定対象処理を実行。処理完了後に終了時刻が記録され、開始時刻との差分から実行時間が計算されて、Debug.PrintとMsgBoxの両方で結果が表示される

という内容です。

 

実行結果がこちら

処理時間測定マクロの実行結果

 

複数処理の時間を一括計測するテンプレート

複数の異なる処理の実行時間を効率的に比較測定するには、配列を活用した一括計測システムが有効です。

 

処理名と実行時間をセットで管理することで、結果の整理と分析が容易になります。

また、測定結果をワークシートに出力する機能を組み込むことで、後からグラフ化や統計処理に活用することも可能です。

Sub MultipleMeasurement()
Dim processNames As Variant
Dim executionTimes() As Single
Dim i As Integer

' 測定対象の処理名を定義
processNames = Array("方法1:単純ループ", "方法2:配列処理", "方法3:Range一括")
ReDim executionTimes(0 To UBound(processNames))

' 各処理の実行時間を測定
For i = 0 To UBound(processNames)
Dim startTime As Single, endTime As Single

startTime = Timer
Debug.Print processNames(i) & " 測定開始"

' 処理方法によって分岐
Select Case i
Case 0: Call Method1_SimpleLoop
Case 1: Call Method2_ArrayProcess
Case 2: Call Method3_RangeBatch
End Select

endTime = Timer
executionTimes(i) = endTime - startTime
Debug.Print processNames(i) & " 実行時間: " & Format(executionTimes(i), "0.000") & "秒"
Next i

' 結果をワークシートに出力
Range("A1").Value = "処理方法"
Range("B1").Value = "実行時間(秒)"
For i = 0 To UBound(processNames)
Cells(i + 2, 1).Value = processNames(i)
Cells(i + 2, 2).Value = executionTimes(i)
Next i
End Sub

Sub Method1_SimpleLoop()
Dim i As Long
For i = 1 To 5000
Cells(i, 3).Value = "方法1-" & i
Next i
End Sub

Sub Method2_ArrayProcess()
Dim arr(1 To 5000) As String
Dim i As Long
For i = 1 To 5000
arr(i) = "方法2-" & i
Next i
Range("D1:D5000").Value = Application.Transpose(arr)
End Sub

Sub Method3_RangeBatch()
Dim arr(1 To 5000, 1 To 1) As String
Dim i As Long
For i = 1 To 5000
arr(i, 1) = "方法3-" & i
Next i
Range("E1:E5000").Value = arr
End Sub

このコードは、

まず測定対象の処理名が配列に格納され、実行時間を記録する配列を初期化。その後、For文で各処理が順次実行され、それぞれの実行時間をexecutionTimes配列に保存。最後に、処理名と実行時間がワークシートのA列とB列に整理して出力される

という内容です。

 

実行結果がこちら

配列を使って処理速度を測定するマクロの実行結果

 

視覚的に比較できる形で結果が表示されます。

 

関連記事「配列の使い方」では、配列で格納した値をセルに出力する方法やセルの値を配列に格納する方法が紹介されています。

 

リアルタイム表示機能付き計測マクロの作り方

長時間実行される処理の進捗状況をリアルタイムで監視するには、DoEventsと組み合わせた動的表示機能が効果的です。

この機能により、処理の進行状況と現在までの経過時間を常に把握でき、予想実行時間の算出や処理の中断判断も適切に行えます。

 

特に大量データの処理やファイル操作など、実行時間が予測しにくい処理において、この機能は非常に有用です。

Sub RealTimeMeasurement()
Dim startTime As Single
Dim currentTime As Single
Dim elapsedTime As Single
Dim totalItems As Long
Dim currentItem As Long

totalItems = 10000
startTime = Timer

' ステータス表示用のセルを初期化
Range("F1").Value = "進捗状況"
Range("F2").Value = "経過時間"
Range("F3").Value = "残り時間(予想)"

Debug.Print "リアルタイム計測開始: " & Format(Now, "hh:mm:ss")

For currentItem = 1 To totalItems
' 実際の処理(例:計算処理)
Cells(currentItem, 6).Value = "処理中-" & currentItem

' 100回ごとにリアルタイム更新
If currentItem Mod 100 = 0 Then
currentTime = Timer
elapsedTime = currentTime - startTime

' 進捗率の計算
Dim progressRate As Double
progressRate = currentItem / totalItems

' 残り時間の予想計算
Dim estimatedTotal As Single
Dim remainingTime As Single
If progressRate > 0 Then
estimatedTotal = elapsedTime / progressRate
remainingTime = estimatedTotal - elapsedTime
End If

' リアルタイム表示更新
Range("G1").Value = Format(progressRate, "0.0%") & " (" & currentItem & "/" & totalItems & ")"
Range("G2").Value = Format(elapsedTime, "0.0") & "秒"
Range("G3").Value = Format(remainingTime, "0.0") & "秒"

Debug.Print "進捗: " & Format(progressRate, "0.0%") & " 経過: " & Format(elapsedTime, "0.0") & "秒"

' 画面更新を強制実行
DoEvents
End If
Next currentItem

' 最終結果の表示
Dim finalTime As Single
finalTime = Timer - startTime
Range("G1").Value = "完了"
Range("G2").Value = Format(finalTime, "0.000") & "秒"
Range("G3").Value = "0秒"

Debug.Print "処理完了: 総実行時間 " & Format(finalTime, "0.000") & "秒"
MsgBox "処理が完了しました。" & vbCrLf & "総実行時間: " & Format(finalTime, "0.000") & "秒", vbInformation
End Sub

このコードは

処理開始時に初期設定が行われ、メインループ内で100回ごとに進捗状況を更新。現在の進捗率から残り時間が予想計算され、ワークシート上のF・G列にリアルタイムで結果を表示する

という内容です。

 

実行結果がこちら

処理時間をリアルタイムに計測するマクロの実行結果

 

DoEventsによって画面更新が強制実行されるため、ユーザーは処理の進行状況を常に確認できます。

 

関連記事「DoEventsの使い方」では、マクロ実行中の「応答なし」を防ぐ方法が紹介されています。

 

【VBA】処理時間計測の応用テクニックと活用法

VBAの処理時間計測をより高度に活用するには、単純な測定を超えた応用技術の習得が不可欠です。

ミリ秒レベルでの精密測定、ボトルネック特定のための詳細分析、デバッグ効率化のための自動化技術など、どんなエクセル業務にも応用させられるレベルの最適化手法を身につけることで、大規模なシステム開発でも通用するパフォーマンス管理能力が得られます。

 

企業システムや大量データ処理において、必要不可欠な技術なので自由に扱えるようにマスターしましょう。

 

ミリ秒単位での高精度時間計測方法

より精密な処理時間計測が必要な場合は、Windows APIのQueryPerformanceCounterを活用することで、マイクロ秒レベルの高精度測定が可能になります。

この方法はTimer関数よりもはるかに高い精度を持ち、CPUの性能カウンタを直接利用するため、極めて短時間の処理も正確に測定することが可能です。

 

システムレベルでの最適化や、アルゴリズムの微細な性能差を検証する際に威力を発揮します。

ただし、API呼び出しのオーバーヘッドも考慮する必要があるため、適切な使い分けが重要です。

' Windows APIの宣言
Private Declare PtrSafe Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As LongLong) As Long
Private Declare PtrSafe Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As LongLong) As Long

Sub HighPrecisionMeasurement()
Dim startCounter As LongLong
Dim endCounter As LongLong
Dim frequency As LongLong
Dim elapsedTime As Double

' システムの周波数を取得
QueryPerformanceFrequency frequency
Debug.Print "システム周波数: " & frequency & " Hz"

' 高精度計測開始
QueryPerformanceCounter startCounter

' 測定対象の処理(短時間処理の例)
Dim i As Long, result As Long
For i = 1 To 100000
result = i * i
Next i

' 高精度計測終了
QueryPerformanceCounter endCounter

' ミリ秒単位での計算
elapsedTime = ((endCounter - startCounter) / frequency) * 1000

Debug.Print "高精度測定結果: " & Format(elapsedTime, "0.000") & " ミリ秒"

' Timer関数との比較
Dim timerStart As Single, timerEnd As Single
timerStart = Timer
For i = 1 To 100000
result = i * i
Next i
timerEnd = Timer

Debug.Print "Timer関数結果: " & Format((timerEnd - timerStart) * 1000, "0.000") & " ミリ秒"
Debug.Print "精度差: " & Format(Abs(elapsedTime - (timerEnd - timerStart) * 1000), "0.000") & " ミリ秒"
End Sub

このコードは、

まずQueryPerformanceFrequency APIでシステムの性能カウンタ周波数を取得し、その後QueryPerformanceCounter APIで処理前後のカウンタ値を記録。最終的に、カウンタの差分を周波数で割り1000倍することでミリ秒単位の実行時間を算出する

という内容です。

 

Timer関数の結果と比較して精度の違いを確認できます。

 

ループ処理やデータ処理の時間最適化術

大量データの処理において処理時間を大幅に短縮するには、ボトルネックとなる部分を特定し、効率的なアルゴリズムに置き換える必要があります。

特にExcelのセルアクセスやファイル操作は処理時間に大きく影響するため、配列処理やRange操作の最適化が重要です。

 

Application.ScreenUpdatingやApplication.Calculationの制御をするテクニックを駆使し、さらなる高速化を実現しましょう。

Sub OptimizationComparison()
Dim testData(1 To 10000) As Long
Dim i As Long

' テストデータの準備
For i = 1 To 10000
testData(i) = Int(Rnd() * 1000)
Next i

Debug.Print "=== データ処理最適化比較 ==="

' 方法1: セル直接アクセス(非効率)
Dim startTime As Single
startTime = Timer
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

For i = 1 To 10000
Cells(i, 1).Value = testData(i)
Cells(i, 2).Value = testData(i) * 2
Next i

Debug.Print "方法1(非最適化): " & Format(Timer - startTime, "0.000") & "秒"

' 方法2: 最適化設定適用
startTime = Timer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

For i = 1 To 10000
Cells(i, 3).Value = testData(i)
Cells(i, 4).Value = testData(i) * 2
Next i

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Debug.Print "方法2(最適化設定): " & Format(Timer - startTime, "0.000") & "秒"

' 方法3: 配列処理(最高効率)
startTime = Timer
Dim outputArray(1 To 10000, 1 To 2) As Long

For i = 1 To 10000
outputArray(i, 1) = testData(i)
outputArray(i, 2) = testData(i) * 2
Next i

Range("E1:F10000").Value = outputArray
Debug.Print "方法3(配列処理): " & Format(Timer - startTime, "0.000") & "秒"

' 処理速度の改善率計算
Debug.Print "改善効果の分析完了"
End Sub

このコードは、

同じデータ処理を3つの異なる方法で実行し、それぞれの処理時間を測定。方法1では通常のセルアクセス、方法2では画面更新と自動計算を無効化、方法3では配列処理の結果を出力する

という内容です。

 

実行結果がこちら

3つの処理方法の処理時間を比較するマクロの実行結果

 

 

配列を使った処理が圧倒的に処理速度が速いことを確認できます。

 

関連記事「処理速度を早くする方法」では、処理速度を早くする3つのテクニックが紹介されています。

 

Debug.Printとイミディエイトウィンドウを使った効率的な計測

開発段階でのパフォーマンス分析には、Debug.Printとイミディエイトウィンドウを活用した軽量な計測システムが非常に有効です。

この方法により、コードの各部分の実行時間をリアルタイムで監視し、問題箇所を素早く特定できます。

 

条件分岐を使った選択的な出力機能や、処理名の自動生成機能を組み込むことで、デバッグ効率が飛躍的に向上。また、出力結果をファイルに保存する機能を追加すれば、長期的なパフォーマンス分析も可能になります。

' デバッグ用の時間計測クラス風モジュール
Public debugMode As Boolean
Public measurementLog As String

Sub DebugMeasurementDemo()
debugMode = True
measurementLog = ""

Call DebugPrint("=== パフォーマンス分析開始 ===")

' 複数の処理区間を測定
Call MeasureSection("データ読み込み", "DataLoad")
Call MeasureSection("データ変換", "DataTransform")
Call MeasureSection("データ出力", "DataOutput")

' 結果をファイルに保存
Call SaveMeasurementLog

Call DebugPrint("=== 分析完了 ===")
End Sub

Sub MeasureSection(sectionName As String, processType As String)
Dim startTime As Single
Dim endTime As Single

startTime = Timer
Call DebugPrint(sectionName & " 開始: " & Format(Now, "hh:mm:ss.000"))

' 処理タイプによる分岐
Select Case processType
Case "DataLoad"
Call SimulateDataLoad
Case "DataTransform"
Call SimulateDataTransform
Case "DataOutput"
Call SimulateDataOutput
End Select

endTime = Timer
Dim elapsedTime As Single
elapsedTime = endTime - startTime

Dim logEntry As String
logEntry = sectionName & " 完了: " & Format(elapsedTime, "0.000") & "秒"
Call DebugPrint(logEntry)

' ログに追加
measurementLog = measurementLog & Format(Now, "yyyy/mm/dd hh:mm:ss") & " - " & logEntry & vbCrLf

' 性能警告(1秒以上の場合)
If elapsedTime > 1 Then
Call DebugPrint("⚠️ 警告: " & sectionName & " の処理時間が長すぎます")
End If
End Sub

Sub DebugPrint(message As String)
If debugMode Then
Debug.Print Format(Now, "hh:mm:ss.000") & " | " & message
End If
End Sub

Sub SaveMeasurementLog()
If measurementLog <> "" Then
Dim fileName As String
fileName = "C:\temp\performance_log_" & Format(Now, "yyyymmdd_hhmmss") & ".txt"

Open fileName For Output As #1
Print #1, measurementLog
Close #1

Call DebugPrint("ログファイル保存: " & fileName)
End If
End Sub

' シミュレーション用のダミー処理
Sub SimulateDataLoad()
Dim i As Long
For i = 1 To 50000
' データ読み込みのシミュレーション
Next i
End Sub

Sub SimulateDataTransform()
Dim i As Long
For i = 1 To 30000
' データ変換のシミュレーション
Next i
End Sub

Sub SimulateDataOutput()
Dim i As Long
For i = 1 To 20000
' データ出力のシミュレーション
Next i
End Sub

このコードは、

debugMode変数でログ出力の制御を行い、各処理区間の開始・終了時刻と実行時間が自動的にイミディエイトウィンドウに出力。また、実行時間が1秒を超える処理には警告が表示され、全ての測定結果をテキストファイルとして保存する

という内容です。

 

処理速度を低下させているコードの分析、デバックを効率的に行うことができます。

 

関連記事「デバックする方法」では、イミディエイトウィンドウに出力する方法やブレークポイントの設定方法が紹介されています。

 

VBA初心者が効率化マクロを導入する方法

VBA初心者が効率化Vマクロを導入する方法

 

VBAなんて扱ったことないけど、処理速度が速い効率化マクロを導入したい!

 

こんな問題を解決する方法がこちら

  • マクロの開発を外注に依頼する
  • マクロが設定されたエクセルファイルをダウンロードする
  • 参考書やネットでVBAスキルを身に付ける

 

VBAスキルを身に着ける前は、「マクロ開発の外注」で対応していましたが、

今では自分で効率化マクロをサクッと導入しちゃいます。

 

完成されたマクロを使ってエクセル業務を処理する

作業効率が2倍以上アップ!!

便利すぎて自分でもマクロを設定したいと考え始める

参考書やネットの情報でVBAスキルを身に付ける

マクロ開発を代行できる程のスキルを習得

 

 

VBAは

他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい

という特徴があります。

 

外注した方が楽だけど、費用がかかる。自分で導入すれば費用は0円だけど時間がかかる。。

いずれにせよ、効率化マクロを導入できれば作業効率が飛躍的にアップするのは間違いありません。

 

あなたに合った方法で導入しちゃいましょう。

 

マクロ開発を外注に依頼する

マクロ開発を外注に依頼する方法は

VBAを全く扱えない方でもエクセル作業を自動化できる最も簡単な方法

です。

 

「こんなデータ抽出作業を自動化したい」「作った資料を自動的にPDFで保存したい」「決まった様式に写真を自動で貼り付けたい」

こんな感じで実現したい内容を依頼するだけで業務内容に合ったマクロを開発してくれます。

 

Left Caption

ガッツポーズの人

完成まで本業に集中できるので効率的

 

 

デメリットは、費用がかかることだけ。

開発内容、依頼先によってかかる費用は大きく異なります。

私が会社員の頃利用していた業者さんは1マクロあたり2万円~3万円の費用がかかりました。

 

Left Caption

疑問がある人

ちょっと高くない。。。

 

ちなみに、マメBlogでもエクセルマクロ開発代行サービスを承っています。

開発内容の確認、VBAコードの設定、動作確認後の調整、など全ての工程を私(マメ父ちゃん)が行っているので、

費用が安い!スピード納期!!

でやらせてもらっています。

 

ほとんど独学で身に付けたVBAスキルなので、内容によっては開発できないこともあるのでご了承ください。

 

ご相談、見積もり依頼は完全無料ですので気になる方は下記のリンクよりお問合せ下さい。

 

 

マクロが設定されたエクセルファイルをダウンロードする

VBA初心者でも『マクロが設定されたエクセルファイルをダウンロード』することで、

すぐに使っているエクセルにマクロを導入することができます。

 

VBA初心者でも形になっているマクロをゲットできる、費用が安い、

というメリットがあります。

しかし、

想定するマクロを見つけることが難しい、業務内容に合わせるためのアレンジが必要

というデメリットもあります。

 

Left Caption

ガッツポーズの人

お目当てのマクロが見つかればラッキー

 

個人ブログやファイルを販売できるサイト「note」や「Tips」ではいろんなマクロの情報が掲載されているので是非参考にしてみてください。

 

今までマメBlogで受注した効率化マクロを下記のnoteで掲載していますので併せてチェックしてみてください。

 

 

 

参考書やネットでVBAスキルを身に付ける

先程も紹介しましたが、

VBAは他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい

プログラミングです。

 

言い換えると、

情報量が豊富なので自分で勉強できちゃう

ということです。

 

私のVBAスキルはほとんど独学で身に付けたもので、

考えた処理のほとんどをVBAで表現できるレベルにまで到達した!

と思っています。

 

私の作ったマクロをプロのプログラマーが見れば、

お前の書くコードはインチキだ!「変数の宣言」とか「引数」を正しく使えよ!!

と感じるはずです。

 

でも、

私からすればどうでもいい!!!想定した内容を正しく処理できればよくないですか!?

 

独学であっても『写真を貼り付けるマクロ』『全てのシートをPDF出力するマクロ』『連番を振るマクロ』など、

業務内容に合ったマクロを開発できるようになれます。

 

独学でVBAスキルを身に付けるコツは、

エラーが発生してもいいからひたすらコードを書く、なんでもいいからエクセル作業をマクロ化してみる

です。

 

とは言っても、全くの知識0の方は何をすればいいかわからないですよね。

 

VBA知識0の初心者の方は、参考書『たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】』を読んでみてください。

 

VBAの知識0の方でもすいすい読み進められる内容になっています。

やさしい内容にも関わらず「え!!VBAを使えばこんなことできるの!?」と感動すると思います。

 

実際に私はこの参考書を読んでからVBAの勉強を始めました。

 

Left Caption

ひらめく人

VBA学習スタートのきっかけをくれた参考書


 

 

VBAの魅力を発見した後は、

ひたすら自動化したい内容のコードを書くだけ

です。

 

【VBA 処理速度】【VBA Timer】でネット検索すれば知りたいコードをすぐにゲットできます。

 

実現したい処理に向かって、「調べる→書いてみる→エラーを改善する→調べる」を繰り返していると

自然といろんなマクロが作れるようになっているはずです。

 

VBAに興味が湧いてきたという方は今からVBA学習をスタートさせちゃいましょう。