Как использовать массив адресов для блокировки ячеек в VBA - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть список ячеек в электронной таблице Excel, из которого я определил массив. Я хочу l oop через этот список и установить соответствующие ячейки разблокированными. Тем не менее, я получаю «Ошибка: требуется объект» (перевод с немецкого). Кто-нибудь может помочь?

Sub LockCells()

Dim CellList as Variant
CellList = Array("A2", "A8", "B4")

For Each cell in CellList
    Sheets("MySheet").Range(cell).Locked = False
Next cell

End Sub

(Строка внутри l oop работает, если я жестко закодирую ячейку как один из элементов массива.)

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Попробуйте следующий код, пожалуйста:

Sub testRangeFromArray()
  Dim CellList As Variant
  CellList = Array("A2", "A8", "B4")
  Sheets("MySheet").Range(Join(CellList, ",")).Locked = False
End Sub

Или напрямую:

Sheets("MySheet").Range("A2, A8, B4").Locked = False

Но, если вам нравится итерация, используйте (объявите переменную итерации как Variant ):

Sub testRangeFromArray_()
  Dim CellList As Variant, El As Variant
  CellList = Array("A2", "A8", "B4")
  For Each El In CellList
     Sheets("MySheet").Range(El).Locked = False
  Next
End Sub
0 голосов
/ 28 апреля 2020

Просто преобразовать ячейку в строку с CStr()

Sheets("MySheet").Range(CStr(cell)).Locked = False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...