这是我第一次从头开始编码,这的确是一个非常愚蠢的问题。
为什么我老是犯这个错误?
运行时错误“13”:类型不匹配
我在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发布于 2015-10-28 09:18:27
您在编程方面似乎很新,所以我将简单地解释一下:
当您试图在几乎每种语言中将value分配给variable时,您可以使用:
variable = value所以您可以在value上做很多操作,这是在等于=的右边。
但是,当您简单地将一个canNOT分配给一个variable时,您可以在等于=的左边执行操作。在测试2 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更改为您的工作表的名称!
发布于 2015-10-28 09:01:49
变量需要从工作表中获取值。你在尝试相反的方法,这也是你犯错的原因。
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 Subhttps://stackoverflow.com/questions/33386385
复制相似问题