Vba 宏步进计数器
我正在尝试做一个简单的VBA步进计数器,对一列求和,直到该列相加为正数。基本上,这些是现金流,当现金达到收支平衡时进行计算。我只是尝试从Z13开始添加单元格,直到总数变为正数(第一年的现金流为负数)。我得到了一份工作 “需要对象” 运行此代码时出错: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
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…………我相信你的判断,我会避免而在将来使用。