将值赋值给在VBA中不起作用的变量

j_n*_*elp 2 excel vba

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

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
Run Code Online (Sandbox Code Playgroud)

但是当我运行sub时,它不起作用.当我调试时,我注意到当我在x上盘旋时,当Range("h19")为53时,它被赋值为-344,当Range("20")为0时,z被赋予-5.12.

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

Mat*_*NNZ 6

始终定义从中提取数据的工作表.如果你写:

x = Range("H19").Value
Run Code Online (Sandbox Code Playgroud)

默认你会说:

x = ActiveSheet.Range("H19").Value
Run Code Online (Sandbox Code Playgroud)

这可能是-344你在等待时的价值53.有了这个:

x = Sheets("myGoodSheet").Range("H13").Value
Run Code Online (Sandbox Code Playgroud)

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

  • 啊,好抓!还有一个由"ActiveSheet"引起的错误! (3认同)