Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2011, 00:34   #1
Петро1
Пользователь
 
Регистрация: 25.02.2011
Сообщений: 23
По умолчанию Копировать макросом по цвету текста

Здравствуйте ув. форумчане снова. Создаю ещё одну тему т.к. трудно найти похожие примеры. Смысл в чём, нужен такой макрос, чтоб находил ячейку с красным текстом и копировал её содержимое в соседнюю ячейку справа. И при том что в одной книге много разных листов но везде одинаковая задача. Прирепляю пример. Вообщем на листе1 так как есть, а на листе2 так как надо. Подскажите пожалуйста как быть.
Вложения
Тип файла: rar Пример2.rar (1.8 Кб, 14 просмотров)
Петро1 вне форума Ответить с цитированием
Старый 25.02.2011, 06:08   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите пример во вложении. Сделано для столбца "A" активного листа. Добавьте цикл по требуемым листам и подставьте требуемый диапазон для поиска "красных" значений.
P.S. В Excel 2007 лучше воспользоваться автофильтром по цвету.
Вложения
Тип файла: rar Пример2_2.rar (6.9 Кб, 25 просмотров)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 25.02.2011 в 06:21.
SAS888 вне форума Ответить с цитированием
Старый 25.02.2011, 10:21   #3
Петро1
Пользователь
 
Регистрация: 25.02.2011
Сообщений: 23
По умолчанию

Отлично, спасибо. А на счёт задать цикл для требуемых листов, тут проблемка. Я в програмировании не очень, не подскажите каким образом это можна осуществить?
В принцыпе, мне нужно проделать такую манипуляцию со всеми листами в открытой книге.

Последний раз редактировалось Петро1; 25.02.2011 в 10:39.
Петро1 вне форума Ответить с цитированием
Старый 25.02.2011, 18:03   #4
Петро1
Пользователь
 
Регистрация: 25.02.2011
Сообщений: 23
По умолчанию

Люди добрые, мой предыдущий пост всё-ещё актуален. Помогите кто чем может
Петро1 вне форума Ответить с цитированием
Старый 25.02.2011, 18:10   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Код:
Sub Main()
    Dim i As Long, x As Range, y As Range, sh as Object : Application.ScreenUpdating = False
'Задайте требуемый диапазон x для поиска "красных" значений.
'Для примера, зададим столбец "A".
For Each sh In Sheets
    Set x = Intersect(sh.UsedRange, sh.[A:A])
    For Each y In x
        If y <> "" Then If y.Font.Color = vbRed Then y.Copy y.Offset(, 1)
    Next
Next
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 25.02.2011 в 18:22.
Hugo121 вне форума Ответить с цитированием
Старый 25.02.2011, 18:35   #6
Петро1
Пользователь
 
Регистрация: 25.02.2011
Сообщений: 23
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Код:
Sub Main()
    Dim i As Long, x As Range, y As Range, sh as Object : Application.ScreenUpdating = False
'Задайте требуемый диапазон x для поиска "красных" значений.
'Для примера, зададим столбец "A".
For Each sh In Sheets
    Set x = Intersect(sh.UsedRange, sh.[A:A])
    For Each y In x
        If y <> "" Then If y.Font.Color = vbRed Then y.Copy y.Offset(, 1)
    Next
Next
End Sub
Отлично, огромное спасибо!
Петро1 вне форума Ответить с цитированием
Старый 25.02.2011, 19:11   #7
Петро1
Пользователь
 
Регистрация: 25.02.2011
Сообщений: 23
По умолчанию

И все же ещё один вопрос.
В примере понятнее, вообщем есть названия разделов красными буквами под ними описание. Там где разделы пустые (без товара ниже), их нужно удалить. Вообщем принцип такой, макрос находит красными буквами название раздела, если ниже снова название раздела, то первое он удаляет (всю строчку вместе с названием). В общем в примере понятние.
Вложения
Тип файла: rar Пример3_1.rar (1.9 Кб, 11 просмотров)
Петро1 вне форума Ответить с цитированием
Старый 26.02.2011, 09:20   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Например, так:
Код:
Sub Main()
    Dim i As Long, x As Range, sh As Worksheet: Application.ScreenUpdating = False
    For Each sh In Sheets
        For i = 2 To sh.Cells(Rows.Count, 1).End(xlUp).Row
            If sh.Cells(i, 1) <> "" Then
                If sh.Cells(i, 1).Font.Color = vbRed Then
                    If sh.Cells(i + 1, 1).Font.Color = vbRed Then
                        If x Is Nothing Then Set x = sh.Cells(i, 1) Else Set x = Union(x, sh.Cells(i, 1))
                    Else
                        sh.Cells(i, 1).Copy sh.Cells(i, 1).Offset(, 1)
        End If: End If: End If: Next
        If Not x Is Nothing Then x.EntireRow.Delete
        Set x = Nothing
    Next
End Sub
Пример во вложении. Откройте файл и запустите макрос "Main".
Вложения
Тип файла: rar Пример3_2.rar (5.9 Кб, 21 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 26.02.2011, 14:36   #9
Петро1
Пользователь
 
Регистрация: 25.02.2011
Сообщений: 23
По умолчанию

SAS888 огромнейшее спасибо, как жить сразу стало легче.
Петро1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копировать с разных листов макросом Петро1 Microsoft Office Excel 15 26.02.2011 23:49
вставка текста и нумерации макросом kcgmizin Microsoft Office Word 1 24.10.2010 23:30
Замена текста в автофигурах макросом xamillion Microsoft Office Excel 5 11.09.2009 08:56
Как копировать URL адрес из ячейки в другую ячейку (макросом). AlexDoom Помощь студентам 1 09.03.2009 10:59
Копировать значения ячеек макросом torus Microsoft Office Excel 1 09.11.2008 00:15