教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelVBAのWorksheetFunctionオブジェクトで使用するMaxA関数の使い方

構文

構文は以下の通りです。

WorksheetFunction.MaxA(範囲)

解説

WorksheetFunctionは、ExcelVBAの組み込みオブジェクトで、Excelのワークシート関数をVBAから呼び出す際に使用します。MaxA関数は、指定した範囲の中で「最大の値」を探してくれる関数です。範囲には、調べたいセルの範囲や値を入れます。この関数は数値だけでなく、文字列や空白にも対応していますが、文字列や空白は「0」として扱われます。

プログラミング例

具体的なプログラミング例を紹介します。

(例1)数値の最大値を求める

Sub 最大値を探す()
    Dim 数字のリスト(1 To 5) As Variant
    Dim 最大値 As Variant
    ' 数字のリストに値を入れる
    数字のリスト(1) = 10
    数字のリスト(2) = 20
    数字のリスト(3) = 5
    数字のリスト(4) = 30
    数字のリスト(5) = 15
    ' MaxA関数で最大値を探す
    最大値 = WorksheetFunction.MaxA(数字のリスト)
    ' 最大値をメッセージボックスで表示
    MsgBox "最大の値は " & 最大値 & " です。"
End Sub

上記のプログラムでは、5つの数字をリストに入れて、その中で一番大きい数字をMaxA関数で探しています。 結果はメッセージボックスで表示され、「最大の値は30です」という答えが出てきます。

(例2)数字と文字列を含むリストの最大値を求める

Sub 数字と文字列の最大値を探す()
    Dim データ(1 To 5) As Variant
    Dim 最大値 As Variant
    ' データに数値と文字列を入れる
    データ(1) = 10
    データ(2) = "文字列"
    データ(3) = 5
    データ(4) = 30
    データ(5) = Empty
    ' MaxA関数で最大値を探す
    最大値 = WorksheetFunction.MaxA(データ)
    ' 最大値をメッセージボックスで表示
    MsgBox "最大の値は " & 最大値 & " です。"
End Sub

上記のプログラムでは、リストに文字列や空の値(Empty)も含まれていますが、MaxA関数はそれらを「0」として扱います。そのため、最大の値は数値だけを比較して「30」と表示しますされます。

まとめ

MaxA関数は、数値の中の最大の値を探す便利な関数です。文字列や空のセルがあっても無視して「0」として計算します。数値が混ざったリストで一番大きな数を見つけたいときに役立ちます。