Вы очень близки к тому, чтобы сделать это правильно.
Вы должны помнить, что нужно ссылаться на WB и WS для каждого объекта диапазона. В противном случае VBA будет ссылаться на active WB и WS
В Worksheets("Sheet1").Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Count
Я считаю два Cells
объекта диапазона, на которые нужно сослаться.
Кроме того, ваша рабочая книга не указана для листа, на который вы ссылаетесь. Если в активной книге нет листа с именем «Sheet1», вы получите ошибку Subscript out of Range .
Чтобы предотвратить такие ошибки, рекомендуется использовать оператор With...End With
. Таким образом, вам нужно будет только сначала указать рабочую книгу и лист, чтобы избежать загроможденного кода.
Итак, это будет:
With Workbooks(REF).Sheets("Sheet1")
.Range(.Cells(1, 1), .Cells(1, 1).End(xlToRight)).Count
End With