VBA:使用Range.Formula时出错

VBA:使用Range.Formula时出错,vba,excel,Vba,Excel,我用的是这个公式 ThisWorkbook.Sheets("Overview").Range(formrange).Formula = "=IF(OR(ISBLANK(B2);WEEKDAY(DATE($B$38;$B$37;B2);2)>5;DAY(EOMONTH(DATE($B$38;$B$37;B$3);0))<B2);0;IF(C2=""Y"";0,5;1))" 你们知道那是什么吗?范围。Formula属性需要一个公式字符串,格式与输入到计算机上具有美国地区设置的单元格中的

我用的是这个公式

ThisWorkbook.Sheets("Overview").Range(formrange).Formula = "=IF(OR(ISBLANK(B2);WEEKDAY(DATE($B$38;$B$37;B2);2)>5;DAY(EOMONTH(DATE($B$38;$B$37;B$3);0))<B2);0;IF(C2=""Y"";0,5;1))"

你们知道那是什么吗?

范围。Formula属性需要一个公式字符串,格式与输入到计算机上具有美国地区设置的单元格中的格式相同。因此,对于本例,您需要:

ThisWorkbook.Sheets("Overview").Range(formrange).Formula = "=IF(OR(ISBLANK(B2),WEEKDAY(DATE($B$38,$B$37,B2),2)>5,DAY(EOMONTH(DATE($B$38,$B$37,B$3),0))<B2),0,IF(C2=""Y"",0.5,1))"

ThisWorkbook.Sheets(“Overview”).Range(formrange).Formula=“=IF(OR(ISBLANK(B2)),工作日(日期($B$38,$B$37,B2),2)>5天(EOMONTH(日期($B$38,$B$37,B$3),0))用逗号替换分号。
Formula
需要我们的语法。@chase no美式英语中的
0,5
将是
0.5
,但这也需要更改。所以,很好。@ScottCraner啊,很有趣。感谢您分享国际版Excel如何使用不同的函数名和标点符号-但在VBA中输入的公式仍然必须采用美国格式。当然,但这是对“最少意外”原则的粗暴违反。如果单元格公式始终采用美国格式,或者可以通过单击或其他方式切换到美国/本地,则会更好。
ThisWorkbook.Sheets("Overview").Range(formrange).Formula = "=IF(OR(ISBLANK(B2),WEEKDAY(DATE($B$38,$B$37,B2),2)>5,DAY(EOMONTH(DATE($B$38,$B$37,B$3),0))<B2),0,IF(C2=""Y"",0.5,1))"