Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 2
Регистрация: 30.11.2011
Сообщений: 77

Написать процедуру

01.01.2012, 14:40. Показов 1036. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ввести текст. Перед каждой цифрой в тексте вставить знак «+».
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.01.2012, 14:40
Ответы с готовыми решениями:

написать процедуру на VBA
Помогите, плиз, у меня есть таблица Сотрудники (КодСотрудника, ФИО, Должность), форма Сотрудники(с кнопками Открыть, Создать, Закрыть),...

Как написать процедуру
На форме "Form1" имеются поля "Dan1", "Dan2", "Dan3" и имеется кнопка "Кнопка1". Как написать процедеру, чтобы при нажатии на кнопку...

Как написать процедуру
Есть главная форма «А» и подчиненная форма «В». На форме «А» есть логическое поле «С»: На форме «В» есть логическое поле «К» и...

5
 Аватар для Aeliot
177 / 62 / 3
Регистрация: 17.11.2011
Сообщений: 318
01.01.2012, 18:20
1) Какой величины текст?
2) Как отформатированы числа? Это только простые целые числа или есть дробные, есть ли что-то типа "19 779,09"

Добавлено через 1 час 37 минут
Вот, накидал по быстрому
Если число "простое", например "123", то можно пользоваться следующим:
Функция добавления "+" перед числами
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Public Function FormatNumberInText( _
        ByVal strText As String _
        ) As String
    Dim blnBegin As Boolean     ' флаг: нашли начало числ
    Dim blnEnd As Boolean       ' флаг: нашли конец числ
    Dim i As Long               ' индекс цикла
    Dim lngCount As Long        ' счётчик найденных чисел
    Dim lngLen As Long          ' длинна текста
    Dim strNew As String
    
    blnBegin = False
    blnEnd = False
    lngCount = 0
    lngLen = Len(strText)
    strNew = strText
    For i = lngLen To 1 Step -1
        strMid = Mid(strNew, i, 1)
        If Not blnEnd Then If InStr(1, "123456789", strMid, vbTextCompare) > 0 Then blnEnd = True
        If blnEnd And Not blnBegin Then If Not InStr(1, "123456789", strMid, vbTextCompare) > 0 Then blnBegin = True
        If blnEnd And blnBegin Then
            strNew = Left(strNew, i) & "+" & Right(strNew, lngLen - i + lngCount)
            lngCount = lngCount + 1
            blnEnd = False
            blnBegin = False
        End If
        ' обрабатываем исключение, если первый символ строки является числом
        If blnEnd And i = 1 Then strNew = "+" & strNew
    Next i
    FormatNumberInText = strNew
End Function

Передаёте весь ваш текст в эту функцию в виде одной текстовой переменной. Она возвращает вам то же самое, только с плюсами.
Идёт банальный перебор всех символов, входящих в текстовую переменную.
1
1 / 1 / 2
Регистрация: 30.11.2011
Сообщений: 77
01.01.2012, 18:39  [ТС]
извините, а можете загрузить свою программу?
0
 Аватар для Aeliot
177 / 62 / 3
Регистрация: 17.11.2011
Сообщений: 318
01.01.2012, 21:22
Цитата Сообщение от investr Посмотреть сообщение
извините, а можете загрузить свою программу?
Не знаешь как вставить это код в свою программу?

1) Открываешь свой проект.
2) Жмёшь "Alt+F11" и попадаешь в редактор VBA
3) Создаёшь стандартный модуль
4) Копируешь текст функции из браузера и вставляешь в модуль.
5) Используешь там где ТЕБЕ это нужно. Например, вот так:
Текст кнопки
Visual Basic
1
2
3
4
5
Dim strTextOld as String     ' старый текст
Dim strTextNew as String     ' новый текст
strTextOld = "123 hkhk 686869"
strTextNew = FormatNumberInText(strTextOld)
MsgBox strTextNew, , "Новый текст"

Надеюсь не нужно объяснять как сделать так, чтоб твой текст оказался в переменной strTextOld
1
1181 / 632 / 39
Регистрация: 30.05.2010
Сообщений: 715
01.01.2012, 23:10
Здравствуйте investr.
Цитата Сообщение от investr Посмотреть сообщение
..Перед каждой цифрой в тексте вставить...
Вашу задачу (если формулировка верна) можно выполнять подобной функцией:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Function addPlus$(sVal$)
Dim v, i&
ReDim v(1 To Len(sVal))
For i = 1 To Len(sVal)
    v(i) = Mid(sVal, i, 1)
    Select Case Asc(v(i))
    Case 48 To 57: v(i) = "+" & v(i)
    End Select
Next
addPlus = Join(v, "")
End Function
если же речь о числах в тексте, как предположил Aeliot,
как возможный вариант, может быть использована подобная функция:
Visual Basic
1
2
3
4
5
6
7
8
Function addPlus$(sVal$)
Dim v, i&
v = Split(sVal)
For i = 0 To UBound(v)
    If IsNumeric(v(i)) Then v(i) = "+" & v(i)
Next
addPlus = Join(v)
End Function
Успехов Вам.
Евгений.

P.S. выкладывая вопрос не забывайте обращаться к тем кому Вы его адресуете, не знаете как - можно просто поздоровавшись.
1
 Аватар для Aeliot
177 / 62 / 3
Регистрация: 17.11.2011
Сообщений: 318
09.01.2012, 00:40
--> Teslenko_EA
Честно говоря сложно представить задачу в которой нужно было бы поставить "+" именно перед кожной цифрой, а не числом, т.е. перед каждым символом числа. Например текст
У вас на балансе 1245 р.
превратить в
У вас на балансе +1+2+4+5 р.


Но идея с массивом мне понравилась.
Я лишь слегка подпилил её.
За одно решился вопрос с дробными числами.
НОВАЯ Функция добавления "+" перед числами
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Public Function FormatNumberInTextB( _
        ByVal strText As String _
        ) As String
    Dim i As Long           ' индекс цикла
    Dim lngLb As Long       ' нижний предел массива
    Dim lngUb As Long       ' верхний предел массива
    Dim strArr() As String  ' строковый массив
    
    ' чистим входную строку от лишних пробелов (на всякий случай)
    ' так и второй цикл короче, и нет необходимости проверки значений массива на Null
    Do
        ' заменяем двойные пробелы на одинарные
        strText = Replace(strText, "  ", " ")
        ' при необходимости повторяем цикл
    Loop While InStr(1, strText, "  ") > 0
    
    ' режим строку на массив по пробелам
    strArr() = Split(strText, " ")
    
    lngLb = LBound(strArr)
    lngUb = UBound(strArr)
    ' основной цикл добавления знаков "+"
    For i = lngLb To lngUb
        If IsNumeric(strArr(i)) Then strArr(i) = "+" & strArr(i)
    Next
    FormatNumberInTextB = Join(strArr, " ")
    Erase strArr()  ' удаляем массив из памяти
End Function
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.01.2012, 00:40
Помогаю со студенческими работами здесь

Написать процедуру расчета общей успеваемости студентов.
вот такая вот задача: Создать базу данных «Студенты» в СУБД Microsoft Access. Заполнить ее. Написать процедуру расчета общей...

Написать процедуру и процедуру-функцию по вычислению гипотенузы по двум катетам
Написать процедуру и процедуру-функцию по вычислению гипотенузы по двум катетам. Гипотенуза в формуле A = B + G Добавлено через 35...

Написать процедуру SortMKinds – процедуру сортировки массива типа string
Нужно написать процедуру SortMKinds – процедуру сортировки массива типа string, содержащего элементы m видов. Деление элементов на m видов...

написать процедуру
Написать процедуру которая нарисует на экране треугольник. входные параметры: x1,y1,x2,y2,x3,y3 - координаты точек ...

Написать процедуру
Написать процедуру, которая получает параметрами имя проекта и имя поставщика и выводит количество деталей которые поставил этот поставщик ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru