Автоматичен рефреш при функция CountCellsByColor

1 одобрение 0 неодобрения
попитан 2016 декември 13 в Excel от Evgeni начинаещ (13 точки)

Здравейте, 

Използвам функция със следният код:

 Function GetCellColor(xlRange As Range)
    Dim indRow, indColumn As Long
    Dim arResults()
 
    Application.Volatile True
    If xlRange Is Nothing Then
        Set xlRange = Application.ThisCell
    End If
 
    If xlRange.Count > 1 Then
      ReDim arResults(1 To xlRange.Rows.Count, 1 To xlRange.Columns.Count)
       For indRow = 1 To xlRange.Rows.Count
         For indColumn = 1 To xlRange.Columns.Count
           arResults(indRow, indColumn) = xlRange(indRow, indColumn).Interior.Color
         Next
       Next
     GetCellColor = arResults
    Else
     GetCellColor = xlRange.Interior.Color
    End If
End Function

Когато променям цветовете в таблицата е нужно да натисна F2 и ENTER или SHIFT + F9, за да рефрешне и калкулира.

Прочетох, че във кода на функцията трябва да присъства Application.Volatile, но той си присъства и въпреки това не калкулира при промяна на цветовете, освен ако не използва по-горе посочените комбинации от бутони.

Може ли да дадете някакви съвети?

Благодаря Ви!

 

2 отговори

0 одобрения 0 неодобрения
отговорени 2016 декември 13 от Tormozko

Application.Volatile засича всяка промяна в съдържанието на клетка. Цветовете в Ексел не са данни, а са мета-данни, затова промяната им не се хваща от тази опция. Не ми е известен начин освен ръчната рекалкулация за решаването на този казус.

 

0 одобрения 0 неодобрения
отговорени 2016 декември 13 от vbafreak експерт (203 точки)

Съгласен съм с колегата, Ексел не е подходяща програма за разчитане на информация чрез цветове.

Това, което би могъл да направиш е да вкараш функцията в процедура и там да се изпълнява автоматично рефреша (shift + F9). Макрото се задейства всеки път, когато избереш друга клетка (selection change). Копирай и постави следния код в Sheet 1 на vba:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
SendKeys "+{F9}", True
End Sub

Добре дошли в българския форум за Ексел и Майкрософт офис! Тук можете да питате хора със знания и опит, както и да споделите знанията и опита си с другите.
...