首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行时错误13 :类型不匹配

运行时错误13 :类型不匹配
EN

Stack Overflow用户
提问于 2015-10-28 08:44:07
回答 2查看 167关注 0票数 2

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

为什么我老是犯这个错误?

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

我在B1中的值是一个整数

代码语言:javascript
复制
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

我已将代码进一步编辑为以下内容,但无法使条件正常工作

代码语言:javascript
复制
'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
EN

回答 2

Stack Overflow用户

发布于 2015-10-28 09:18:27

您在编程方面似乎很新,所以我将简单地解释一下:

当您试图在几乎每种语言中将value分配给variable时,您可以使用:

代码语言:javascript
复制
variable = value

所以您可以在value上做很多操作,这是在等于=的右边。

但是,当您简单地将一个canNOT分配给一个variable时,您可以在等于=的左边执行操作。在测试2 variables时,您几乎可以执行任何操作,但是在代码行的开头将有一个关键字,如IfWhile

因此,代码的问题是,您颠倒了valuevariable的顺序,并尝试执行value * 1 = variable

下面是您修改过的代码(我缩进代码以便于阅读):

代码语言:javascript
复制
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更改为您的工作表的名称!

票数 1
EN

Stack Overflow用户

发布于 2015-10-28 09:01:49

变量需要从工作表中获取值。你在尝试相反的方法,这也是你犯错的原因。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33386385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档