VB: Замена символов в строке
Мы имеем символы (к примеру ето: 789 265 333 586 845 666 588 456 654), нужно между ними поставить константу (к примеру А, точнее везЪде, где у нас пробелы),...так вот - не гуру я, и не_могу понять как ето сделать...хехе, помогите, если можете...
Дорова исем...
Мы имеем символы (к примеру ето: 789 265 333 586 845 666 588 456 654), нужно между ними поставить константу (к примеру А, точнее везЪде, где у нас пробелы),...так вот - не гуру я, и не_могу понять как ето сделать...хехе, помогите, если можете...
Используй Replace
Используй Replace
***
привет, ты дзнаешь, что то у меня не чего не получается, не как не могу всё это к кнопке перделать (яже тут не гуру в VB VBA), немог бы по подробнее...
***
привет, ты дзнаешь, что то у меня не чего не получается, не как не могу всё это к кнопке перделать (яже тут не гуру в VB VBA), немог бы по подробнее...
замена символов не имеет никакого отношения к приделыванию к кнопке.
1. пишешь процедуру внутри которой осуществляешь свою замену (с помощью replace)
2. рисуешь кнопку
3. в режиме конструктора кликаешь мышкой по кнопке и в открывшемся окне вписываеши название своей процедуры
4. выходишь из режима конструктора, сохраняешься, все готово и работает (если конечно процедура написана корректно!)
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
не, погоди, что такое Replace, я знаю, хехе
как пользоваться - то же научился - хехе,...
но в чём унас состоит задача???
в ячейке написаны символы (пускай 123456789123456789), так вот, к примеру, после каждых 2 (символов), нужно ставить к примеру букву A, что бы в ячейке получилось 12A34A56A78A91A23A45A67A89, а конце естествено не нужно.
так вот, такую процедуру попытался сделать при помощи обычной записи макроса - как понимаешь, не чего не вышло...что сделать???
***
теперь, что коАсается кода - XtreamAll,
как я понимаю, будиет появляться диал. окно с кнопкой и там будиет указываться номер строки, который мы сами вписываем - так это не_то что я спрашиваю (так мне кажется)-хехе...
ты спросил про замену пробела символом, тебе ответили, теперь ты пытаешься задать другой вопрос!!!! постарайся его сформулимровать точно! Итак, чего ты хочешь?
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, а то он у меня смутные подозрения вызывает (ну там логику, если чё, просто доделать). Вобщем, переделай, как тебе надо. Удачи!:)
Пример функции (по принципу "за 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, а то он у меня смутные подозрения вызывает (ну там логику, если чё, просто доделать). Вобщем, переделай, как тебе надо. Удачи!:)
***
что то не получается
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
If I + Position >= Len(Letter) Then InsLetter = InsLetter & Mid$(Letter, I, Position): Exit For
If I + Position >= Len(Letter) Then InsLetter = InsLetter & Mid$(Letter, I, Position): Exit For
InsLetter = InsLetter & Mid$(Letter, I, Position) & InsIn
Next
И еще в цикле вставь условие:
If I + Position >= Len(Letter) Then InsLetter = InsLetter & Mid$(Letter, I, Position): Exit For
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'у! Я всегда говорил, что он - просто супер!
Во-во, именно на эту тему подозрения меня и терзали... Персональный respect уважаемому XtreamAll'у! Я всегда говорил, что он - просто супер! [/QUOTE]
:angel:
Во-во, именно на эту тему подозрения меня и терзали... Персональный respect уважаемому XtreamAll'у! Я всегда говорил, что он - просто супер!
:angel: [/QUOTE]
***
всем пасибо за помощь...