Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

VB: Замена символов в строке

528
07 января 2004 года
olegnet
154 / / 17.11.2003
Дорова исем...
Мы имеем символы (к примеру ето: 789 265 333 586 845 666 588 456 654), нужно между ними поставить константу (к примеру А, точнее везЪде, где у нас пробелы),...так вот - не гуру я, и не_могу понять как ето сделать...хехе, помогите, если можете...
265
07 января 2004 года
Gauss
975 / / 20.02.2000
Цитата:
Originally posted by olegnet
Дорова исем...
Мы имеем символы (к примеру ето: 789 265 333 586 845 666 588 456 654), нужно между ними поставить константу (к примеру А, точнее везЪде, где у нас пробелы),...так вот - не гуру я, и не_могу понять как ето сделать...хехе, помогите, если можете...

Используй Replace

528
07 января 2004 года
olegnet
154 / / 17.11.2003
Цитата:
Originally posted by Gauss
Используй Replace


***
привет, ты дзнаешь, что то у меня не чего не получается, не как не могу всё это к кнопке перделать (яже тут не гуру в VB VBA), немог бы по подробнее...

265
08 января 2004 года
Gauss
975 / / 20.02.2000
Цитата:
Originally posted by olegnet

***
привет, ты дзнаешь, что то у меня не чего не получается, не как не могу всё это к кнопке перделать (яже тут не гуру в VB VBA), немог бы по подробнее...

замена символов не имеет никакого отношения к приделыванию к кнопке.
1. пишешь процедуру внутри которой осуществляешь свою замену (с помощью replace)
2. рисуешь кнопку
3. в режиме конструктора кликаешь мышкой по кнопке и в открывшемся окне вписываеши название своей процедуры
4. выходишь из режима конструктора, сохраняешься, все готово и работает (если конечно процедура написана корректно!)

478
08 января 2004 года
XtreamAll
279 / / 01.10.2003
Вроде так???
 
Код:
Private Sub Command1_Click()
Dim str As String
Const ch1 As String = " "
Const ch2 As String = "@"
str = InputBox("Введите строку", "Замена символа", "")
MsgBox Replace(str, ch1, ch2, 1, Len(str), vbBinaryCompare)
End Sub
528
08 января 2004 года
olegnet
154 / / 17.11.2003
Gauss -
не, погоди, что такое Replace, я знаю, хехе
как пользоваться - то же научился - хехе,...
но в чём унас состоит задача???
в ячейке написаны символы (пускай 123456789123456789), так вот, к примеру, после каждых 2 (символов), нужно ставить к примеру букву A, что бы в ячейке получилось 12A34A56A78A91A23A45A67A89, а конце естествено не нужно.
так вот, такую процедуру попытался сделать при помощи обычной записи макроса - как понимаешь, не чего не вышло...что сделать???
***
теперь, что коАсается кода - XtreamAll,
как я понимаю, будиет появляться диал. окно с кнопкой и там будиет указываться номер строки, который мы сами вписываем - так это не_то что я спрашиваю (так мне кажется)-хехе...
265
09 января 2004 года
Gauss
975 / / 20.02.2000
какой вопрос, такой ответ!!!
ты спросил про замену пробела символом, тебе ответили, теперь ты пытаешься задать другой вопрос!!!! постарайся его сформулимровать точно! Итак, чего ты хочешь?
266
09 января 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by olegnet
Gauss -
не, погоди, что такое Replace, я знаю, хехе
как пользоваться - то же научился - хехе,...
но в чём унас состоит задача???
в ячейке написаны символы (пускай 123456789123456789), так вот, к примеру, после каждых 2 (символов), нужно ставить к примеру букву A, что бы в ячейке получилось 12A34A56A78A91A23A45A67A89, а конце естествено не нужно.
так вот, такую процедуру попытался сделать при помощи обычной записи макроса - как понимаешь, не чего не вышло...что сделать???
***
теперь, что коАсается кода - XtreamAll,
как я понимаю, будиет появляться диал. окно с кнопкой и там будиет указываться номер строки, который мы сами вписываем - так это не_то что я спрашиваю (так мне кажется)-хехе...



Пример функции (по принципу "за 1 минуту и в лоб")

'МАХ Функция получает на вход строку, в которую надо вставить символ, символ, который надо вставлять, ну или строку, которую надо вставлять, и позицию, после которой надо вставлять. Возвращает приобразованную строку. Пример вызова A = InsLetter ("1234567","МАМА", 2); А станет равным 12МАМА34МАМА56МАМА7

Private Function InsLetter (ByVal Letter as String, InsIn As String, Position As Long) As String
On Error Goto ErrHnd 'МАХ В случае ошибки перейдём в облать обработки ошибок
Dim I as Long
Dim B As Long

InsLetter = VbNullString 'МАХ Присваиваем начальное значение (пустое)

'МАХ Если позиция для вставки описана отрицательным числом, _
или она больше, чем длинна строки. в которую надо вставить символы, _
то функция вернёт саму строку
If Position <= 0 OR Position > Len(Letter) Or InsIn = VbNullString then
InsLetter = Letter
Exit Function
ENDIF

B = 1
For I = 1 To Len(Letter) Step Position
InsLetter = InsLetter & MID$(Letter, B, I) & InsIn
B = I
Next

Exit Function
ErrHnd:
InsLetter = VbNullString
End Function

По-моему, всё. На всякий случай перепроверь, так как запустиить отсюдова, сам понимаешь, не могу я никак. Повнимательней посмотри, как цикл работает For I = 1 To Len(Letter) Step Position, а то он у меня смутные подозрения вызывает (ну там логику, если чё, просто доделать). Вобщем, переделай, как тебе надо. Удачи!:)

528
12 января 2004 года
olegnet
154 / / 17.11.2003
Цитата:
Originally posted by mhaturov


Пример функции (по принципу "за 1 минуту и в лоб")

'МАХ Функция получает на вход строку, в которую надо вставить символ, символ, который надо вставлять, ну или строку, которую надо вставлять, и позицию, после которой надо вставлять. Возвращает приобразованную строку. Пример вызова A = InsLetter ("1234567","МАМА", 2); А станет равным 12МАМА34МАМА56МАМА7

Private Function InsLetter (ByVal Letter as String, InsIn As String, Position As Long) As String
On Error Goto ErrHnd 'МАХ В случае ошибки перейдём в облать обработки ошибок
Dim I as Long
Dim B As Long

InsLetter = VbNullString 'МАХ Присваиваем начальное значение (пустое)

'МАХ Если позиция для вставки описана отрицательным числом, _
или она больше, чем длинна строки. в которую надо вставить символы, _
то функция вернёт саму строку
If Position <= 0 OR Position > Len(Letter) Or InsIn = VbNullString then
InsLetter = Letter
Exit Function
ENDIF

B = 1
For I = 1 To Len(Letter) Step Position
InsLetter = InsLetter & MID$(Letter, B, I) & InsIn
B = I
Next

Exit Function
ErrHnd:
InsLetter = VbNullString
End Function

По-моему, всё. На всякий случай перепроверь, так как запустиить отсюдова, сам понимаешь, не могу я никак. Повнимательней посмотри, как цикл работает For I = 1 To Len(Letter) Step Position, а то он у меня смутные подозрения вызывает (ну там логику, если чё, просто доделать). Вобщем, переделай, как тебе надо. Удачи!:)



***
что то не получается

478
12 января 2004 года
XtreamAll
279 / / 01.10.2003
Попробуй так:
Код:
Private Function InsLetter(ByVal Letter As String, InsIn As String, Position As Long) As String
On Error GoTo ErrHnd 'МАХ В случае ошибки перейдём в облать обработки ошибок
Dim I As Long
Dim B As Long

InsLetter = vbNullString 'МАХ Присваиваем начальное значение (пустое)

'МАХ Если позиция для вставки описана отрицательным числом, _
или она больше, чем длинна строки. в которую надо вставить символы, _
то функция вернёт саму строку
If Position <= 0 Or Position > Len(Letter) Or InsIn = vbNullString Then
InsLetter = Letter
Exit Function
End If

'B = 1
For I = 1 To Len(Letter) Step Position
InsLetter = InsLetter & Mid$(Letter, I, Position) & InsIn
'B = I
Next

Exit Function
ErrHnd:
InsLetter = vbNullString
End Function
478
12 января 2004 года
XtreamAll
279 / / 01.10.2003
И еще в цикле вставь условие:

If I + Position >= Len(Letter) Then InsLetter = InsLetter & Mid$(Letter, I, Position): Exit For

 
Код:
For I = 1 To Len(Letter) Step Position
If I + Position >= Len(Letter) Then InsLetter = InsLetter & Mid$(Letter, I, Position): Exit For
InsLetter = InsLetter & Mid$(Letter, I, Position) & InsIn
Next
[/QUOTE]
266
15 января 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by XtreamAll
И еще в цикле вставь условие:

If I + Position >= Len(Letter) Then InsLetter = InsLetter & Mid$(Letter, I, Position): Exit For

 
Код:
For I = 1 To Len(Letter) Step Position
If I + Position >= Len(Letter) Then InsLetter = InsLetter & Mid$(Letter, I, Position): Exit For
InsLetter = InsLetter & Mid$(Letter, I, Position) & InsIn
Next

[/QUOTE]
Во-во, именно на эту тему подозрения меня и терзали... Персональный respect уважаемому XtreamAll'у! Я всегда говорил, что он - просто супер!

478
15 января 2004 года
XtreamAll
279 / / 01.10.2003
Цитата:
Originally posted by mhaturov


Во-во, именно на эту тему подозрения меня и терзали... Персональный respect уважаемому XtreamAll'у! Я всегда говорил, что он - просто супер! [/QUOTE]

:angel:

528
17 января 2004 года
olegnet
154 / / 17.11.2003
Цитата:
Originally posted by XtreamAll

Во-во, именно на эту тему подозрения меня и терзали... Персональный respect уважаемому XtreamAll'у! Я всегда говорил, что он - просто супер!



:angel: [/QUOTE]
***
всем пасибо за помощь...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог