Excel-VBA在循环后查找最大变量

Excel-VBA在循环后查找最大变量,excel,vba,variables,max,Excel,Vba,Variables,Max,我试图有2或3个不同的变量(变量)的最大值。它们都是日期。 我有下面的代码,但我相信,我做了一些相当错误的事情。 你们能帮帮我吗? 这是代码 Dim QA As Integer: QA = 0 For Each j_WS In Array(WS_1, WS_2, WS3) Select Case QA Case 0: j = 1 Case 1: j = 2 Case 2: j = 3 End Select o = 14 + j * 3 Dim WA1 As Varian

我试图有2或3个不同的变量(变量)的最大值。它们都是日期。 我有下面的代码,但我相信,我做了一些相当错误的事情。 你们能帮帮我吗? 这是代码

Dim QA As Integer: QA = 0    
For Each j_WS In Array(WS_1, WS_2, WS3) 

Select Case QA 
Case 0: j = 1 
Case 1: j = 2 
Case 2: j = 3 
End Select 

o = 14 + j * 3 
Dim WA1 As Variant 
Dim WA2 As Variant 
Dim WA3 As Variant 
Gorev = Cells(p, o).Address 
SlideNo = Cells(p, 34).Address 
Egitim_Adi = Cells(2, 3).Address 
Dim Satir_bul As Variant 


If Not IsError(Satir_bul) Then 
    Satir_bul = Worksheets(WS_All).Evaluate("=Match(" & Egitim_Adi & "&" & SlideNo & "&" & Gorev & ", '" & j_WS & "'!A:A&'" & j_WS & "'!B:B&'" & j_WS & "'!C:C, 0)") 
Else 
    WA1 = "" 
    WA2 = "" 
    WA3 = "" 
End If 


If j = 1 And Worksheets(WS_All).Cells(8, 3).Value = "Yeni Egitim" Or j = 1 And Worksheets(WS_All).Cells(8, 3).Value = "Tanitim / Reklam" Then 
    WA1 = Worksheets(j_WS).Cells(Satir_bul, 7).Value 
Else: WA1 = Worksheets(j_WS).Cells(Satir_bul, 9).Value 
    If j = 2 And Worksheets(WS_All).Cells(8, 3).Value = "Yeni Egitim" Or j = 1 And Worksheets(WS_All).Cells(8, 3).Value = "Tanitim / Reklam" Then 
        WA2 = Worksheets(j_WS).Cells(Satir_bul, 7).Value 
    Else: WA2 = Worksheets(j_WS).Cells(Satir_bul, 9).Value 
        If j = 3 And Worksheets(WS_All).Cells(8, 3).Value = "Yeni Egitim" Or j = 1 And Worksheets(WS_All).Cells(8, 3).Value = "Tanitim / Reklam" Then 
            WA3 = Worksheets(j_WS).Cells(Satir_bul, 7).Value 
        Else: WA3 = Worksheets(j_WS).Cells(Satir_bul, 9).Value 


        End If 
    End If 
End If 


QA = QA + 1 
Next j_WS 


If WA1 > WA2 And WA1 > WA3 Then 
    MAX_DATE = WA1 
Else 
    If WA2 > WA3 And WA2 > WA1 Then 
        MAX_DATE = WA2 
    Else 
        If WA3 > WA2 And WA3 > WA1 Then 
            MAX_DATE = WA3 
        Else 
            MAX_DATE = "" 
        End If 
    End If 
End If 


Worksheets(WS_All).Cells(p, 26).Value = MAX_DATE 


Next p 
如您所见,几乎所有内容都是预定义的整数或类似的东西,WA1、WA2和WA3都是日期,我希望MAX_DATE也是日期


WA1、WA2和WA3在循环中不正确。WA1在第一个循环中是正确的,WA2在第二个循环中是正确的,依此类推,但例如在第二个循环中,WA1是空的。因此,MAX_DATE值不能正常工作。

首先,将这些变量声明为
DATE
。然后编译器将知道如何使用
比较它们实际上,日期类型不是我这里的主要问题。主要问题是,在第一次循环之后,MAX_DATE无法正确地重置自身。它与我相信的第一个值保持一致。因为它在循环之外。但它应该在WA循环之外,因为它取决于3个不同的WA值。因此它将在循环之后只计算一次。它不会改变值。是的,但它应该在第一个“p”循环后重新计算并改变。但它在第一个值处出现问题:(
Dim d1, d2, d3 As Date

d1 = "06-01-2017"
d2 = "05-01-2018"
d3 = "01-01-1900" 'This can be some default value, you can't pass here empty string ("")

If d1 > d2 Then
    MsgBox ("a")
Else
    MsgBox ("b")
End If