Переменные внутри метода .Offset

Я заметил некоторое странное поведение с использованием переменных внутри метода смещения.

Вот мой код

Dim r As Integer r=1 ActiveCell.Offset(0, 1).Select ActiveCell.Offset(0, 0 + (r = 1)).Select 

первый выбор, похоже, работает так, как ожидалось, он выбирает ячейку с одним столбцом справа. Однако второй фактически выбирает ячейку один столбец в LEFT! Казалось бы, это означало бы, что 0 + (r =1) оценивал -1, что кажется странным.

Есть что-то, чего я не хватает?

Вот цитата из MSDN :

Когда Visual Basic преобразует числовые значения типа данных в Boolean , 0 становится False а все остальные значения становятся True . Когда Visual Basic преобразует Boolean значения в числовые типы, False становится 0 а True становится -1 .

Вы можете легко проверить это, используя следующий тест:

 MsgBox CInt(True) ' returns -1 MsgBox CInt(False) ' returns 0 

Предполагая, что вы можете изменить свой код на:

 ActiveCell.Offset(0, 0 - (r = 1)).Select 

Также я предлагаю вам прочитать это сообщение: Как избежать использования операторов Select / Active

Interesting Posts

Способ VBA вручную сохранить файл excel на основе «динамических» параметров.

Заполнение списка в c #

VBA: запустите макрос для другой книги (не из)

Извлечение значений из трех листов в окончательный лист на основе названий

Как скрыть лист с помощью VBA?

Зацикливание копии на новую функцию книги на нескольких вкладках на основе названий вкладок в значениях ячеек

Извлечение данных из коллекции в VBA

Как добавить отправителя в макрос, отправляющий электронные письма в VBA excel

Группирование ячеек для POI Apache: есть ли способ получить плюс сверху, а не внизу?

Отправка списка ячеек в список электронной почты (Excel)

Как использовать функцию maxifs Excel 2016, чтобы найти максимальное значение для определенного месяца

Как обрабатывать событие Ctrl + keypress в Excel VSTO?

VBA – копировать текст из Combobox в User и вставлять в цикл на листе excel

Импорт данных – Excel в SQL Azure?

excel checkspelling single cell

Давайте будем гением компьютера.