簡體   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