В следующем коде VBA у меня проблема со ссылками на диапазоны.
Dim counter_x As Long
Dim counter_y As Long
Dim OriginalEntries As Range
ActiveSheet.Unprotect ("")
Set OriginalEntries = Range("AZ1") 'Dummy range so its not empty for first union as that seems to cause issues
With ActiveSheet
For counter_y = 3 To 27 Step 3
For counter_x = 1 To 41 Step 5
If .Cells(counter_y, counter_x) <> "" Then
Set OriginalEntries = Union(OriginalEntries, .Cells(counter_y, counter_x))
'CRASHES HERE WHEN ORIGINALFILES EMPTY
End If
Next counter_x
Next counter_y
End With
With OriginalEntries
.Locked = True 'CRASHES HERE
.ThemeColor = xlThemeColorDark1
.TintAndShade = -4.99893185216834E-02
.Color = -52429
End With
ActiveSheet.Protect ("")
Моя первоначальная проблема заключалась в том, что я не смог UNION OriginalEntries. Я временно решил эту проблему, инициализировав OriginalEntries фиктивным диапазоном.
После объединения всех диапазонов я пытаюсь применить некоторые свойства диапазона безуспешно. I
То, что я пробовал:
Изменение
.cells(counter_x, counter_y)
на
.range(cells(counter_x, counter_y))
.range(.cells(counter_x, counter_y))
Обе эти вещи вызывают взрыв на линии UNION
Также пробовал
.cells(counter_x, counter_y).locked = TRUE
и тот взорвался.
После With OriginalEntries
я использовал следующие строки и, похоже, работает:
OriginalEntries.select
Selection.Lock
Но я продолжаю читать, избегая использования select
, так что я делаю не так?