Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как пробежаться по всем форматам ячеек двух листов? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как пробежаться по всем форматам ячеек двух листов? (Макросы/Sub)
Как пробежаться по всем форматам ячеек двух листов?
t330 Дата: Суббота, 18.01.2020, 22:58 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 147
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Всем привет!

Имеется два листа с таблицами. Предполагается, что форматы (не значения , а именно форматы ) ячеек с одинаковым адресом в двух листах должны совпадать.
Подскажите пожалуйста как взять все форматы ячеек из листа "Прав" и сравнить с форматами ячеек из листа "Неправ" и вывести в новом листе , те адреса ячеек , которые в обоих листах имеют разное форматирование (размер шрифта, тип границ, числи или текст и тд)...
При этом, нужно сравнивать только те форматы, которые используются при копировании форматирования ячеек с использованием "кнопки с кисточкой" в панели инструментов Экселя...

Чтобы узнать какие форматы в ячейке А1 я попытался использовать [vba]
Код
Debug.Print Range("A1").value(11)
[/vba] , но это выражение возвращает весь список форматов ячейки А1 в XML виде, где указано даже наименование Листа...
Но как из этого текста XML вытянуть именно ,те параметры форматирования ячейки, которые используются Экселем , когда копируешь форматы одной ячейки в другую ячейку на другом листе с использованием "кнопочки с кисточкой" на панели инструментов и сравнить эти форматы с ячейкой А1 из другого листа?

То есть, как можно найти различие в форматах, которые копируются через "кнопочку с кисточкой", для ячеек с одинаковыми адресом в разных листах и вывести адреса несовпадающих по форматированию ячеек в новый лист ?
К сообщению приложен файл: 6535848.xlsm (18.5 Kb)
 
Ответить
СообщениеВсем привет!

Имеется два листа с таблицами. Предполагается, что форматы (не значения , а именно форматы ) ячеек с одинаковым адресом в двух листах должны совпадать.
Подскажите пожалуйста как взять все форматы ячеек из листа "Прав" и сравнить с форматами ячеек из листа "Неправ" и вывести в новом листе , те адреса ячеек , которые в обоих листах имеют разное форматирование (размер шрифта, тип границ, числи или текст и тд)...
При этом, нужно сравнивать только те форматы, которые используются при копировании форматирования ячеек с использованием "кнопки с кисточкой" в панели инструментов Экселя...

Чтобы узнать какие форматы в ячейке А1 я попытался использовать [vba]
Код
Debug.Print Range("A1").value(11)
[/vba] , но это выражение возвращает весь список форматов ячейки А1 в XML виде, где указано даже наименование Листа...
Но как из этого текста XML вытянуть именно ,те параметры форматирования ячейки, которые используются Экселем , когда копируешь форматы одной ячейки в другую ячейку на другом листе с использованием "кнопочки с кисточкой" на панели инструментов и сравнить эти форматы с ячейкой А1 из другого листа?

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

Автор - t330
Дата добавления - 18.01.2020 в 22:58
Pelena Дата: Воскресенье, 19.01.2020, 09:41 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19161
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Если форматы копируются через
"кнопочку с кисточкой"
то различий быть не должно.
Какова дальнейшая цель этих манипуляций?
Если надо привести формат листа Неправ к формату Прав, достаточно выделить столбцы на листе Прав (именно столбцы, а не диапазон), нажать "кнопку с кисточкой" и провести по тем же столбцам на листе Неправ


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЕсли форматы копируются через
"кнопочку с кисточкой"
то различий быть не должно.
Какова дальнейшая цель этих манипуляций?
Если надо привести формат листа Неправ к формату Прав, достаточно выделить столбцы на листе Прав (именно столбцы, а не диапазон), нажать "кнопку с кисточкой" и провести по тем же столбцам на листе Неправ

Автор - Pelena
Дата добавления - 19.01.2020 в 09:41
t330 Дата: Воскресенье, 19.01.2020, 10:07 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 147
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Если надо привести формат листа Неправ к формату Прав, достаточно выделить столбцы на листе Прав (именно столбцы, а не диапазон), нажать "кнопку с кисточкой" и провести по тем же столбцам на листе Неправ


Да, одна из конечных целей такая, но главная цель узнать в каких ячейках в таблицах "Прав" и "Неправ" различаются форматы и какие именно форматы различаются (шрифт или может тип данных или цвет или границы и тд) , чтобы в дальнейшем сразу исключить в принципе получение таблиц с неправильными форматами...

То есть, нужно понять что не так с форматами ячеек в таблице "Неправ"...
 
Ответить
Сообщение
Если надо привести формат листа Неправ к формату Прав, достаточно выделить столбцы на листе Прав (именно столбцы, а не диапазон), нажать "кнопку с кисточкой" и провести по тем же столбцам на листе Неправ


Да, одна из конечных целей такая, но главная цель узнать в каких ячейках в таблицах "Прав" и "Неправ" различаются форматы и какие именно форматы различаются (шрифт или может тип данных или цвет или границы и тд) , чтобы в дальнейшем сразу исключить в принципе получение таблиц с неправильными форматами...

То есть, нужно понять что не так с форматами ячеек в таблице "Неправ"...

Автор - t330
Дата добавления - 19.01.2020 в 10:07
RAN Дата: Воскресенье, 19.01.2020, 12:02 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
но главная цель узнать в каких ячейках в таблицах "Прав" и "Неправ" различаются форматы

Это же элементарно.
Проходите циклом по всем сравниваемым ячейкам, и поочередно сравниваете все параметры форматирования. Их не много, навскидку не больше 100. :)


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
но главная цель узнать в каких ячейках в таблицах "Прав" и "Неправ" различаются форматы

Это же элементарно.
Проходите циклом по всем сравниваемым ячейкам, и поочередно сравниваете все параметры форматирования. Их не много, навскидку не больше 100. :)

Автор - RAN
Дата добавления - 19.01.2020 в 12:02
t330 Дата: Воскресенье, 19.01.2020, 12:51 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 147
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Пока что попытался сделать первую цель - скопировать форматы из одной эталонной таблицы в другую таблицу на другом листе

Написал вот такой код.
Юзер должен указать любую ячейку на эталонном листе ( в данном случае лист "Прав") и затем указать любую ячейку на листе куда надо копировать форматы (лист "Неправ")

Выделяю через Selection все столбцы в эталонном листе где есть значения

Копирую выделенную область

Потом вставляю форматы из выденной области в целевую таблицу на другом листе...
И не работает!

Помогите пожалуйста разобраться в чем проблем?

[vba]
Код


Option Explicit

Sub CopyFormats()
    Dim rStandartPage As Range 'для записи эталонной области ячеек
    Dim rDestinationPage As Range ' для определения области куда будут скопированы форматы эталонной области
    
     Dim lLastcol As Long 'сюда пишем номер последнего заполненного столбца в эталонном листе
     Dim lLastcol2 As Long 'сюда пишем номер последнего заполненного столбца в листе куда надо скопировать форматы
     
         
    On Error Resume Next
    
    ' запрашиваем у юзера ячейку в эталонном листе, чтобы определить ИМЯ эталонного листа с эталонными форматами
    
    Set rStandartPage = Application.InputBox("Кликните на ячейку в листе с эталонной таблицей", "Запрос данных", Selection.Address, Type:=8)
    If rStandartPage Is Nothing Then 'нажата кнопка Отмена - диапазон не выбран
        MsgBox "Отмена выполнения", vbCritical, "Нет данных"
        Exit Sub
    End If
    
With Sheets(rStandartPage.Parent.Name)  ' получаем имя листа с эталонной таблицей
    
    lLastcol = .Cells.SpecialCells(xlLastCell).Column ' определяем последний заполненный столбец в эталонном листе
    
    'выделяем диапазон на эталонном листе со всеми заполненными столбцами
    Range(.Cells(1, 1), .Cells(Rows.Count, lLastcol)).Select
    
    'копируем выделенный диапазон на эталонном листе со всеми заполненными столбцами
    .Selection.Copy
End With
    
    

    ' запрашиваем у юзера ячейку в листе куда надо скопировать форматы из эталонного листа (чтобы определить ИМЯ листа для копирования форматов)
    Set rDestinationPage = Application.InputBox("Укажите ячейку на листе куда копировать форматы ", "Запрос данных", Selection.Address, Type:=8)
    If rDestinationPage Is Nothing Then 'нажата кнопка Отмена - диапазон не выбран
       MsgBox "Отмена выполнения", vbCritical, "Нет данных"
       Exit Sub
    End If
        
        
With Sheets(rDestinationPage.Parent.Name) ' получаем имя листа с таблицей куда копируем форматы
    
    lLastcol2 = .Cells.SpecialCells(xlLastCell).Column ' определяем последний заполненный столбец в листе куда надо скопировать форматы
    
' вставляем форматы из эталонного листа в целевой лист
    Range(.Cells(1, 1), .Cells(Rows.Count, lLastcol2)). _
    PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
       SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
End With

    
    
End Sub

[/vba]
К сообщению приложен файл: 6026070.xlsm (25.5 Kb)
 
Ответить
СообщениеПока что попытался сделать первую цель - скопировать форматы из одной эталонной таблицы в другую таблицу на другом листе

Написал вот такой код.
Юзер должен указать любую ячейку на эталонном листе ( в данном случае лист "Прав") и затем указать любую ячейку на листе куда надо копировать форматы (лист "Неправ")

Выделяю через Selection все столбцы в эталонном листе где есть значения

Копирую выделенную область

Потом вставляю форматы из выденной области в целевую таблицу на другом листе...
И не работает!

Помогите пожалуйста разобраться в чем проблем?

[vba]
Код


Option Explicit

Sub CopyFormats()
    Dim rStandartPage As Range 'для записи эталонной области ячеек
    Dim rDestinationPage As Range ' для определения области куда будут скопированы форматы эталонной области
    
     Dim lLastcol As Long 'сюда пишем номер последнего заполненного столбца в эталонном листе
     Dim lLastcol2 As Long 'сюда пишем номер последнего заполненного столбца в листе куда надо скопировать форматы
     
         
    On Error Resume Next
    
    ' запрашиваем у юзера ячейку в эталонном листе, чтобы определить ИМЯ эталонного листа с эталонными форматами
    
    Set rStandartPage = Application.InputBox("Кликните на ячейку в листе с эталонной таблицей", "Запрос данных", Selection.Address, Type:=8)
    If rStandartPage Is Nothing Then 'нажата кнопка Отмена - диапазон не выбран
        MsgBox "Отмена выполнения", vbCritical, "Нет данных"
        Exit Sub
    End If
    
With Sheets(rStandartPage.Parent.Name)  ' получаем имя листа с эталонной таблицей
    
    lLastcol = .Cells.SpecialCells(xlLastCell).Column ' определяем последний заполненный столбец в эталонном листе
    
    'выделяем диапазон на эталонном листе со всеми заполненными столбцами
    Range(.Cells(1, 1), .Cells(Rows.Count, lLastcol)).Select
    
    'копируем выделенный диапазон на эталонном листе со всеми заполненными столбцами
    .Selection.Copy
End With
    
    

    ' запрашиваем у юзера ячейку в листе куда надо скопировать форматы из эталонного листа (чтобы определить ИМЯ листа для копирования форматов)
    Set rDestinationPage = Application.InputBox("Укажите ячейку на листе куда копировать форматы ", "Запрос данных", Selection.Address, Type:=8)
    If rDestinationPage Is Nothing Then 'нажата кнопка Отмена - диапазон не выбран
       MsgBox "Отмена выполнения", vbCritical, "Нет данных"
       Exit Sub
    End If
        
        
With Sheets(rDestinationPage.Parent.Name) ' получаем имя листа с таблицей куда копируем форматы
    
    lLastcol2 = .Cells.SpecialCells(xlLastCell).Column ' определяем последний заполненный столбец в листе куда надо скопировать форматы
    
' вставляем форматы из эталонного листа в целевой лист
    Range(.Cells(1, 1), .Cells(Rows.Count, lLastcol2)). _
    PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
       SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
End With

    
    
End Sub

[/vba]

Автор - t330
Дата добавления - 19.01.2020 в 12:51
t330 Дата: Воскресенье, 19.01.2020, 12:54 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 147
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
и поочередно сравниваете все параметры форматирования.


Параметры форматирования нельзя вытянуть тоже циклом или все эти 100 параметров надо знать "в лицо" и руками прописать внутри цикла где перебираются ячейки?
 
Ответить
Сообщение
и поочередно сравниваете все параметры форматирования.


Параметры форматирования нельзя вытянуть тоже циклом или все эти 100 параметров надо знать "в лицо" и руками прописать внутри цикла где перебираются ячейки?

Автор - t330
Дата добавления - 19.01.2020 в 12:54
RAN Дата: Воскресенье, 19.01.2020, 16:56 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Не считая небываемого (.Selection), строка
[vba]
Код
Set rDestinationPage = Application.InputBox("Укажите ячейку на листе куда копировать форматы ", "Запрос данных", Selection.Address, Type:=8)
[/vba]
сбрасывает буфер
[vba]
Код
Sub Мяу()
    Dim shStandartPage As Worksheet    'для записи эталонной области ячеек
    Dim shDestinationPage As Worksheet    ' для определения области куда будут скопированы форматы эталонной области
    Set shStandartPage = Application.InputBox("Кликните на ячейку в листе с эталонной таблицей", "Запрос данных", Selection.Address, Type:=8).Parent
    Set shDestinationPage = Application.InputBox("Кликните на ячейку в листе с эталонной таблицей", "Запрос данных", Selection.Address, Type:=8).Parent
    shStandartPage.UsedRange.EntireColumn.Copy
    shDestinationPage.Range("A1").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
                    SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНе считая небываемого (.Selection), строка
[vba]
Код
Set rDestinationPage = Application.InputBox("Укажите ячейку на листе куда копировать форматы ", "Запрос данных", Selection.Address, Type:=8)
[/vba]
сбрасывает буфер
[vba]
Код
Sub Мяу()
    Dim shStandartPage As Worksheet    'для записи эталонной области ячеек
    Dim shDestinationPage As Worksheet    ' для определения области куда будут скопированы форматы эталонной области
    Set shStandartPage = Application.InputBox("Кликните на ячейку в листе с эталонной таблицей", "Запрос данных", Selection.Address, Type:=8).Parent
    Set shDestinationPage = Application.InputBox("Кликните на ячейку в листе с эталонной таблицей", "Запрос данных", Selection.Address, Type:=8).Parent
    shStandartPage.UsedRange.EntireColumn.Copy
    shDestinationPage.Range("A1").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
                    SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
End Sub
[/vba]

Автор - RAN
Дата добавления - 19.01.2020 в 16:56
t330 Дата: Воскресенье, 19.01.2020, 17:49 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 147
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Не считая небываемого (.Selection), строка


Не понял, что такое "не бываемого" .Selection?
редактор VBA на эту строку не ругнулся ...


Сообщение отредактировал t330 - Воскресенье, 19.01.2020, 17:52
 
Ответить
Сообщение
Не считая небываемого (.Selection), строка


Не понял, что такое "не бываемого" .Selection?
редактор VBA на эту строку не ругнулся ...

Автор - t330
Дата добавления - 19.01.2020 в 17:49
t330 Дата: Воскресенье, 19.01.2020, 18:03 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 147
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
сбрасывает буфер


Спасибо за рабочий код!
 
Ответить
Сообщение
сбрасывает буфер


Спасибо за рабочий код!

Автор - t330
Дата добавления - 19.01.2020 в 18:03
RAN Дата: Воскресенье, 19.01.2020, 18:05 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
не ругнулся

Он послушный yes
[vba]
Код
On Error Resume Next
[/vba]
что такое "не бываемого" .Selection?

точка


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Воскресенье, 19.01.2020, 18:30
 
Ответить
Сообщение
не ругнулся

Он послушный yes
[vba]
Код
On Error Resume Next
[/vba]
что такое "не бываемого" .Selection?

точка

Автор - RAN
Дата добавления - 19.01.2020 в 18:05
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как пробежаться по всем форматам ячеек двух листов? (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!