在Excel宏中键入不匹配错误

时间:2016-09-18 02:21:30

标签: vba excel-vba excel-2007 excel

我有这个代码用于工作,其目的很简单,即根据我输入的小时数(E2)填写常规(A2),加班(B2)和双OT(C2)工作时间。

我创建了我的宏,试图拼凑正确的代码(我可以在以后根据需要纠正),现在我在突出显示的代码行中收到“Mismatch Error”。我在网上搜索了几个不同的资源,似乎无法弄清楚我对此缺少什么。我将单元格E2的值定义为double,并且我有一个测试值(15.7)输入到正确的单元格(E2),但它仍然显示单元格E2没有值。

感谢任何帮助。

Code

1 个答案:

答案 0 :(得分:1)

Calculations是一个Worksheet对象。

Worksheets(value)可以传递一个字符串值,即工作表的名称(例如Worksheets("Calculations")),或索引(例如Worksheets(1)),但它不能传递工作表对象

Worksheets(Calculations)的所有用途更改为Worksheets("Calculations")(例如Worksheets("Calculations").Range("E2").Value),或完全绕过Worksheets方法并使用Calculations(例如{{ 1}})。

另请注意,如果语句的前一部分已被评估为Calculations.Range("E2").Value,则不会处理ElseIf语句的If部分。语句的第一部分将在True时执行,因此除非Hours <= 8,否则其他步骤都不会评估。

您还有一条错误地使用Hours > 8运算符的语句。 And运算符检查左操作数和右操作数是否都是And,如果是,则返回True,否则返回True。 (例如,诸如False之类的陈述将是一种合理的使用方式。)我相信你正在尝试使用它来执行两个陈述。执行此操作的正确语法类似于If x > 5 And x < 20 Then,或者只是将两个语句放在不同的行上。

我相信以下内容将会实现您的目标:

x = 5 : y = 2