将值分配给不在VBA中工作的variables

我目前正在编写一个包含一个二维牛顿raphson子程序。 它是这样开始的:

Sub newton11() Dim x As Double, z As Double, tolerance As Double Dim error_x As Double, error_z As Double Dim iteration As Integer iteration = 0 tolerance = 0.05 x = Range("h19").value z = Range("h20").value 

但是当我运行子,它不起作用。 当我debugging时,我注意到当我hover在x上时,当Range(“h19”)是53时,它被赋值为-344,当Range(“20”)是0时,z被赋值为-5.12。

有谁知道如何解决这个问题?

始终定义从哪里抽取数据的工作表。 如果你写:

 x = Range("H19").Value 

默认情况下你说:

 x = ActiveSheet.Range("H19").Value 

当你等待53时,这可能包含了-344的值。 有了这个:

 x = Sheets("myGoodSheet").Range("H13").Value 

你确定你正在引用适当的。 正如马克在他的评论中所说的,如果你在Sheets集合前用Workbooks(j)引用正确的工作簿,那就更好了。

你所描述的是不可能的。

而不是这个:

 x = Range("h19").value z = Range("h20").value 

提取variables:

 Dim xRange As Range, yRange As Range Set xRange = Range("h19") Set yRange = Range("h20") x = xRange.Value y = yRange.Value 

现在在x = xRange.Value行上放置一个断点,然后使用本地窗口 (从View菜单)检查xRangeyRange的运行时间值,然后检查F8的运行时间值,并检查x的运行时间值:两者相同的。

看到@ Matteo的答案 为什么