に配列を反復処理し、値を比較している(私は考えることができる)最大値を取得するための最も簡単な方法だろう。次の2つの関数は、まさにそれを実行します。
Option Explicit
Public Sub InitialValues()
Dim strValues(1 To 3) As String
strValues(1) = 3
strValues(2) = "af"
strValues(3) = 6
Debug.Print GetMaxString(strValues)
Debug.Print GetMaxNumber(strValues)
End Sub
Public Function GetMaxString(ByRef strValues() As String) As String
Dim i As Long
For i = LBound(strValues) To UBound(strValues)
If GetMaxString < strValues(i) Then GetMaxString = strValues(i)
Next i
End Function
Public Function GetMaxNumber(ByRef strValues() As String) As Double
Dim i As Long
For i = LBound(strValues) To UBound(strValues)
If IsNumeric(strValues(i)) Then
If CDbl(strValues(i)) > GetMaxNumber Then GetMaxNumber = CDbl(strValues(i))
End If
Next i
End Function
注意を、それぞれの時間は、文字列(テキスト)配列が関数に渡されていること。しかし、文字列(テキスト)を比較する関数と、数値を比較する関数があります。結果は全く異なります!
最初の関数(テキストの比較)は(上記のサンプルデータで)af
を最大値として返し、2番目の関数は数値のみを考慮するので、最大値として6
を返します。
配列要素の型として 'Double'を使用できますか? – Bathsheba