为什么这个循环不能正常工作? 我不断收到对象“_Global”失败的方法“范围”失败

我试图绘制lnD和i,其中i是x轴,lnD是y轴。 我有一个方程,我正在为我放入一系列的值,并尝试检索lnD的值。

但是,我遇到了一个奇怪的问题。 首先,这里是代码。 我应该注意到,它导致我的Excel冻结了几秒钟,但它不会崩溃或什么:

Tracker = 0 Alpha = -1.593975 Beta = -334.6942 For i = 0 To 0.1 Step 0.01 Tracker = Tracker + 1 lnD = Beta * i + Alpha Range("XFB" & Tracker).Value = i Range("XFC" & Tracker).Value = lnD Next i 

我收到对象“_Global”失败的“方法范围”错误。 而当我看数据应该是哪些列时,它只是i = 0和lnD = -1.593975,重复一遍又一遍。 当我看到Tracker的价值时,它已经增加到了一万个,而且由于所有的列都已经到了excel的底部,这意味着循环实际上是循环的。 但为什么我被困在零,而不是增加? 为什么我得到这个错误?

编辑:我应该注意到,如果你改变了第一行为我= 0到10步骤1,它的作品…所以这是否与我放在数字?

编辑2:所以,得到的意见后,这是一个错误没有出现在我放在这里的代码,我看着我的variables声明。 这个问题结束了,我宣布我是一个整数! 这使得它下降到零,导致循环卡住在i = 0,并永远不会成为一个“停止点”。 只是一个愚蠢的错误!

我不打算删除这篇文章,只是因为我觉得我应该把我的愚蠢陈列。 感谢您的帮助,每个人!

你的代码在我的电脑上工作(当我在Excel 2010中工作的时候,将列更改为“A”和“B”后,我的列就不会一直跑到你写的地方了)。 你的意见似乎表明,你实际上循环了更多的价值为我比你说的(“追踪器是在10000s,而我只经历了10个步骤),可以导致一个问题?

另外,把单个单元格的值写入excel是不太可能有效的。 更快地将所有东西写入数组,然后将数组写入excel。

什么对我的excel有效(请注意,我把输出的开始改为“A1”,注意不要覆盖任何数据):

 Sub test() ' Parameters Dim Alpha#: Alpha = -1.593975 Dim Beta#: Beta = -334.6942 Dim nmbOfSteps&: nmbOfSteps = 11& Dim increment#: increment = 0.01 Dim startValue#: startValue = 0# ' Fill in values in an array Dim result() As Double, cntr& ReDim result(1 To nmbOfSteps, 1 To 2) For cntr = 1 To nmbOfSteps Dim iValue#: iValue = startValue + CDbl(cntr - 1&) * increment result(cntr, 1) = iValue result(cntr, 2) = Alpha + Beta * iValue Next cntr ' Write the entire array in one go ThisWorkbook.ActiveSheet.Range("A1").Resize(nmbOfSteps, 2).Value2 = result End Sub 

尝试以下。 而不是移动目标范围,我总是发现最好是固定在我的trget的顶部,并使用偏移来填充单元格的右侧和右侧。

 Sub testit() Dim StartCell As Range tracker = 0 Alpha = -1.593975 Beta = -334.6942 Set StartCell = ActiveSheet.Range("XFB1") For i = 0 To 0.1 Step 0.01 lnD = Beta * i + Alpha StartCell.Offset(tracker, 0).Value = i StartCell.Offset(tracker, 1).Value = lnD tracker = tracker + 1 Next i End Sub