У меня есть VBS скрипт, который копирует существующий лист, и мне нужно, чтобы очистить динамический диапазон ячеек (в зависимости от конкретной книги Excel открыт)Ошибки при ясно переменная диапазона Excel с помощью VBS
Я могу очистить диапазон, когда она закодирована:
Set xl = CreateObject("Excel.application")
fso.CopyFile strFileSelect, fso.GetParentFolderName(strFileSelect) & "\Newversion.xlsm"
wshShell.Run """" & fso.GetParentFolderName(strFileSelect) & "\Newversion.xlsm"""
xl.Application.Sheets("Auto").Range("E15:BP142").ClearContents
но получаю ошибки при попытке
xl.Application.Sheets("Auto").Range(Cells(15, 5), Cells(142, 67)).ClearContents
на самом деле, я в конечном счете хочу, чтобы очистить диапазон, основанный на UBound двух массивов для диапазона, somethi нг как:
xl.Application.Sheets("Auto").Range("E15", .Cells((UBound(ArrayText)+1), (((UBound(ArrayStepText) + 1) * 2) + 5))).ClearContents
Я попытался также, используя клетки вместо .cells, пытался
set r = Range("E15", Cells(142,67))
и клиринговую г, что не работает.
Я также не могу использовать xlUp или что-то подобное, как есть скрытые и защищенные ячейки после моего диапазона массива
Существует аналогичный вопрос
VBS for excel: Using a script variable in Range selection
, но я не могу использовать восстановление строки, поскольку я не знаю буквы столбца, с которой она заканчивается, и она должна была бы составить справочную таблицу для определения букв столбца из UBound массива, и это число могло бы идти до 128.
S Неужели есть более простой/более эффективный способ?
Благодаря
Вы используете глобальные объекты 'Cells' и' Range'. Получите ссылку на рабочий лист и используйте полностью квалифицированные ссылки. – Comintern