Как обнаружить разрыв строки в Excel через VBA - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь найти возврат каретки \ разрыв строки в различных ячейках, перебирая их и выполняя функцию InStr для текста в каждой из этих ячеек.Приведенный ниже запрос правильно находит разрыв строки в большинстве ячеек, но в одной из этих ячеек происходит сбой.

Разрыв строки в этих ячейках был добавлен одинаково для всех из них, для этого нажмите Alt + Enter.

Ниже приведена функция, которую я использую:

InStr(startlocation, text, vbLf)

Я также пробовал все нижеприведенное, но безрезультатно:

InStr(startlocation, text, Chr(10)) 'this seems to be identical in results to using vbLf
InStr(startlocation, text, Chr(13)) 'No results with this
InStr(startlocation, text, ALT + 10) 'I see this returning some results sometimes, not exactly sure for which character though
InStr(startlocation, text, vbCrLf) 'No results with this

Есть ли другой способ?представить разрыв строки, чтобы я добавил его в свой запрос?

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Как подтвердили другие, vbLf действительно был правильным символом для определения разрыва строки, введенного ALT + Enter. Моя проблема, как оказалось, была вызвана тем, что содержимое text заканчивалось на один символ перед разрывом строки, поэтому InStr(startlocation, text, vbLf) в этой строке не находил разрыв строки. Расширение text (созданное с помощью функции Mid) на 1 решило проблему. Итак:

Вместо: text = Mid(entryvalue, delimeterlocation, Len(entryvalue) - delimeterlocation)

Я сделал это: text = Mid(entryvalue, delimeterlocation, Len(entryvalue) - delimeterlocation + 1)

0 голосов
/ 23 января 2019

Разрыв строки в ячейках, который создается с помощью Alt + Ввод - это vbLf.

Поэтому должно работать следующее.

InStr(startlocation, text, vbLf)

Если это не сработает, значит, вы сделали что-то не так.

Если в ячейке A1 есть следующие данные ( Alt + Введите после 1 и 2)

enter image description here

Затем InStr(1, Range("A1"), vbLf) возвращает 2.


НапримерВы можете использовать…

Dim ArrLines As Variant
ArrLines = Split(Range("A1"), vbLf)

, чтобы разбить эти строки на массив, например…

  • ArrLines(0) is 1
  • ArrLines(1) is 2
  • ArrLines(2) is 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...