首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >根据计算值将最多300个数组字符串打印为PDF

根据计算值将最多300个数组字符串打印为PDF
EN

Stack Overflow用户
提问于 2019-04-10 23:52:51
回答 1查看 24关注 0票数 0

我需要打印一个依赖于输入页面上两个值的差异的数组字符串,以在同一PDF中分隔多个工作表,但我遇到了一些问题。

根据两个单元格的差异,该函数将确定要打印的数组。

我想过两种可能的解决方案,但都没有成功。

  1. 间接引用要打印的单元格中的数组字符串,例如"abc,bcd,cde,def,efg...“
  2. (如下所示)使用条件if-then函数根据这两个单元格的差异调用数组

主要目标

  1. 打印到单个PDF
  2. 根据输入页面上单元格中包含的两个值的差异确定要打印的特定数组
  3. 允许PageSetup值(已解决此问题)

我正在使用MSFT 365。我最初尝试使用间接数组引用来引用一个单元格,该单元格包含一个变量值字符串,其中包含要包含的数组,但没有成功。

接下来,我尝试为这个差异的所有100个可能值进行硬编码,但在这种情况下,我遇到了行限制和与使用_在另一行继续数组函数相关的错误。

如果差值等于3,则如下所示。如果差值等于4,则需要添加另一个数组行,包括"schedule05“、"report05”、"p&l05“

代码语言:javascript
复制
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,其中每个数组都打印在单独的一张纸上,并根据差值打印一组选择的数组。

EN

回答 1

Stack Overflow用户

发布于 2019-04-11 00:08:59

为了扩展我的评论,它看起来像这样:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55616734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档