Vba 宏步进计数器

Vba 宏步进计数器,vba,excel,Vba,Excel,我正在尝试做一个简单的VBA步进计数器,对一列求和,直到该列相加为正数。基本上,这些是现金流,当现金达到收支平衡时进行计算。我只是尝试从Z13开始添加单元格,直到总数变为正数(第一年的现金流为负数)。我得到了一份工作 “需要对象” 运行此代码时出错: Sub Breakeven() Dim Total As Long Dim StepCounter As Integer Total = Range("z13").Value Set StepCounter = 14 If Total &l

我正在尝试做一个简单的VBA步进计数器,对一列求和,直到该列相加为正数。基本上,这些是现金流,当现金达到收支平衡时进行计算。我只是尝试从Z13开始添加单元格,直到总数变为正数(第一年的现金流为负数)。我得到了一份工作

“需要对象”

运行此代码时出错:

Sub Breakeven()

Dim Total As Long
Dim StepCounter As Integer


Total = Range("z13").Value
Set StepCounter = 14

If Total < 0 Then

Total = Total + CashFlows.Cells(Z, StepCounter).Value
StepCounter = StepCounter + 1

End If

MsgBox "The breakeven is " & Total

End Sub
次盈亏平衡()
总长度
作为整数的Dim步进计数器
总计=范围(“z13”).值
设置步进计数器=14
如果总数<0,则
总计=总计+现金流。单元格(Z,步进计数器)。值
步进计数器=步进计数器+1
如果结束
MsgBox“盈亏平衡为”&总计
端接头

请帮忙

您需要一个循环

考虑:

Sub Breakeven()
    Dim Total As Long
    Dim StepCounter As Integer
    Dim CashFlows As Worksheet
    Set CashFlows = ActiveSheet


    Total = Range("z13").Value
    StepCounter = 14

    While Total < 0
            Total = Total + CashFlows.Cells(StepCounter, "Z").Value
            StepCounter = StepCounter + 1
    Wend
    MsgBox "The breakeven is " & Total

End Sub
次盈亏平衡()
总长度
作为整数的Dim步进计数器
将现金流作为工作表
设置现金流=活动表
总计=范围(“z13”).值
步进计数器=14
而总量<0
总计=总计+现金流。单元格(步进计数器,“Z”)。值
步进计数器=步进计数器+1
温德
MsgBox“盈亏平衡为”&总计
端接头
注意事项:

  • 我们定义了一个
    工作表
    对象并
    设置它
  • 我们创建了一个
    While
    循环(因为
    IF
    本身不会循环)
  • 我们反转了
    单元格()中的参数
  • 我们用字符串常量替换变量
    Z
  • 我们删除了
    步进计数器的
    集合

  • 您需要一个循环

    考虑:

    Sub Breakeven()
        Dim Total As Long
        Dim StepCounter As Integer
        Dim CashFlows As Worksheet
        Set CashFlows = ActiveSheet
    
    
        Total = Range("z13").Value
        StepCounter = 14
    
        While Total < 0
                Total = Total + CashFlows.Cells(StepCounter, "Z").Value
                StepCounter = StepCounter + 1
        Wend
        MsgBox "The breakeven is " & Total
    
    End Sub
    
    次盈亏平衡()
    总长度
    作为整数的Dim步进计数器
    将现金流作为工作表
    设置现金流=活动表
    总计=范围(“z13”).值
    步进计数器=14
    而总量<0
    总计=总计+现金流。单元格(步进计数器,“Z”)。值
    步进计数器=步进计数器+1
    温德
    MsgBox“盈亏平衡为”&总计
    端接头
    
    注意事项:

  • 我们定义了一个
    工作表
    对象并
    设置它
  • 我们创建了一个
    While
    循环(因为
    IF
    本身不会循环)
  • 我们反转了
    单元格()中的参数
  • 我们用字符串常量替换变量
    Z
  • 我们删除了
    步进计数器的
    集合
  • 您可以将代码折叠为:

    Sub Main()
        Dim StepCounter As Long
    
        Do
            StepCounter  = StepCounter + 1
        Loop While WorkSheetFunction.Sum(Range("Z13").Resize(StepCounter) ) < 0
        MsgBox "The breakeven is " & WorkSheetFunction.Sum(Range("Z13").Resize(StepCounter) )
    End Sub
    
    Sub-Main()
    暗淡的步进计数器
    做
    步进计数器=步进计数器+1
    在工作表function.Sum(范围(“Z13”).Resize(步进计数器))<0时循环
    MsgBox“盈亏平衡是”&工作表function.Sum(范围(“Z13”)。调整大小(步进计数器))
    端接头
    
    您可以将代码折叠为:

    Sub Main()
        Dim StepCounter As Long
    
        Do
            StepCounter  = StepCounter + 1
        Loop While WorkSheetFunction.Sum(Range("Z13").Resize(StepCounter) ) < 0
        MsgBox "The breakeven is " & WorkSheetFunction.Sum(Range("Z13").Resize(StepCounter) )
    End Sub
    
    Sub-Main()
    暗淡的步进计数器
    做
    步进计数器=步进计数器+1
    在工作表function.Sum(范围(“Z13”).Resize(步进计数器))<0时循环
    MsgBox“盈亏平衡是”&工作表function.Sum(范围(“Z13”)。调整大小(步进计数器))
    端接头
    
    您不能
    设置
    整数,因为它不是对象。删除
    Set
    关键字。我还相信
    CashFlows.Cells(Z,StepCounter)。Value
    应该是
    CashFlows.range(“Z”&StepCounter)。Value
    (除非
    Z
    是一个变量,在代码的其他地方指定了整数值),谢谢!但是当我这样做的时候,我仍然会得到一个对象所需的错误。这将有助于说明错误所在的行。我可以用F8直到:StepCounter=StepCounter+1你不能
    设置
    整数,因为那不是一个对象。删除
    Set
    关键字。我还相信
    CashFlows.Cells(Z,StepCounter)。Value
    应该是
    CashFlows.range(“Z”&StepCounter)。Value
    (除非
    Z
    是一个变量,在代码的其他地方指定了整数值),谢谢!但是当我这样做的时候,我仍然会得到一个对象必需的错误。说明错误所在的行会很有帮助。我可以用F8直到:StepCounter=StepCounter+1为什么在Wend
    时提倡折旧的
    ?真的应该使用
    Do Loop
    @chrisneilsen谢谢你,chrisneilsen…………我相信你在这方面的判断,并将在将来避免
    时使用
    ?真的应该使用
    Do Loop
    @chrisneilsen谢谢你chris…………我相信你的判断,我会避免
    而在将来使用