Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA (часть 3)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Код:
 
Option Explicit
 
Public Sub Colorize()
On Error Resume Next
    Dim baseRange As Excel.Range
    Dim nextCell As Excel.Range, sKey As String
    Dim pDict As Object, needCell As Excel.Range
    Dim colorRange As Excel.Range
    Set colorRange = ActiveSheet.Range("A1:E2")
    Set pDict = CreateObject("Scripting.Dictionary")
    For Each nextCell In colorRange
        If (Not IsEmpty(nextCell.Value)) And IsNumeric(nextCell.Value) Then
            sKey = CStr(CLng(nextCell.Value))
            If Not pDict.Exists(sKey) Then pDict.Add sKey, nextCell
        End If
    Next nextCell
    Set needCell = Nothing: Set baseRange = Nothing
    Set baseRange = ActiveSheet.UsedRange.SpecialCells(XlCellType.xlCellTypeConstants, XlSpecialCellsValue.xlNumbers)
    Set needCell = ActiveSheet.UsedRange.SpecialCells(XlCellType.xlCellTypeFormulas, XlSpecialCellsValue.xlNumbers)
    If (Not baseRange Is Nothing) And (Not needCell Is Nothing) Then
        Set baseRange = Application.Union(baseRange, needCell)
    ElseIf Not needCell Is Nothing Then
        Set baseRange = needCell
    End If
    If baseRange Is Nothing Then Exit Sub
    If pDict.Count = 0 Then Exit Sub
    For Each nextCell In baseRange
        If (Not IsEmpty(nextCell.Value)) And IsNumeric(nextCell.Value) Then
            sKey = CStr(CLng(nextCell.Value))
            If Application.Intersect(nextCell, colorRange) Is Nothing Then
                If pDict.Exists(sKey) Then
                    Set needCell = pDict.Item(sKey)
                    nextCell.Interior.Color = needCell.Interior.Color
                End If
            End If
        End If
    Next nextCell
End Sub
 


Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 04:49 16-11-2011
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA (часть 3)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru