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

Вход

Регистрация

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

 

= Мир MS Excel/Окрашивание блока по цвету ячейки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Окрашивание блока по цвету ячейки
natas-r Дата: Воскресенье, 07.02.2021, 06:50 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 20% ±

Здравствуйте! Помогите, пожалуйста, написать макрос. Имеются ячейки с номерами (1, 2, 3), а также блоки с соответствующими номерами. Нужно раскрасить блок таким же цветом, как и ячейка с соответствующим номером. Пример во вложении.
К сообщению приложен файл: 2777800.xlsx (12.1 Kb)
 
Ответить
СообщениеЗдравствуйте! Помогите, пожалуйста, написать макрос. Имеются ячейки с номерами (1, 2, 3), а также блоки с соответствующими номерами. Нужно раскрасить блок таким же цветом, как и ячейка с соответствующим номером. Пример во вложении.

Автор - natas-r
Дата добавления - 07.02.2021 в 06:50
anvg Дата: Воскресенье, 07.02.2021, 10:44 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Доброе время суток.
Вариант для разбора в качестве помощи.
[vba]
Код
Public Sub Test()
    Dim pShape As Shape, pCell As Range
    Set pShape = getShapeByTextRangeValue("2")
    Set pCell = getCellByValue(2)
    If Not (pShape Is Nothing Or pCell Is Nothing) Then
        pShape.Fill.BackColor.RGB = pCell.Interior.Color
    End If
End Sub

Private Function getShapeByTextRangeValue(ByVal withValue As String) As Shape
    Dim pShape As Shape, result As Shape
    Set result = Nothing
    For Each pShape In ActiveSheet.Shapes
        If pShape.Type = msoFreeform Then
            If pShape.TextFrame2.TextRange.Text = withValue Then
                Set result = pShape
                Exit For
            End If
        End If
    Next
    Set getShapeByTextRangeValue = result
End Function

Private Function getCellByValue(ByVal withValue As Long) As Range
    Dim pCell As Range, result As Range
    Set result = Nothing
    For Each pCell In ActiveSheet.UsedRange
        If pCell.Value = withValue Then
            Set result = pCell
            Exit For
        End If
    Next
    Set getCellByValue = result
End Function
[/vba]
 
Ответить
СообщениеДоброе время суток.
Вариант для разбора в качестве помощи.
[vba]
Код
Public Sub Test()
    Dim pShape As Shape, pCell As Range
    Set pShape = getShapeByTextRangeValue("2")
    Set pCell = getCellByValue(2)
    If Not (pShape Is Nothing Or pCell Is Nothing) Then
        pShape.Fill.BackColor.RGB = pCell.Interior.Color
    End If
End Sub

Private Function getShapeByTextRangeValue(ByVal withValue As String) As Shape
    Dim pShape As Shape, result As Shape
    Set result = Nothing
    For Each pShape In ActiveSheet.Shapes
        If pShape.Type = msoFreeform Then
            If pShape.TextFrame2.TextRange.Text = withValue Then
                Set result = pShape
                Exit For
            End If
        End If
    Next
    Set getShapeByTextRangeValue = result
End Function

Private Function getCellByValue(ByVal withValue As Long) As Range
    Dim pCell As Range, result As Range
    Set result = Nothing
    For Each pCell In ActiveSheet.UsedRange
        If pCell.Value = withValue Then
            Set result = pCell
            Exit For
        End If
    Next
    Set getCellByValue = result
End Function
[/vba]

Автор - anvg
Дата добавления - 07.02.2021 в 10:44
natas-r Дата: Воскресенье, 07.02.2021, 12:57 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 20% ±

Спасибо большое.
 
Ответить
СообщениеСпасибо большое.

Автор - natas-r
Дата добавления - 07.02.2021 в 12:57
  • Страница 1 из 1
  • 1
Поиск:

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