I’ve been working with SQL and Excel Macros, but I don’t know how to add text to a cell.
I wish to add the text "01/01/13 00:00"
to cell A1
. I can’t just write it in the cell because the macro clears the contents of the sheet first and adds the information afterwards.
How do I do that in VBA?
asked Dec 16, 2013 at 13:43
2
Range("$A$1").Value = "'01/01/13 00:00"
will do it.
Note the single quote; this will defeat automatic conversion to a number type. But is that what you really want? An alternative would be to format the cell to take a date-time value. Then drop the single quote from the string.
answered Dec 16, 2013 at 13:44
BathshebaBathsheba
231k33 gold badges359 silver badges477 bronze badges
3
You could do
[A1].Value = "'O1/01/13 00:00"
if you really mean to add it as text (note the apostrophe as the first character).
The [A1].Value
is VBA shorthand for Range("A1").Value
.
If you want to enter a date, you could instead do (edited order with thanks to @SiddharthRout):
[A1].NumberFormat = "mm/dd/yyyy hh:mm;@"
[A1].Value = DateValue("01/01/2013 00:00")
answered Dec 16, 2013 at 13:47
FlorisFloris
45.7k6 gold badges70 silver badges122 bronze badges
7
You need to use Range
and Valu
e functions.
Range
would be the cell where you want the text you want
Value
would be the text that you want in that Cell
Range("A1").Value="whatever text"
answered Mar 7, 2016 at 10:21
GarryGarry
611 silver badge1 bronze badge
You can also use the cell property.
Cells(1, 1).Value = "Hey, what's up?"
Make sure to use a .
before Cells(1,1).Value
as in .Cells(1,1).Value
, if you are using it within With
function. If you are selecting some sheet.
enamoria
8762 gold badges11 silver badges29 bronze badges
answered Dec 19, 2018 at 6:40
Skip to content
На чтение 2 мин. Просмотров 4.8k.
Что делает макрос: Бывают случаи, когда необходимо добавить текст в начало или конец ячеек в диапазоне. Например, вам может нужно добавить код города к набору телефонных номеров. Этот макрос демонстрирует, как можно автоматизировать задачи стандартизации данных, которые требуют добавления данных значений.
Содержание
- Как макрос работает
- Код макроса
- Как этот код работает
- Как использовать
Как макрос работает
Этот макрос использует два объекта Range переменных пройти через целевой диапазон, усиливая для каждого оператора, чтобы активировать каждую ячейку в целевом диапазоне.
Каждый раз, когда клетка активируется, макрокоманда прибавляет код города к началу значения ячейки.
Код макроса
Sub DobavitTekst() 'Шаг 1: Объявляем переменные Dim MyRange As Range Dim MyCell As Range 'Шаг 2: Сохранить книгу прежде,чем изменить ячейки? Select Case MsgBox("Перед изменением ячеек. " & _ "Сохранить книгу?", vbYesNoCancel) Case Is = vbYes ThisWorkbook.Save Case Is = vbCancel Exit Sub End Select 'Шаг 3: Определение целевого диапазона Set MyRange = Selection 'Шаг 4: Запускаем цикл по диапазону For Each MyCell In MyRange 'Шаг 5: Убедитесь, что ячейка имеет формат текста If Not IsEmpty(MyCell) Then MyCell = "(972) " & MyCell End If 'Шаг 6: Получите следующую ячейку в диапазоне Next MyCell End Sub
Как этот код работает
- Шаг 1 объявляет две переменные объекта Range.
- Мы должны сохранить книгу перед запуском макроса.
- Шаг 3 заполняет переменную MyRange с целевым диапазоном. В этом примере мы используем выбранный диапазон — диапазон, который был выбран в электронной таблице.
- Шаг 4 начинает цикл через каждую ячейку в целевом диапазоне.
- После того, как ячейка активируется, мы используем амперсанд (&), чтобы объединить код зоны с ячейкой. Если вам нужно добавить текст в конец значения ячейки, нужно просто поместить амперсанд и текст в конце. Например, MyCell = MyCell & «добавлен текст».
- Шаг 6 повторяет цикл, чтобы получить следующую ячейку. После просмотра всех ячеек в целевом диапазоне макрос заканчивается.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код.
Очень часто при работе с выгрузками данных из баз приходится упорядочивать и систематизировать информацию, соединять несколько текстов в один.
Например, существует перечень поставщиков сока для крупной компании. У каждого поставщика имеется несколько наименований продукции.
Нам необходимо выбрать и записать в одну строку все названия продукции, относящиеся к определенному поставщику, соединить их.
Для реализации такого действия необходимо воспользоваться сцепкой текста по заданным условиям, такой функции нет, поэтому создадим специальный макрос добавляющий функцию условной сцепки значений.
Чтобы добавить макрос, следует выполнить следующие действия:
- Войти в панель разработчика;
- Нажать «Просмотр кода»;
-
В окне project кликнуть правой кнопкой мыши и вставить модуль;
- Открыть просмотр кода нового модуля;
- Скопировать приведенный ниже код макроса VBA и вставить его в модуль;
- Сохранить файл.
Код макроса VBA :
Function Scepka(DiapazonScepki As Range, DiapazonPoiska As Range, Uslovie As String)
Dim Delitel As String, i As Long , OutText As String
‘назначаем переменные для работы макроса DiapazonScepki — это диапазон с текстом, который следует сцепить; DiapazonPoiska — это диапазон условий для сравнения; Uslovie — это то условие, которое мы ищем; Delitel — символ делителя.
Delitel = «, » ‘указываем разделитель (символ, который будет разделять сцепленный текст, можно поставить пробел или пустоту «» — тогда текст сольется в одно слово)
Scepka = CVErr(xlErrRef)
Exit Function
End If ‘если диапазоны с данными для проверки и для сцепки отличаются по длине — функция выдает ошибку и закрывается
For i = 1 To DiapazonPoiska.Cells.Count
If DiapazonPoiska.Cells(i) Like Uslovie And Len(DiapazonScepki.Cells(i)) > 0 Then OutText = OutText & DiapazonScepki.Cells(i) & Delitel
Next i ‘сверяем ячейки между собой и присваиваем переменной OutText подходящие по условиям текстовые значения. Для точного совпадения оператор Like следует заменить на знак «=».
Scepka = Left(OutText, Len(OutText) — Len(Delitel))
End Function
Теперь когда функция условной сцепки текста добавлена в книгу Excel при помощи макроса , ее можно использовать для обработки текста следующим образом:
- Поставить курсор в ячейку, предназначенную для внесения соединенного (сцепленного) текста.
- Активировать мастер функций.
-
Среди функций «Определенных пользователем» выбрать Scepka.
- В поле DiapazonScepki внести адреса ячеек, которые будут соединяться
- В поле DiapazonPoiska внести адреса ячеек, по которым будет произведен поиск (сравнение).
-
В поле Uslovie внести условие поиска.
- Нажать «Ок»
Похожее:
Иногда вам может потребоваться добавить один и тот же конкретный текст в начало или конец всех ячеек в выделенном фрагменте. Если вы добавляли текст в каждую ячейку вручную по одной, это должно занять много времени. Есть способы попроще? Да, есть много простых приемов добавления одного и того же текста в начало или конец всех ячеек в выделенном фрагменте.
Добавить указанный текст в начало / конец всех ячеек с формулами
Добавить указанный текст в начало / конец всех ячеек с помощью VBA
Добавить указанный текст в начало/конец всех эллов с помощью Kutools for Excel
Добавить указанный текст в указанную позицию всех ячеек с помощью Kutools for Excel
Добавить указанный текст в начало / конец всех ячеек с формулами
Есть две формулы для добавления указанного текста в начало или конец всех выбранных ячеек в Microsoft Excel.
Метод 1: & формула
Введите = «Класс A:» & A2 в ячейке C2, а затем перетащите маркер заполнения вниз в ячейки, к которым вы хотите применить эту формулу. И конкретный текст был добавлен перед всеми ячейками, см. Снимок экрана:
Метод 2: формула конкатенации
Введите = Concatenate («Класс A:»; A2) в ячейке C2, а затем перетащите и скопируйте эту формулу в ячейки, которые вы хотите использовать, см. снимок экрана:
Ноты:
1. Если вы хотите добавить другой указанный текст в каждую ячейку, просто замените Класс A: с вашим текстом в обеих формулах.
2. Формулы = A2 & «: класс A» и = Concatenate (A2; «: класс A») добавлю : Класс А в конце ячеек.
3. Обе формулы не изменяют содержимое выделения напрямую.
Добавить указанный текст в начало / конец всех ячеек с помощью VBA
Если вы хотите добавить указанный текст в каждую ячейку выделенного фрагмента, следующий макрос VBA упростит вашу работу.
1. Выберите диапазон, в который вы добавите указанный текст;
2. Удерживайте другой + F11 ключи в Excel, и он открывает Microsoft Visual Basic для приложений окно.
3. Нажмите Вставить > Модулии вставьте следующий код VBA в окно модуля.
VBA: добавление указанного текста в начало каждой ячейки:
Sub AppendToExistingOnLeft()
Dim c As Range
For Each c In Selection
If c.Value <> "" Then c.Value = "CN- " & c.Value
Next
End Sub
4, нажмите F5 ключ для запуска этого макроса. И ко всем ячейкам будет добавлено значение CN- перед содержимым ячейки.
Ноты: 1. Чтобы добавить определенный текст в конец каждой ячейки, примените следующий код VBA.
VBA: добавление указанного текста в конец каждой ячейки:
Sub AppendToExistingOnRight()
Dim c as range
For each c in Selection
If c.value <> "" Then c.value = c.value & "-CN"
Next
End Sub
И вы получите следующий результат:
2. вы можете изменить переменную «CN-» или «-CN«из приведенных выше кодов.
Добавить указанный текст в начало/конец всех ячеек с помощью Kutools for Excel
Kutools for Excel‘s Add Text инструмент поможет вам быстро добавить указанный текст в начало или конец каждой ячейки в выделенном фрагменте.
После установки Kutools for Excel, пожалуйста, сделайте следующее:(Бесплатная загрузка Kutools for Excel Сейчас!)
1. Выберите диапазон, в который вы добавите указанный текст.
2, Нажмите Кутулс > Text > Add Text…. Смотрите скриншот:
3. В Add Text диалоговом окне введите текст, который необходимо добавить в поле Text пунктом.
(1.) Если вы проверите Before first character из Position раздел, и конкретный текст будет добавлен перед всеми значениями ячеек, см. снимок экрана:
(2.) Если вы проверите After last character из Position раздел, и конкретный текст будет добавлен в конце значений ячеек, см. снимок экрана:
Ноты:
1. Kutools for Excel‘s Add Text инструмент позволяет предварительно просмотреть изменения в выделении в разделе Предварительный просмотр.
2. Если вы проверите Skip non-text cells вариант, этот инструмент не будет добавлять указанный текст в ячейки с нетекстовым содержимым.
Добавить указанный текст в указанную позицию всех ячеек с помощью Kutools for Excel
Применение Kutools for Excel‘s Add Text функция, вы можете не только добавить указанный текст в начало или конец ячеек, но также вы можете добавить указанный текст в указанное положение ячеек.
После установки Kutools for Excel, пожалуйста, сделайте следующее:(Бесплатная загрузка Kutools for Excel Сейчас!)
1. Выберите диапазон, в который нужно добавить текст, и нажмите Кутулс > Text > Add Text.
2, Add Text Появится диалоговое окно, введите указанный текст и укажите определенную позицию, в которую вы хотите вставить текст в поля. Смотрите скриншот:
Здесь я набираю 3 в Specify текстовое поле означает добавление текста после третьего символа строки.
3. Нажмите Ok or Apply. Указанный текст был добавлен в указанную позицию ячеек. Смотрите скриншот:
Наконечник:
(1) В Specify текстовое поле, вы можете вводить числа через запятую, чтобы добавить текст в несколько позиций одновременно.
(2) Если вы хотите добавить текст перед каждой прописной буквой, 1st letter is uppercase вариант в Add Text утилита может вам помочь.
Кроме того, вы можете добавлять текст перед каждой строчной буквой или каждой цифровой буквой.
Нажмите «Загрузить и получить бесплатную пробную версию». Kutools for Excel Сейчас !
Демонстрация: добавление текста в начало или конец всех ячеек
Относительные статьи:
- Добавить строки текста в несколько ячеек
- Добавление / вставка ведущих нулей к числам или тексту
- Добавить / вставить префикс или суффикс к выбранным ячейкам, строкам и столбцам
- Добавить символ процента для нескольких чисел в ячейках
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Группа: Пользователи Ранг: Новичок Сообщений: 13
Замечаний: |
Добрый день, неоднократно обращался к этоу замечательному форуму, но вот опять вынужден обратиться, нужен очень простой макрос который будет вставлять нужное слово или текст в активную ячейку, не могу сам найти , все перерыл , помогите пожалуста !!!
Всем бобра
Сообщение отредактировал Axeq — Пятница, 08.04.2016, 10:49
Работа с буфером обмена в VBA Excel: копирование и вставка ячеек, копирование текста из переменной, очистка буфера обмена. Объект DataObject. Примеры.
Копирование и вставка ячеек
Копирование содержимого и форматов ячеек (диапазона) в буфер обмена осуществляется методом Range.Copy, а вставка – методом Worksheet.Paste:
‘Копирование одной ячейки в буфер обмена Range(«A10»).Copy Cells(10, 1).Copy ‘Копирование диапазона ячеек в буфер обмена Range(«B8:H12»).Copy Range(Cells(8, 2), Cells(12, 8)).Copy ‘Вставка ячейки (диапазона) из буфера обмена на рабочий лист ActiveSheet.Paste Range(«A20») ActiveSheet.Paste Cells(20, 1) |
При вставке диапазона ячеек из буфера обмена на рабочий лист достаточно указать верхнюю левую ячейку места (диапазона) вставки.
Для вставки из буфера обмена отдельных компонентов скопированных ячеек (значения, формулы, примечания и т.д.), а также применения к диапазону транспонирования или вычислений, используется метод Range.PasteSpecial (специальная вставка).
Буфер обмена и переменная
Передача текста между переменной и буфером обмена в VBA Excel осуществляется с помощью объекта DataObject. Стоит иметь в виду, что на некоторых компьютерах DataObject может некорректно работать при открытом окне проводника.
Объект DataObject
DataObject – это область временного хранения форматированных фрагментов текста, используемая в операциях переноса данных.
Подробнее об элементе DataObject вы можете прочитать на сайте разработчиков.
Методы объекта DataObject:
Метод | Описание |
---|---|
GetFromClipboard | Копирует данные из буфера обмена в DataObject |
GetText | Извлекает текстовую строку из объекта DataObject в указанном формате |
PutInClipboard | Перемещает данные из DataObject в буфер обмена |
SetText | Копирует текстовую строку в DataObject, используя указанный формат |
Копирование текста из переменной в буфер обмена
Sub Primer2() Dim s As String, myData As New DataObject s = «Копирование текста из переменной в буфер обмена» ‘Копируем текст из переменной в DataObject myData.SetText (s) ‘Перемещаем текст из DataObject в буфер обмена myData.PutInClipboard ‘Проверяем содержимое буфера обмена ActiveSheet.Paste Range(«A1») End Sub |
Копирование текста из буфера обмена в переменную
Sub Primer3() Dim s As String, myData As New DataObject Range(«A1») = «Копирование текста из буфера обмена в переменную» ‘Копируем данные из ячейки в буфер обмена Range(«A1»).Copy ‘Копируем данные из буфера обмена в DataObject myData.GetFromClipboard ‘Извлекаем текст из объекта DataObject и присваиваем переменной s s = myData.GetText ‘Проверяем содержимое переменной s MsgBox s End Sub |
Очистка буфера обмена
Специального метода для очистки буфера обмена в VBA Excel нет. Для решения этой задачи можно использовать выход из режима вырезания-копирования:
Application.CutCopyMode = False |
Следующий пример демонстрирует вставку скопированной ячейки "A1"
в ячейки "A2"
и "A3"
и отсутствие вставки в ячейки "A4"
и "A5"
после строки Application.CutCopyMode = False
:
Sub Primer4() Range(«A1») = «Очистка буфера обмена» Range(«A1»).Copy ActiveSheet.Paste Range(«A2») ActiveSheet.Paste Range(«A3») Application.CutCopyMode = False On Error Resume Next ActiveSheet.Paste Range(«A4») ActiveSheet.Paste Range(«A5») End Sub |
Оператор On Error Resume Next
необходим для обработки (пропуска) ошибки, возникающей при вставке из пустого буфера обмена.
Функции для работы с буфером обмена
В некоторых системах, начиная с Windows 8, метод DataObject.PutInClipboard не работает правильно: если открыт хотя бы один экземпляр Проводника (папка), в буфер обмена записываются два квадратика. Следующие функции должны решить эту проблему:
‘Функция записи текста в буфер обмена Function SetClipBoardText(ByVal Text As Variant) As Boolean SetClipBoardText = CreateObject(«htmlfile»).parentWindow.clipboardData.SetData(«Text», Text) End Function ‘Функция вставки текста из буфера обмена Function GetClipBoardText() As String On Error Resume Next GetClipBoardText = CreateObject(«htmlfile»).parentWindow.clipboardData.GetData(«Text») End Function ‘Функция очистки буфера обмена Function ClearClipBoardText() As Boolean ClearClipBoardText = CreateObject(«htmlfile»).parentWindow.clipboardData.clearData(«Text») End Function |
Пример использования функций для работы с буфером обмена:
Sub Primer() Dim s As String s = «Копирование текста из переменной в буфер обмена» ‘Копируем текст в буфер обмена SetClipBoardText (s) ‘Вставляем текс из буфера обмена в ячейку «A1» Range(«A1») = GetClipBoardText ‘Очищаем буфер обмена, если это необходимо ClearClipBoardText End Sub |