VBA-使用嵌套公式和自定义变量

时间:2018-07-10 15:41:59

标签: excel vba excel-vba

i我想使用一个多嵌套公式,使用= IF(AND(EXACT(TEXT(A8,“ mmm”))等公式来确定A列中的日期是否属于特定的月份/年份。 “ Jan”,EXACT(TEXT(A8,“ yyyy”),“ 2018”),“ Y”,“ N”) 但是,为了使该公式在VBA中更具动态性,我想用通过弹出输入框定义的自定义月份替换“ Jan”,因此

Dim mth As String
FormulaR1C1= "=IF(AND(EXACT(TEXT(RC[-2],""mmm"")," & mth & ",EXACT(TEXT(A8,""YYYY""),""2018""),""Y"",""N"")"

当我这样做时,该公式无法正确解析,因为出现了“ Jan”一词而没有引号,因此两者不匹配: = IF(OR(EXACT(TEXT(A9,“ mmm”),Jan)),“ Y”,“ N”)

如何修改代码以在输出中获取“ Jan”?

谢谢

编辑: 昏暗的字符串 mth =“ Jan”

设置FormulaRange = Range(“ C7:C15”) FormulaRange.FormulaR1C1 =“ = IF(AND(EXACT(TEXT(RC [-2],”“ mmm”“),”“&mth&”“,EXACT(TEXT(A8,”“ YYYY”“), “”“ 2018”“)”“” Y“”“” N“”)“

2 个答案:

答案 0 :(得分:1)

要将双引号放在VBA中的字符串中,您必须使用双qoutes "",即,当您编写""""时,意味着该字符串包含一个双引号,因此您的代码应看起来像这样:

Dim mth As String
FormulaR1C1 = "=IF(AND(EXACT(TEXT(RC[-2],""mmm""),""" & mth & """),EXACT(TEXT(A8,""YYYY""),""2018""),""Y"",""N"")"

答案 1 :(得分:0)

如果我理解正确,您正在尝试检查A列中的日期是否在特定月份,是吗?使用

if MonthName(Month(c.value)) = userInput then
    ...
end if

用于某些Cell c和String userInput。您可能还需要根据日期的格式使用CDate(c.value)。