Ваш вопрос немного неясен;Я думаю, вы слишком усложняете простую задачу.Исходя из примера в ваших первых двух предложениях, вам нужна строка:
ActiveSheet.PageSetup.PrintArea = "$A$4:$H$" & (10 + Range("G10"))
Когда мне нужно запустить встроенную задачу, как есть или измененную (в этомcase Set Print Area
), я позволил Excel «написать первый черновик» кода для меня:
- Разработчик menu> Запись макроса > обратите внимание на имя макроса (скорее всего, Macro1) > OK
- Выбор (выделение) ячеек
$A$4:$H$26
- Макет страницы меню> Область печати > Настройка области печати
- Разработчик Меню> Остановить запись > Макросы
- Щелкните имя макроса из шага 1 > Редактировать
Просматривая сгенерированный VBA,мы видим только одну значимую строку:
ActiveSheet.PageSetup.PrintArea = "$A$4:$H$26"
Так что теперь все, что нам нужно сделать, это переместить эту строку в вашу процедуру, где вам это нужно, и внести небольшое изменение:
ActiveSheet.PageSetup.PrintArea = "$A$4:$H$" & (10 + Range("G10"))
Каждый раз, когда эта строка выполняется, область печати длялист «динамически» устанавливается на основе значения в G10
.
. Для печати просто используйте стандартную команду печати с параметрами по умолчанию или, если вам нужно 2 копии:
ActiveWindow.SelectedSheets.PrintOut Copies:=2
(Do не"игнорировать области печати".)
Теперь все вместе:
Sub PrintCustomerReceipt()
ActiveSheet.PageSetup.PrintArea = "$A$4:$H$" & (10 + Range("G10"))
ActiveWindow.SelectedSheets.PrintOut Copies:=2
End Sub