将值分配给不在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
菜单)检查xRange
和yRange
的运行时间值,然后检查F8的运行时间值,并检查x
的运行时间值:两者是相同的。
看到@ Matteo的答案 为什么 。