Разница между следующими строками кода - PullRequest
0 голосов
/ 06 ноября 2018

Я пишу длинный макрос, который по сути копирует и вставляет кучу вещей. Однако мне нужна помощь в расшифровке разницы в следующих строках кода:

Something.Offset(0, -87) Like "-"

Something.Offset(0, -87)= "-"

Something.Offset(0, -87).Value= "-"

Something.Offset(0, -87) Like "*-*"

Это для тех элементов, которые имеют только «-» в качестве своих данных.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Краткий ответ: если ячейка содержит всегда "-", они совпадают.

Длинный ответ:

1-я строка использует оператор Like, чтобы определить, соответствует ли значение ячейки шаблону "-", который соответствует только строке "-".

2-я строка идентична 3-й строке, потому что .value является получателем по умолчанию для Range.

3-я строка получает значение ячейки и сравнивает его со строкой "-" (это должен быть предпочтительный метод, если вам не нужна функциональность Like).

4-я строка использует оператор Like, чтобы определить, соответствует ли значение ячейки шаблону "* - *". * Подстановочный знак для соответствия 0 или более символов. Он действителен не только для "-", но также для "ABC-EFG", "A-", "-A" и т. Д.

Подробнее об операторе Like https://analystcave.com/vba-like-operator/

0 голосов
/ 06 ноября 2018

Таким образом, .Value - это неявное свойство, которое вы вызываете, когда вы не указываете после диапазона, поэтому между двумя центрами не должно быть никакой разницы.

Между двумя центральными и последними центральные будут проверять, точно ли значение равно знаку минус, но нижний проверяет, содержит ли ячейка знак минус. Подстановочные знаки * позволяют указывать на стороне, на которой она указана, что-либо, поэтому, окружая оба, вы позволяете этому появляться в любом месте значения ячейки. По сути, Like позволяет вам вводить шаблон, используя различные символы, которые вы можете найти здесь . Также стоит отметить, что like обычно используется для строк, а = обычно используется для чисел.

Верхний будет функционировать так же, как два центра, потому что вы не добавили ни одного оператора шаблона в строку сравнения, как вы это делали в последнем.

По крайней мере, это мое понимание различий.

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