Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
28.03.2024, 17:10:56

Войти
Название темы должно отражать её содержание.
Темы типа "ПОМОГИТЕ!!!", "Срочно!", "Не получается сделать", "Нужна помощь" и т.п. будут удаляться без объяснения причин
33 233 Сообщений в 5 454 Тем от 6 750 Пользователей
Последний пользователь: Alex1210
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Как макросом отформатировать отдельные значения после сцепить
Страниц: [1]   Вниз
Печать
Автор Тема: Как макросом отформатировать отдельные значения после сцепить  (Прочитано 6439 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mihalych
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 6


Просмотр профиля E-mail
« : 15.09.2017, 08:24:28 »

Добрый день.

Есть необходимость сцепить в одну ячейку описание и числовые значения, причем числовые значения необходимо выделить жирным и цветом. При сцепке форматирование у всей ячейке становится одинаковое http://prntscr.com/glcx12.
Насколько я поискал, стандартными средствами ексел решить невозможно, единственный выход это макрос на VBA. Я с VBA вообще ни когда не сталкивался, а решить локальную задачу нужно.

Подскажите пожалуйста, как сделать чтоб после сцепки строка выглядела так http://prntscr.com/glcx6i
пример файла прилагаю.
« Последнее редактирование: 15.09.2017, 13:27:01 от vikttur » Записан
kuklp
Старожил
****

Репутация: +32/-0
Офлайн Офлайн

Сообщений: 438

4190413
Просмотр профиля E-mail
« Ответ #1 : 15.09.2017, 12:54:31 »

Если хотите, чтоб в ячейке оставалась формула, то никак. Если строку формировать макросом, то можно.
Записан

kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Mihalych
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 6


Просмотр профиля E-mail
« Ответ #2 : 15.09.2017, 13:17:23 »

По сути формула не нужна, после формирования строки форимируется PDF документ,
пускай строчка будет собираться макросом, я ведь правильно понимаю что если ее нужно будет сформировать заново (когда поменялись вводные данные) то надо просто перезапустить макрос
« Последнее редактирование: 15.09.2017, 13:26:44 от vikttur » Записан
kuklp
Старожил
****

Репутация: +32/-0
Офлайн Офлайн

Сообщений: 438

4190413
Просмотр профиля E-mail
« Ответ #3 : 15.09.2017, 13:59:44 »

то надо просто перезапустить макрос
не надо. В модуль листа:
Код: (vb)
Private Sub Worksheet_Change(ByVal Target As Range)
If Application.CountA([c2:c4]) <> 3 Then Exit Sub
    Dim n&, l&, i&, b
    Application.EnableEvents = 0
    b = Array([c4].Value, Format([C2], "0.00"), Format([C3], "0.00"), Format([C4 * C2 * C3], "0.00"))
    With [b7]
        .Value = "Общее количество окон " & [c4] & "шт.; Размер окна " & b(1) & "м х " & b(2) & "м. Общая площадь остекления " & b(3) & "кв.м"
        n = 1
        For i = 0 To UBound(b)
            l = Len(b(i))
            n = InStr(n + 1, .Value, b(i))
            Do While n
                .Characters(n, l).Font.Color = vbRed
                .Characters(n, l).Font.Bold = -1
                n = InStr(n + 1, .Value, b(i))
            Loop
        Next
    End With
    Application.EnableEvents = -1
End Sub

Записан

kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Mihalych
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 6


Просмотр профиля E-mail
« Ответ #4 : 15.09.2017, 15:50:34 »

Супер! kuklp, Спасибо.
Буду разбирать код, мне ведь таких строчек нужно будет несколько.

PS. прошу не закрывать пока тему, вдруг появятся вопросы по коду, с VBA ранее не работал

Записан
Mihalych
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 6


Просмотр профиля E-mail
« Ответ #5 : 16.09.2017, 15:00:04 »

Брать данные с другого листа получилось.

Подскажите пожалуйста в какой части кода формировать сбор информации 2,3,4-ой строки
какие строки продублировать?

Записан
kuklp
Старожил
****

Репутация: +32/-0
Офлайн Офлайн

Сообщений: 438

4190413
Просмотр профиля E-mail
« Ответ #6 : 16.09.2017, 20:26:12 »

Не понял вопроса. О каких строках речь?
Записан

kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Mihalych
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 6


Просмотр профиля E-mail
« Ответ #7 : 16.09.2017, 20:41:19 »

В итоговом документе макрос будет собирать больше данных, с разных листов
я имею в виду 2,3,4 строки вот эти http://prntscr.com/glxqll

я предполагал что на основе одной строки сделаю следующие, но похоже для меня не все так однозначно, как сделать следующие строки

В итоге в данной конкретной задаче будет 6 строк в которые будут собираться данные из с 14 значений
Записан
Mihalych
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 6


Просмотр профиля E-mail
« Ответ #8 : 19.09.2017, 19:47:51 »

Уважаемые гуру VBA, сможете помочь с кодом макроса и сбором значений не одной, а 6-ти строк из последнего примера?
сам не могу разобраться как 1 строку увеличить на несколько и как ввести 14 переменных
Записан
kuklp
Старожил
****

Репутация: +32/-0
Офлайн Офлайн

Сообщений: 438

4190413
Просмотр профиля E-mail
« Ответ #9 : 20.09.2017, 07:49:01 »

Запишите макросом формирование строк(да хоть формулами) и потом вызывайте это:
Код: (vb)
Sub www()
    Dim r As Range, i&
    With CreateObject("VBScript.RegExp")
        .Global = True: .Pattern = "\d[\d,]*"
        For Each r In [b6:b11].Cells
            r.Value = r.Value
            r.Font.ColorIndex = xlAutomatic
            With .Execute(r)
                For i = 0 To .Count - 1
                    With r.Characters(.Item(i).FirstIndex + 1, Len(.Item(i)))
                    .Font.Color = vbRed: .Font.Bold = -1
                    End With
                Next
            End With
        Next
    End With
End Sub
Записан

kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru