Последние записи
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
- wprintf как напечатать кириллицу
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
16th
Июл
Как создать макрос, который бы вставлял слово по первой набранной букве?
Posted by Chas under Basic
Например, в определенном месте текста начинаем писать слово «заочник», и если набрали только первые буквы «за», вставляется слово целиком
Скрипт
Sub Procedure_1()
Dim myWords(1 To 2) As String
Dim mySelection As String
Dim myLen As Long
Dim i As Long
'Добавляем слова в массив. Массив нужен, чтобы
'использовать цикл.
myWords(1) = "текст"
myWords(2) = "text"
'Помещаем в переменную фрагмент слова, который мы ввели в документ.
'Переменную используем, чтобы код быстрее работал,
'чтобы каждый раз в цикле не делать одно и то же - не
'узнавать какое у нас слово набрано.
'Selection - это фрагмент документа, где находится курсор.
'Words(1) - это первое слово в том месте, где находится курсор.
'Слово берётся справа от курсора, поэтому в курсор не
'попадает наш текст.
'В данном случае указывать порядковый номер слова не имеет смысла,
'т.к. курсор может быть только в одном слове. Несколько слов может
'быть в объекте "Selection", если выделен фрагмент документа.
'Но для написания кода в скобках нужно указывать порядковый
'номер слова.
'Previous - это предыдущее слово.
'Text - это текст, который содержится в слове.
mySelection = Selection.Words(1).Previous.Text
'Помещаем в переменную "myLen" количество символов,
'которое содержится в нашем фрагменте.
myLen = Len(mySelection)
'С помощью цикла с "i" просматриваем все слова из массива "myWords".
For i = 1 To UBound(myWords) Step 1
'Если фрагмент слова из документа совпадает
'с началом слова из массива.
If Left(myWords(i), myLen) = mySelection Then
'Вставляем в документ остальную часть слова.
'С помощью "Mid" берём из элемента массива нужный фрагмент текста.
'myLen + 1 - это порядковый номер символа,
'с которого нужно брать текст.
'Если порядковый номер будет указан больше, чем
'количество символов в строке, ошибки не произойдёт,
'просто ничего не произойдёт.
'У "Mid" есть ещё один параметр - количество символов,
'которое нужно взять. Если этот параметр не указыать,
'то берутся все символы до конца строки.
Selection.TypeText Text:=Mid(myWords(i), myLen + 1)
'Выходим из процедуры, т.к. задача выполнена.
Exit Sub
End If
Next i
End Sub
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)