Код VBA для динамической области печати, где строки = 10 + "$ G $ 10" - PullRequest
0 голосов
/ 23 июня 2018

Мне нужен код vba, чтобы установить область печати на рабочем листе квитанции клиента, чтобы он включал столбцы от A до H, начиная с $ A $ 4 и продолжая вниз для ряда строк, равного 10 + значение в $ G $ 10.Например, если значение в $ G $ 10 равно 16, результирующая область печати будет $ A $ 4: $ H $ 26.Я попытался использовать формулы в Диспетчере имен, все из которых привели к печати всего листа, как если бы не была задана область печати (стандартная Настройка области печати работает, но не то, что мне нужно).К вашему сведению, у меня уже есть следующий макрос для этой таблицы:

Sub PrintCustomerReceipt()
' PrintCustomerReceipt Macro
' Macro to print 2 copies of Customer Receipt on designated printer
' Keyboard Shortcut: Ctrl+Shift+Q

    ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True, _
        IgnorePrintAreas:=False
End Sub

1 Ответ

0 голосов
/ 23 июня 2018

Ваш вопрос немного неясен;Я думаю, вы слишком усложняете простую задачу.Исходя из примера в ваших первых двух предложениях, вам нужна строка:

ActiveSheet.PageSetup.PrintArea = "$A$4:$H$" & (10 + Range("G10"))

Когда мне нужно запустить встроенную задачу, как есть или измененную (в этомcase Set Print Area), я позволил Excel «написать первый черновик» кода для меня:

  1. Разработчик menu> Запись макроса > обратите внимание на имя макроса (скорее всего, Macro1) > OK
  2. Выбор (выделение) ячеек $A$4:$H$26
  3. Макет страницы меню> Область печати > Настройка области печати
  4. Разработчик Меню> Остановить запись > Макросы
  5. Щелкните имя макроса из шага 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
...