Почему я получаю разные выходные данные, когда я использую один и тот же код, те же данные, но разные ноутбуки для VBA? - PullRequest
3 голосов
/ 24 января 2020

Я пытаюсь сделать целые столбцы ячеек абсолютными, когда ячейки находятся ниже заголовка «Vbd», и я столкнулся с такой проблемой: когда я использую один и тот же код и одни и те же данные на разных ноутбуках (один Excel 2010, а другой один - это Excel 2016), он дает другой результат. Например:

enter image description here

До того, как я нажал код, это было так. После нажатия на ноутбук с Excel 2010 он выдает:

enter image description here

Однако, когда я использовал ноутбук с Excel 2016, он дает мне идеальный вывод, который выглядит примерно так:

enter image description here

Дело в том, что я использовал одни и те же данные и один и тот же код для этих двух ноутбуков (я проверял несколько раз что и коды и данные одинаковы) и я очень запутался, почему вывод отличается. Ниже мой код и рабочую книгу можно найти здесь. (Dropbox)

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

1 Ответ

5 голосов
/ 24 января 2020

Ответ предоставлен @ScottCraner, но публикуется для дальнейшего использования.

Изменить

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

на

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

Текущая версия работает, поскольку формула оценивается как формула массива, если у вас последняя версия Excel.

Добавление INDEX необходимо для более старых версий Excel, чтобы оценить ABS каждой ячейки в диапазоне.

Добавлено это комментарий в оригинальном вопросе .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...