代码之家  ›  专栏  ›  技术社区  ›  Lelio Faieta

比较两个值相同的变量返回false

  •  0
  • Lelio Faieta  · 技术社区  · 7 年前

    在Excel宏中,我有以下语句:

    mese= 6 'from excel cell
    mese_tgt = 6 'from input box
    quindicina =1 'from excel cell
    quindicina_tgt = 1 'from input box
    
    If mese = mese_tgt And quindicina = quindicina_tgt Then
    'do stuff here
    End If
    

    这将始终返回false。如果我调试,我会看到这些值被正确分配,因此

    If 6 = 6 And 1 = 1 Then
    

    我错过了什么?据我所知,vba不需要==来进行比较,但也许我错了?

    编辑:我不声明变量,但只声明:

    mese_tgt = InputBox("Che mese vuoi elaborare?", "Scegli il mese")
    quindicina_tgt = InputBox("Quale quindicina vuoi elaborare? 1 o 2", "Scegli la quindicina")
    mese = sh2.Range("B" & riga).Value
    quindicina = sh2.Range("C" & riga).Value
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   Scott Craner    7 年前

    问题是:

    mese_tgt = InputBox("Che mese vuoi elaborare?", "Scegli il mese")

    返回字符串而不是数字。在Excel中 "1" <> 1 所以必须声明变量,这样VBA就不会猜测类型:

    Dim mese as Long, mese_tgt as Long, quindicina as Long, quindicina_tgt as Long
    

    现在VBA不会猜测类型,它将强制结果为Long。

    一个音符长的只有整数,没有小数。如果你的数字有小数,那么用 Double 而不是 Long

    人们应该养成总是声明变量的习惯。

    推荐文章