繁体   English   中英

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

[英]Why do i get different output when i used the same code, same data but different laptops for vba?

当单元格位于标题“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

@ScottCraner 提供的答案,但发布以供将来参考。

改变

.Evaluate("=abs(" & rngToAbs.Address & ")")

.Evaluate("=INDEX(abs(" & rngToAbs.Address & "),)")

当前版本有效,因为如果您有最新版本的 Excel,公式将作为数组公式求值。

旧版本的 Excel 需要添加INDEX来评估范围内每个单元格的 ABS。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM