Coupon syntahx在vba

我正在编写一个循环,我想知道为什么我的macros不起作用。 macros观的想法是确定一个月的周数。 在知道一个月的工作日的名字后,我可以在一周的时间内确定这个事件的发生次数。 她是这样的:

Dim dbNbSemaines As Double Dim strAbrevJourMois As String strAbrevJourMois = Range("E4").Value If strAbrevJourMois = "lun" Then Range("A404").FormulaR1C1 = "=COUNTIF(E4:AB4,""lun"")" dbNbSemaines = Range("A404").Value ElseIf strAbrevJourMois = "mar" Then Range("A404").FormulaR1C1 = "=COUNTIF(E4:AB4,""mar"")" dbNbSemaines = Range("A404").Value ElseIf strAbrevJourMois = "mer" Then Range("A404").FormulaR1C1 = "=COUNTIF(E4:AB4,""mer"")" dbNbSemaines = Range("A404").Value ElseIf strAbrevJourMois = "jeu" Then Range("A404").FormulaR1C1 = "=COUNTIF(E4:AB4,""jeu"")" dbNbSemaines = Range("A404").Value ElseIf strAbrevJourMois = "ven" Then Range("A404").FormulaR1C1 = "=COUNTIF(E4:AB4,""ven"")" dbNbSemaines = Range("A404").Value 

万一

当我到包含countif公式的A404单元格时,它会返回一个#NOM? 它包含一个=NB.SI('E4':'AB4';"lun") 。 我怎样才能在VBA中写入在COUNTIF公式中插入范围E4:AB4?

谢谢你的帮助

简单的select案例就足够了。

 Dim dbNbSemaines As Long Dim strAbrevJourMois As String strAbrevJourMois = LCase(Range("E4").Value) Select Case strAbrevJourMois Case Is = "lun", "mar", "mer", "jeu", "ven" Range("A404").Formula = "=COUNTIF(E4:AB4,""" & strAbrevJourMois & """)" dbNbSemaines = Range("A404").Value End Select 

更改:

 Range("A404").FormulaR1C1 = "=COUNTIF(E4:AB4,""lun"")" 

 Range("A404").Formula = "=COUNTIF(E4:AB4,""lun"")" 

(对于其他公式也是如此)

如果你想坚持`.FormulaR1C1那么你将不得不写

 Range("A404").FormulaR1C1 = "=COUNTIF(R[-400]C[4]:R[-400]C[27],""lun"")"