运行时错误13:types不匹配

这是我第一次从头开始编码,确实是一个非常愚蠢的问题。

为什么我不断收到这个错误?

运行时错误“13”:types不匹配

我在B1中的值是一个整数

Private Sub Workbook_Open() xdate = Worksheets("sheet1").Range("A1") lsdate = DateAdd("d", -7, Date) 'MsgBox lsdate If Day(lsdate) > Day(xdate) Then Worksheets("sheet1").Range ("B1") * 1 = result Else Worksheets("sheet1").Range ("B1") * 1.07 = result End If Range("c1").Value = result End Sub 

我进一步编辑我的代码到以下,但无法获得条件工作

 'To create the following condition 'If less than 7 days interest = 0% 'if 8 to 30 days interest = 7% 'if more than 31 days interest = 9% Sub Workbook_Open() For i = 1 To 3 'Rows.Count xdate = Cells(i, 1) 'MsgBox Cells(i, 1) nulldate = DateAdd("d", -7, Date) irate7late = DateAdd("d", -8, Date) irate7early = DateAdd("d", -30, Date) If Day(nulldate) < Day(xdate) Then result = Cells(i, 2) * 1 ElseIf Day(irate7early) <= Day(xdate) And Day(xdate) <= Day(irate7late) Then '30/9/2015 20/10/2015 20/10/2015 22/10/2015 result = Cells(i, 2) * 1.07 ElseIf Day(irate7early) > Day(xdate) Then result = Cells(i, 2) * 1.09 End If Cells(i, 3).Value = result Next i End Sub 

你在编程上看起来很新,所以我会解释清楚:

当您尝试为几乎每种语言的variable时,可以使用:

 variable = value 

所以你可以在这个value上做很多操作,这在equals =的右边。

但是当你简单地给一个variable赋值的时候,你不能在equals =的左边进行操作。 在testing2个variables时,您几乎可以执行任何操作,但是在代码行的开始处您将有一个如IfWhile这样的关键字。


所以你的代码的问题是,你颠倒了valuevariable的顺序,并试图做value * 1 = variable

这里是你更正的代码(我缩进,以便它可以很容易地阅读):

 Private Sub Workbook_Open() xdate = Worksheets("sheet1").Range("A1") lsdate = DateAdd("d", -7, Date) 'MsgBox lsdate If Day(lsdate) > Day(xdate) Then result = Worksheets("sheet1").Range ("B1") * 1 Else result = Worksheets("sheet1").Range ("B1") * 1.07 End If Sheets("Sheet_name").Range("c1").Value = result End Sub 

而且你应该总是引用你正在使用的工作表,因为以前,你的代码没有指定C1应该在哪张表上。

所以在这里,只要将Sheet_name更改为Sheet_name的名称!

variables需要从表单中获取值。 你正在尝试相反的方式,这就是为什么你得到错误。

 Private Sub Workbook_Open() xdate = Worksheets("sheet1").Range("A1") lsdate = DateAdd("d", -7, Date) 'MsgBox lsdate If Day(lsdate) > Day(xdate) Then result = Worksheets("sheet1").Range("B1") * 1 Else result = Worksheets("sheet1").Range("B1") * 1.07 End If Range("c1").Value = result End Sub Sub test1() Dim var1 As Variant ' If you need to get values from the range("D1") Then use the below code var1 = Worksheets("sheet1").Range("D1").Value End Sub