Excel if块的应用程序定义或对象定义错误
我已经用VBA编写了下面的代码,它基本上检查单元格B24中的值是否为正,如果为正,它将在重复更新X0和sqrt的情况下,在for循环中迭代50次 但是,当我调试代码时,它会抛出一个错误Excel if块的应用程序定义或对象定义错误,excel,vba,if-statement,Excel,Vba,If Statement,我已经用VBA编写了下面的代码,它基本上检查单元格B24中的值是否为正,如果为正,它将在重复更新X0和sqrt的情况下,在for循环中迭代50次 但是,当我调试代码时,它会抛出一个错误 'Run-time error '1004' Application-defined or object-defined error. 我检查了语法,看起来不错,但错误不断地出现。如何解决这个问题?请帮忙 Sub forloopCalc() Dim X0, sqrt As Integer Dim shee
'Run-time error '1004'
Application-defined or object-defined error.
我检查了语法,看起来不错,但错误不断地出现。如何解决这个问题?请帮忙
Sub forloopCalc()
Dim X0, sqrt As Integer
Dim sheetName As String
sheetName = "Sheet1"
Dim WSD As Worksheet
Set WSD = Worksheets(sheetName)
If (Cells(B, 24).Value > 0) Then
X0 = 5.96046447753906E-08
sqrt = 0.000244140625
For i = 0 To 50
If ((X0 - Cells(B, 24).Value) < 0) Then
X0 = X0 * 4
sqrt = sqrt * 2
Exit For
End If
Next i
End If
WSD.Cells(P, 24).Value = X0
WSD.Cells(R, 24).Value = sqrt
End Sub
Sub-forloopCalc()
Dim X0,sqrt为整数
将sheetName设置为字符串
sheetName=“Sheet1”
将WSD设置为工作表
设置WSD=工作表(图纸名称)
如果(单元格(B,24).值>0),则
X0=5.96046447753906E-08
sqrt=0.000244140625
对于i=0到50
如果((X0-单元格(B,24).Value)<0),则
X0=X0*4
sqrt=sqrt*2
退出
如果结束
接下来我
如果结束
WSD.Cells(P,24).Value=X0
WSD.Cells(R,24).Value=sqrt
端接头
在这一行(以及其他行):
B
被视为具有初始值的变量0
,而不是文字行引用。另外,“B”
只能用于列,不能用于行。另外,单元格B24
是第B列第24行,而单元格中的参数是行索引,colIndex
写:
If (Cells(24, "B").Value > 0) Then
相反。在这一行(以及其他行):
B
被视为具有初始值的变量0
,而不是文字行引用。另外,“B”
只能用于列,不能用于行。另外,单元格B24
是第B列第24行,而单元格中的参数是行索引,colIndex
写:
If (Cells(24, "B").Value > 0) Then
相反。您可能会发现使用范围更容易。e、 g.范围(“B24”)
Sub-forloopCalc()
Dim X0,sqrt为整数
将sheetName设置为字符串
将WSD设置为工作表
sheetName=“Sheet1”
设置WSD=工作表(图纸名称)
如果(范围(“B24”).值>0),则
X0=5.96046447753906E-08
sqrt=0.000244140625
对于i=0到50
如果((X0-范围(“B24”).值)<0),则
X0=X0*4
sqrt=sqrt*2
退出
如果结束
接下来我
如果结束
WSD.范围(“P24”).值=X0
WSD.范围(“R24”).值=sqrt
端接头
您可能会发现使用范围更容易。e、 g.范围(“B24”)
Sub-forloopCalc()
Dim X0,sqrt为整数
将sheetName设置为字符串
将WSD设置为工作表
sheetName=“Sheet1”
设置WSD=工作表(图纸名称)
如果(范围(“B24”).值>0),则
X0=5.96046447753906E-08
sqrt=0.000244140625
对于i=0到50
如果((X0-范围(“B24”).值)<0),则
X0=X0*4
sqrt=sqrt*2
退出
如果结束
接下来我
如果结束
WSD.范围(“P24”).值=X0
WSD.范围(“R24”).值=sqrt
端接头
下面的代码版本实际运行。请使用它的语法作为您进一步努力的基础
Sub forloopCalc()
Dim X0 As Double
Dim sqrt As Double
Dim WsD As Worksheet
Dim sheetName As String
Dim i As Integer
sheetName = "Sheet1"
Set WsD = Worksheets(sheetName)
If (WsD.Cells(24, "B").Value > 0) Then
X0 = 5.96046447753906E-08
sqrt = 0.000244140625
For i = 0 To 50
If (X0 - WsD.Cells(24, "B").Value < 0) Then
X0 = X0 * 4
sqrt = sqrt * 2
Exit For
End If
Next i
End If
WsD.Cells(24, "P").Value = X0
WsD.Cells(24, "R").Value = sqrt
End Sub
Sub-forloopCalc()
将X0设置为双精度
双色调暗sqrt
将WsD设置为工作表
将sheetName设置为字符串
作为整数的Dim i
sheetName=“Sheet1”
设置WsD=工作表(图纸名称)
如果(WsD.Cells(24,“B”).值>0),则
X0=5.96046447753906E-08
sqrt=0.000244140625
对于i=0到50
如果(X0-WsD.单元格(24,“B”).值<0),则
X0=X0*4
sqrt=sqrt*2
退出
如果结束
接下来我
如果结束
WsD.单元(24,“P”).值=X0
WsD.单元(24,“R”).值=sqrt
端接头
下面的代码版本实际运行。请使用它的语法作为您进一步努力的基础
Sub forloopCalc()
Dim X0 As Double
Dim sqrt As Double
Dim WsD As Worksheet
Dim sheetName As String
Dim i As Integer
sheetName = "Sheet1"
Set WsD = Worksheets(sheetName)
If (WsD.Cells(24, "B").Value > 0) Then
X0 = 5.96046447753906E-08
sqrt = 0.000244140625
For i = 0 To 50
If (X0 - WsD.Cells(24, "B").Value < 0) Then
X0 = X0 * 4
sqrt = sqrt * 2
Exit For
End If
Next i
End If
WsD.Cells(24, "P").Value = X0
WsD.Cells(24, "R").Value = sqrt
End Sub
Sub-forloopCalc()
将X0设置为双精度
双色调暗sqrt
将WsD设置为工作表
将sheetName设置为字符串
作为整数的Dim i
sheetName=“Sheet1”
设置WsD=工作表(图纸名称)
如果(WsD.Cells(24,“B”).值>0),则
X0=5.96046447753906E-08
sqrt=0.000244140625
对于i=0到50
如果(X0-WsD.单元格(24,“B”).值<0),则
X0=X0*4
sqrt=sqrt*2
退出
如果结束
接下来我
如果结束
WsD.单元(24,“P”).值=X0
WsD.单元(24,“R”).值=sqrt
端接头
Dim X0,sqrt作为整数
默认情况下使X0成为变量,而设计时使sqrt成为整数。在X0=5.96046447753906E-08时,我希望X0是双精度的,sqrt=0.000244140625
将0赋值给整数sqrt。如果要为sqrt分配分数,则sqrt也应为双数据类型。Dim X0,sqrt为整数
默认情况下使X0成为变量,而sqrt设计为整数。在X0=5.96046447753906E-08时,我希望X0是双精度的,sqrt=0.000244140625
将0赋值给整数sqrt。如果您想为sqrt分配一个分数,那么它也应该是双数据类型。非常感谢。我真的没有意识到它是以B为变量,并且混淆了顺序。谢谢你指出,非常感谢。我真的没有意识到它是以B为变量,并且混淆了顺序。谢谢你指出