vba,excel:返回这个string数组中最早的date值

我有一些与编码有关的问题,不知道在哪里解决这个问题:

我想BronzeDate返回在我的数组中find的最早的date。

这是打印的例子:

Possible Bronze Date : 6/6/2011 Possible Bronze Date : 10/5/2011 Possible Bronze Date : 10/5/2011 Possible Bronze Date : 12/5/2011 Possible Bronze Date : 10/5/2011 Possible Bronze Date : 6/6/2011 Possible Bronze Date : 11/5/2011 Possible Bronze Date : 1/16/2012 Possible Bronze Date : 6/6/2011 Possible Bronze Date : Possible Bronze Date : Possible Bronze Date : Possible Bronze Date : Possible Bronze Date : Possible Bronze Date : Possible Bronze Date : Possible Bronze Date : Possible Bronze Date : Possible Bronze Date : [BRONZE] 0 

编码:

  Dim Bronze(1 To 100) As String ... Dim c As Integer c = 1 Do Until c = 20 Debug.Print " Possible Bronze Date : " & Bronze(c) c = c + 1 Loop ' EXTRACT THE MIN VALUES Dim BronzeDate As String BronzeDate = Application.WorksheetFunction.Min(Bronze) ' PRINT OUT VALUE FOR EACH DATES Debug.Print " [BRONZE] " & BronzeDate 

我相信你别无select,只能单独转换stringdate。

我已经testing这个代码输出正确的date。 注意我已经将您的数组中的中端date切换到小端,所以我的Excel版本将正确处理它们。

 Sub ExtractMinDate() Dim Bronze() As Variant Dim DateCrnt As Date Dim DateMin As Date Dim InxBronze As Long Bronze = Array("6/6/2011", "5/10/2011", "5/10/2011", "1/12/2011", "5/10/2011", _ "6/6/2011", "5/11/2011", "16/1/2012", "5/6/2011") DateMin = 0 For InxBronze = LBound(Bronze) To UBound(Bronze) If IsDate(Bronze(InxBronze)) Then DateCrnt = Bronze(InxBronze) If DateMin = 0 Or DateMin > DateCrnt Then DateMin = DateCrnt End If End If Next Debug.Print DateMin End Sub 

我认为问题是你的青铜arrays是一个string数组。

如果您将青铜色arrays更改为types变体,这应该解决您的问题。