2016-08-24 3 views
1

Я использую код, который заставляет определенные ячейки мигать. Я изменил код, чтобы выделить только выбранные ячейки. Проблема в том, что макрос не «остается» с ячейкой после изменения выбора. Например: если я выбираю ячейку B6 и запускаю макрос - он начинает мигать, тогда я выбираю ячейку B7, а B6 перестает мигать, но начинается B7, даже без запуска макроса. Как я мог исправить это?Мигающие ячейки в пределах выбора

Текущий код:

Option Explicit 
Dim NextBlink As Double 

Sub StartBlinking() 

    If Selection.Interior.ColorIndex = 3 Then 
     Selection.Interior.ColorIndex = 0 
    Else 
     Selection.Interior.ColorIndex = 3 
    End If 
    NextBlink = Now + TimeSerial(0, 0, 0.6) 
    Application.OnTime NextBlink, "StartBlinking", , True 

End Sub 
+0

код только моргать выбранную ячейку. Как только ячейка не будет выбрана, она перестанет мигать. – PaichengWu

+0

Любое решение? – Pawel

+0

Вам нужно будет изменить его, чтобы сохранить массив выбранных вами ячеек ранее, а затем идентифицировать все, что было выбрано снова, которое уже было в этом массиве. Я не говорю, что это будет легко, но ... –

ответ

1

Попробуйте это:

Option Explicit 
Dim NextBlink As Double 
Dim blinkingcells As Range 
Sub StartBlink() 'call this make current cell start blinking 
    If blinkingcells Is Nothing Then 
     'start blinking 
     Set blinkingcells = Selection 
     Call Blinking 
    Else 
     'blinking already, just add more blinkingcells 
     Set blinkingcells = Union(blinkingcells, Selection) 
    End If 
End Sub 

Sub Blinking() 
'make cells in global range "blinkingcell" blink 
    Dim cell As Range 
    For Each cell In blinkingcells 
     If cell.Interior.ColorIndex = 3 Then 
      cell.Interior.ColorIndex = 0 
     Else 
      cell.Interior.ColorIndex = 3 
     End If 
    Next 
    NextBlink = Now + TimeSerial(0, 0, 0.6) 
    Application.OnTime NextBlink, "Blinking", , True 
End Sub 
+0

работает отлично. Благодаря! – Pawel