运行时错误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
时,您几乎可以执行任何操作,但是在代码行的开始处您将有一个如If
或While
这样的关键字。
所以你的代码的问题是,你颠倒了value
和variable
的顺序,并试图做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