Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/63: Рейтинг темы: голосов - 63, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 03.03.2009
Сообщений: 10
1

Как разбить строку символов используя один разделитель.

30.03.2009, 18:21. Показов 11692. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как разбить строку символов используя один разделитель.
Например:

Dim strTest As string
Dim strTest_1 As string
Dim strTest_2 As string
Dim strTest_3 As string

strTest='1;2;3;4;5'

Вопрос в том как используя разделитель ';' разложить строку strTest на элементы и присвоить их переменным:
strTest_1
strTest_2
strTest_3

Хочется добиться вот такого результата:

strTest_1='1'
strTest_2='2'
strTest_3='345'
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2009, 18:21
Ответы с готовыми решениями:

Как разбить строку символов используя один разделитель
Как разбить строку символов используя один разделитель. Например: Dim strTest As string Dim...

Разбить строку используя указанный разделитель
Программа ждет ввода строки неограниченной длины. Затем программа ждет ввода символа. После чего...

Разбить строку на слова, используя разделитель - заглавную букву
Доброго времени суток. Есть строки вида: TheQuickBrownFoxJumpsOverTheLazyDog. Как преобразовать...

Произвольную строку разбить на группы по 5 следующих один за другим символов в каждой
Задача: Произвольную строку разбить на группы по 5 следующих один за другим символов в каждой, не...

8
pl
51 / 17 / 6
Регистрация: 18.05.2007
Сообщений: 1,322
30.03.2009, 19:02 2
Не знаю, есть ли в VBA функция Split, если есть, то используй ее, потом работай с масивом. Если нет, попробуй достать ее через COM из VB или VBScript - что-то вроде CreateObject('VB...'), я так в акцес регулярные выражения из VBScript вытаскивал (CreateObject('VBScript.RegExp')).
0
1 / 1 / 1
Регистрация: 18.06.2008
Сообщений: 329
30.03.2009, 19:25 3
Лучше напиши для этого дела свою функцию, передавая ей в качестве значения разделитель и номер вытаскиваемого элемента. Я такую писал, используя Instr
0
1 / 1 / 1
Регистрация: 18.06.2008
Сообщений: 329
30.03.2009, 20:35 4
Я написал такую:

Function ExtractFrom(Str1, Razd, Int1)
'Str1 - строка для разбиения
'Razd - разделитель
'Int1 - номер запрашиваемого элемента

teMp = Str1
Schet = 1
stArt = InStr(1, teMp, Razd)
Dim Ext()
While stArt > 0
ReDim Preserve Ext(Schet)
Ext(Schet) = Left(teMp, stArt - 1)
teMp = Right(teMp, Len(teMp) - stArt)
Schet = Schet + 1
stArt = InStr(1, teMp, Razd)
Wend
ReDim Preserve Ext(Schet)
Ext(Schet) = teMp
'проверяем не больше ли номер запрашиваемого элемента всего их количества
If Int1 > UBound(Ext, 1) Then ExtractFrom = '' Else ExtractFrom = Ext(Int1)
End Function

Использование в твоем случае:

strTest='1;2;3;4;5'
strTest_1=ExtractFrom(strTest, ';', 1)
strTest_2=ExtractFrom(strTest, ';', 2)
strTest_3=ExtractFrom(strTest, ';', 3) & ExtractFrom(strTest, ';', 4) & ExtractFrom(strTest, ';', 5)
0
1 / 1 / 0
Регистрация: 27.08.2008
Сообщений: 154
31.03.2009, 17:23 5
strTest='1;2;3;4;5'
strTest_1 = Split(strTest,';')(0) (after this strTest_1 = '1')
strTest_2 = Split(strTest,';')(1) (after this atrTest_2 = '2')
and so on

Function Split in VBA exists.
Why to create bycycle?
0
1 / 1 / 1
Регистрация: 18.06.2008
Сообщений: 329
31.03.2009, 21:24 6
Это тебе привиделось в 6-м VB
В 5-м VB и VBA никакого сплита нету...
(((((((
0
1 / 1 / 0
Регистрация: 27.08.2008
Сообщений: 154
01.04.2009, 17:40 7
In VBA for Excel 2000 you have 'Split'. This is for sure, I use it.
I don't know about Excel 97. What do you use exactly?
0
0 / 0 / 0
Регистрация: 27.02.2016
Сообщений: 11
27.05.2009, 17:31 8
Фунцкция Split практически бесполезна. Возвращает она массив, который в явном виде нельзя присвоить переменной-массиву.

'Поубывав бы!'
0
0 / 0 / 0
Регистрация: 06.11.2007
Сообщений: 30
28.05.2009, 14:04 9
Функция Split прекрасно работает в VBA, как написала Королана, она абсолютно права. Вот только в 97-м Excel'е этой функции нет. В 2000-м и выше есть.
0
28.05.2009, 14:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2009, 14:04
Помогаю со студенческими работами здесь

Разбить строку в массив через разделитель
Здравствуйте уважаемые форумчане. Мне как новичку интересно как выполнить следующее. Необходимо...

Разбить строку на подстроки по разделителю, сохраняя этот разделитель
нужно разбить текст на предложения с помощью сплита, делаю я это как: string opentext =...

Как разбить строку на подстроки используя Regex
При работе над одним модулем, возникла проблема такого рода: получаю Json строку такого вида { ts:...

Разделить строку на подстроки, используя символ-разделитель
есть вот такой текст 123:456;789;321 нужно чтобы в едит1 было 123, в едит2 456, в 3 - 789, в 4 -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru