Разделение строки в excel VBA дает ошибку несоответствия типа

Я работаю с макросом в excel VBA. У меня есть переменная следующим образом:

debug.Print(Categories)
Tools & Home Improvement 
› 
Power & Hand Tools 
› 
Power Tool Parts & Accessories 
› 
Woodworking Project Plans & Kits 
› 
Woodworking Project Kits 

Я пытаюсь разделить строку следующим образом в окне Immediate, но получаю сообщение об ошибке: "Run Type Error 13, Type Mismatch"

debug.Print(Split(Categories, ">"))

Я пытаюсь извлечь только Tools & Home Improvement из Categories переменной. Есть ли какая-либо другая функция, которую я могу использовать для вышеуказанного.

Под окном LocalsCategories имеет тип Variant/String

Редактировать:

Split(Categories, ">")(0) вернуть целиком Инструменты и товары для дома › Электроинструменты и ручные инструменты › Запчасти и аксессуары для электроинструментов › Планы и комплекты проектов по деревообработке › Комплекты для деревообработки

Он не разделяет переменную Categories.

Split(Categories, ">") возвращает массив, поэтому вам нужно будет напечатать Split(Categories, ">")(0), чтобы получить первый элемент массива.
Luuk 10.12.2020 13:11

(a) Вы уверены в характере разделения? Может быть, это другой персонаж, который просто выглядит как >? (b) Кажется, в вашей строке также есть символы новой строки, вам нужно будет их заменить.

FunThomas 10.12.2020 13:17

Я скопировал и вставил файл debug.Print(Categories), как вы видите в сообщении.

Zanam 10.12.2020 13:18
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
3
584
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Split возвращает массив строк. Однако Debug.Print не может распечатать массив. Вам нужно указать индекс:

Debug.Print Split(Categories, ">")(0)

или

Dim tokens() As String, i As Integer
tokens = Split(Categories, ">")
For i = LBound(tokens) To UBound(tokens)
   Debug.Print i & ". substring: " & Trim(tokens(i))
Next i

Кажется, у вас другой символ в качестве разделителя. Когда я копирую символ из вашего вывода, он кажется chr (155), а меньше, чем char, - chr (62).

FunThomas 10.12.2020 13:20

как понять что это за персонаж?

Zanam 10.12.2020 13:20

С Asc-функцией. Я скопировал символ из вашего вопроса, вставил его в ближайшее окно и набрал ? Asc("›"). Это дало мне 155

FunThomas 10.12.2020 13:23

Другие вопросы по теме