Вывести до 300 строк массивов в PDF на основе расчетного значения - PullRequest
0 голосов
/ 10 апреля 2019

Мне нужно напечатать строку массивов, зависящих от разницы двух значений, на моей странице ввода, чтобы разделить листы в одном и том же PDF, но у меня возникли некоторые проблемы.

На основе разницы двух ячеек функция будет определять, какие массивы следует печатать.

Есть два возможных решения, о которых я думал, но безуспешно пытался оба.

  1. Косвенно ссылается на строку массивов в ячейке для печати, такую ​​как «abc,bcd, cde, def, efg ... "

  2. (как показано ниже) Используйте условные функции if-then для вызова массива на основе разницы в этих двух ячейках

Основные цели

  1. Печать в одном PDF
  2. Определение определенных массивов для печати в зависимости от разницы двух значений, содержащихся в ячейке на моей входной странице
  3. Разрешить значения PageSetup (выяснили это)

Я использую MSFT 365. Сначала я попытался использовать косвенную ссылку на массив для ячейки со строкой значения переменной, включая массивыбыть включенным без успеха.

Далее я попытался жестко закодировать все 100 возможных значений для этой разницы, но в этом случае я сталкиваюсь с ограничениями строки и ошибками, связанными с использованием _ для продолженияФункция массива в другой строке.

Если значение разности равно 3, оно показано ниже.Если значение разности равно 4, вы бы добавили еще одну строку массива, включая «schedule05», «report05», «p & l05»

Option Explicit

Sub PrintTest()

'if a certain difference value, use
If (Worksheets("Inputs").Range("D7") - Worksheets("Inputs").Range("D6")) = "3" Then


Dim pageArray As Variant

'set array for given difference
pageArray = Array("schedule01", "report01", "p&l01", _
"schedule02", "report02", "p&l02", _
"schedule03", "report03", "p&l03", _
"schedule04", "report04", "p&l04")


Worksheets("data").Activate
Worksheets("data").PageSetup.CenterHorizontally = True

'page setup values
With ActiveSheet.PageSetup
.FitToPagesWide = 1
.FitToPagesTall = 1
.Orientation = xlLandscape
End With

'call array for print
Worksheets("data").Range("pageArray").PrintOut

Elseif

'Here is where I could put another similar function for a difference of 4


'......

Else
'Here is where I could put another similar function for a difference of x

End If
End Sub

Я ожидал, что это даст мне PDF, где каждый из этих массивов напечатан наотдельный лист и напечатает выборку массивов на основе значения разности.

1 Ответ

0 голосов
/ 10 апреля 2019

Чтобы расширить мой комментарий, это выглядело бы так:

Dim lDiff As Long
Dim pageArray As Variant
Dim sFormat As String
Dim i As Long, j As Long

'if a certain difference value, use
lDiff = Worksheets("Inputs").Range("D7").Value - Worksheets("Inputs").Range("D6").Value
ReDim pageArray(1 To (lDiff + 1) * 3)
For i = 1 To UBound(pageArray, 1) Step 3
    j = j + 1
    If j < 100 Then sFormat = "00" Else sFormat = "000"
    pageArray(i) = "schedule" & Format(j, sFormat)
    pageArray(i + 1) = "report" & Format(j, sFormat)
    pageArray(i + 2) = "p&l" & Format(j, sFormat)
    MsgBox pageArray(i)
Next i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...