当我对 vba 使用相同的代码、相同的数据但不同的笔记本电脑时,为什么会得到不同的输出?

cen*_*ena 3 excel vba excel-formula

当单元格低于标题“Vbd”时,我试图将整列单元格设为绝对值,我遇到了这个问题:当我在不同的笔记本电脑上使用相同的代码和相同的数据时(一个是 excel 2010,另一个是 excel 2016),它给出了不同的输出。例如:

在此处输入图片说明

在我按下代码之前,它是这样的。用带有 excel 2010 的笔记本电脑按下它后,它给出了这个输出:

在此处输入图片说明

但是,当我使用具有 excel 2016 的笔记本电脑时,它为我提供了理想的输出,如下所示:

在此处输入图片说明

问题是我对这两台笔记本电脑使用了相同的数据和相同的代码(我已经多次检查代码和数据是否相同)并且我非常困惑为什么输出不同。下面是我的代码,可以在此处找到工作簿。(保管箱)

Option Explicit

Sub testing1()
Dim i As Long
Dim LastColumn As Long
Dim sht As Worksheet
Dim rngToAbs As Range
Dim lastrow As Long



Set sht = ThisWorkbook.Sheets("Sheet1")
LastColumn = sht.Cells(1, sht.Columns.Count).End(xlToLeft).Column
lastrow = sht.Cells(sht.Rows.Count, "D").End(xlUp).Row
 For i = 1 To LastColumn
     With sht
         If sht.Cells(1, i).Value = "Vbd" Then
             Set rngToAbs = .Range(sht.Cells(2, i), sht.Cells(lastrow, i))
             rngToAbs.Value = .Evaluate("=abs(" & rngToAbs.Address & ")")
         End If
     End With
 Next


End Sub
Run Code Online (Sandbox Code Playgroud)

Big*_*Ben 5

@ScottCraner 提供的答案,但张贴以供将来参考。

改变

.Evaluate("=abs(" & rngToAbs.Address & ")")
Run Code Online (Sandbox Code Playgroud)

.Evaluate("=INDEX(abs(" & rngToAbs.Address & "),)")
Run Code Online (Sandbox Code Playgroud)

如果您拥有最新版本的 Excel,则当前版本有效,因为该公式被评估为数组公式。

INDEX旧版本的 Excel 需要添加来评估区域中每个单元格的 ABS。

原始问题中也添加了此评论。