Excel if块的应用程序定义或对象定义错误

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

我已经用VBA编写了下面的代码,它基本上检查单元格B24中的值是否为正,如果为正,它将在重复更新X0和sqrt的情况下,在for循环中迭代50次

但是,当我调试代码时,它会抛出一个错误

'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为变量,并且混淆了顺序。谢谢你指出