Цветной текст в квадратных скобках не расскрашивается при изменении ячейки
Цель — что бы слово в квадратных скобках расскаршиваль в красный цвет. Что не так в коде? Сама функция не отрабатывает на изменения в странице или ошибка в коде? Никаких ошибок нет, в тоже время ничего не раскрашивается, после того как набираю слово в скобках
Private Sub Worksheet_Change(ByVal Target As Range) Dim Text As String Dim Index1 As Long Dim Index2 As Long Text = Target.Text Index2 = 1 Do Index1 = InStr(Index2, Text, "[") If Index1 = 0 Then Exit Do Index2 = InStr(Index1, Text, "]") If Index2 = 0 Then Exit Do Target.Characters(Index1, Index2 - Index1 + 1).Font.Color = &HFF Loop End Sub
Отслеживать
задан 26 мар 2021 в 9:25
325 1 1 серебряный знак 15 15 бронзовых знаков
VBA в книгу добавляю так — на Страницу1 — Insert Module и туда вставляю код.
26 мар 2021 в 9:27
Нормальный код, должен работать при ручном вводе строки с квадратными скобками (вручную, по одной ячейке за раз!). При обработке целого диапазона (например, вставка значений в несколько ячеек) — выдаст ошибку, свойство .Text есть у ячейки, но не у диапазона. И раскрашиваться будут только текстовые строки, а не результат функции. То есть =»Дальше красный [здесь красный] и опять черный» покрашен не будет
26 мар 2021 в 9:52
Код в модуле нужного листа? Работа макросов разрешена? Совет (к вопросу не относится): добавить диапазон срабатывания макроса (не на всем же листе надо красить символы)
26 мар 2021 в 10:13
Про excel в целом — макросы разрешены, проверил на примере другого макроса. Про сам код, проверял так — ввожу в ячейку А1 [Hello] и после перехожу на др ячейку. ничего не происходит. Я так понял, этот код — это не совсем то что мне нужно. А нужно мне: [Hello] word в одной ячейки и только внутри скобок вместе со скобками слово было красным.
26 мар 2021 в 11:27
>> ввожу в ячейку А1 [Hello] и после перехожу на др ячейку. ничего не происходит — код отрабатывает нормально, проверено. При переходе на другую ячейку срабатывает событие и если в измененной ячейке есть текст, обрамленный прямыми скобками, он будет окрашен
Удаление обычной или концевой сноски либо разделителя
Добавить сноски в Word совсем не сложно. Удалить один, некоторые или даже все еще проще. Вы также можете удалить линию, которая отделяет обычные и концевые сноски от основного текста.
Важно: Удалять нужно не содержимое сноски, а ее номер или знак (в основном тексте). При этом Word автоматически обновит нумерацию остальных сносок.
Удаление сноски
Вот пример сноски, которая находится внизу страницы:

Чтобы удалить обычную сноску (в нижней части страницы), удалите число 1 в тексте. После этого сноска исчезнет. Эту задачу можно выполнить и другим способом: щелкните внизу страницы сноску, которую хотите удалить, правой кнопкой мыши, выберите команду Перейти к концевой сноске и удалите ее номер.
Удаление концевой сноски
Удаление концевых сносок выполняется так же, как и для обычных.

Чтобы удалить концевую сноску, удалите символ i в основном тексте (в розовой рамке на представленном выше рисунке). Кроме того, если вы нашли концевую сноску, вы можете щелкнуть ее правой кнопкой мыши, выбрать Перейти к концевой сноске и удалить число.
Удаление всех обычных и концевых сносок из документа
Для поиска и удаления всех обычных и концевых сносок используйте функцию поиска и замены.
- Поместите курсор в верхней части документа и откройте диалоговое окно Расширенный поиск и замена.
- В Word 2013 или Word 2016 нажмите CTRL+H.
- В Word 2016 для Mac, в меню Правка выберите найти >расширенныйпоиск и замена .
- В диалоговом окне Найти и заменить откройте вкладку Заменить.
- В поле Найти введите ^f для обычной или ^e для концевой сноски. Чтобы ввести эти символы, также можно нажать Больше, чтобы развернуть диалоговое окно, щелкнуть Специальный и выбрать в списке вариант Знак концевой сноски или Знак сноски. В Word 2016 для Mac щелкните стрелку в нижней части диалогового окна Поиск и замена, чтобы отобразить все параметры.
- Убедитесь, что поле Заменить на пустое, а затем нажмите кнопку Заменить все.
Удаление или изменение разделителя обычной или концевой сноски
Вы можете удалить или изменить линию, которая отделяет обычные и концевые сноски от основного текста.
- Откройте вкладку Вид и в группе Представления выберите вариант Черновик.
- Дважды щелкните любую обычную или концевую сноску в основном тексте. Внизу документа появится область Сноски.
- Вы можете изменить цвет или стиль разметки, выбрав параметры на вкладке Главная. Чтобы удалить их, в списке Сноски выберите в списке Сноски кнопку «Сноска», а затем выберите и удалите линию. С помощью вкладки Вид вернитесь в режим чтения, разметки или веб-документа.
Замена текста в скобках на пробел
Помогите, как заменить в Word 2003 много различных предложений, которые находятся внутри скобок, на пробел? Например: а- (перед гласными ан-; греч. a-, an-); или Аарона симптом (Ch. D. Aaron, 1866—1951, амер. врач). Вот то, что внути скобок и надо заменить на пробел.
Такую задачу можно решить вручную с использованием диалогового окна «Найти и заменить», либо посредством макроса (код ниже).
Чтобы заменить текст в скобках на пробелы через диалоговое окно «Найти и заменить», откройте это окно («Ctrl+H»).
В поле Найти введите такое выражение: \(*\) ,
а в поле Заменить: ( ) .
Затем установите флажок на опции «Подстановочные знаки» и нажмите кнопку Заменить все .
Кроме того, можете воспользоваться следующим макросом:
Sub delTextBetweenBrackets() 'заменяем текст в скобках на пробел в скобках With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Text = "\(*\)" .Replacement.Text = "( )" .Forward = True .Wrap = wdFindContinue .MatchWildcards = True .Execute Replace:=wdReplaceAll End With End Sub
Еще записи по вопросам использования Microsoft Word:
- 10 вопросов и ответов по редактору Word (1 часть)
- 3 способа очистки списка недавно открытых документов
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 2007: смена формата сохранения файла
- Word 97 — решение проблемы с отображением символов на линейке
- Word 97. Слияние документов как один из способов упростить свою работу
- Абзац с цветным фоном
- Автозаполняемые колонтитулы
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение документа при его закрытии
- Автотекст с последовательной нумерацией
- Автоформат документов
- Белый текст на синем фоне в Word 2007
- Буквица
- Быстрая смена ориентации страниц документа
- Быстрое изменение стиля форматирования текста
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрое удаление границ у таблицы
- Быстрый ввод текста с помощью команды =rand()
JavaScript | Как удалить скобки и всё что внутри скобок в строке?
Нам нужно удалить часть строки, которая находится внутри круглых скобок вместе со скобками. Как это сделать?
Решение
Нам поможет регулярное выражение. Мы сейчас его напишем.
Определяем регулярное выражение:
В нашем случае в строке всего две круглые скобки, поэтому мы можем не использовать никаких флагов для регулярного выражения.
Мы ищем «начальный» символ круглой скобки в строке ( . Тут проблема в том, что круглые скобки в регулярных выражениях являются служебными символами Если мы не хотим использовать их «служебно», то нам нужно экранировать круглую скобку, чтобы она была воспринята регулярным выражением как символ какой-то строки.
Экранируем символ строки — круглую скобку из строки (
\(
Мы использовали обратную косую линию для экранирования служебного символа скобки.
Ещё мы ищем «конечный» символ круглой скобки в строке ) . Его тоже нужно экранировать подобным образом:
\)
Мы не знаем сколько символов может быть между круглыми скобками в строке, а значит нам нужно воспользоваться точкой . и квантификатором + :
.+
Точка . означает один какой-то символ, а квантификатор + означает, что таких точек (символов) может быть от 1 до бесконечности. Регулярное выражение само решит сколько символов упрётся в конечную скобку.
Соберём всю конструкцию:
/\(.+\)/
Создадим переменную телевизора и поместим в неё результат замены строки нашим регулярным выражением:
var tel = stroka.replace(/\(.+\)/,'')

Мы успешно удалили содержимое внутри круглых скобок, но в ответе получили строку с двумя пробелами подряд. Для решения этой проблемы можно дописать одну точку в наше выражение:
var tel = stroka.replace(/.\(.+\)/,'')

var tel = stroka.replace(/\(.+\)./,'')

Информационные ссылки
Стандарт ECMAScript — Раздел «22.2.2.3 Disjunction» — https://tc39.es/ecma262/#sec-disjunction
Вам также может понравиться
![]()
Опубликовано 15.09.2021
ECMAScript | Блок данных | Тип спецификации
Тип спецификации Блока Данных (Data Block) используется для описания отдельной и изменяемой последовательности числовых значений байтового (8-битного) размера. Байтовое значение (byte value) […]

Опубликовано 10.05.2021
JavaScript | Функции (Function)
Функции в JavaScript — это маленькие программки, которые выполняют разные специфичные задачи. Что нужно знать про функции? Условно все функции можно […]

Опубликовано 06.03.2021
JavaScript | Как проверить «дырку» в массиве?
Как узнать, есть ли неопределённые элементы в массиве? У нас есть массив: var massiv = [1,,2,3] Мы видим, что значения элемента […]