【发布时间】:2017-05-12 00:39:31
【问题描述】:
我是 Excel 宏的新手,没有 VB 或任何语言的经验。
我有一张带有价目表的表格,其中我们有一个带有下拉列表的字段,其中包含我们销售员的联系信息(邮件和手机)。
第二张表包含一个包含姓名和联系人信息的表格。
今天,我使用下拉列表选择业务员并导出为pdf到特定目录。
我希望使用执行这些操作的宏导出为 PDF。我尝试了一些宏但没有成功。我想使用名称@Name 保存在目录中,并使用@ContactInfo 替换价格表的特定字段。
我有什么:
Sub MAKEPDF()
Dim dvCell As Range
Dim inputRange As Range
Dim c As Range
Dim i As Long
'Which cell has data validation
Set dvCell = Sheets("NUEVA LISTA").Range("A3")
'Determine where validation comes from
Set inputRange = Evaluate(dvCell.Validation.Formula1)
arrVendedores = Array("Name1", "Name2", "Name3", "Name4", "Name5", "Name6", "Name7")
i = 1
'Begin our loop
Application.ScreenUpdating = False
For Each c In inputRange
dvCell = c.Value
ChDir "D:\Google Drive\Lista de Precios\temp\" & arrVendedores(i)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="(" & Format(Range("A4"), "yyyy-mm-dd") & ") Lista de precios.pdf"
'Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
i = i + 1
Next c
Application.ScreenUpdating = True
End Sub
这完美地保存在 PDF 中,但该数组无法按预期工作,导致错误 9(索引),最好使用 Table1@Name 中的当前数据。
谁能帮我实现这个目标?
感谢和抱歉我的英语不好。
【问题讨论】:
-
你的数组不应该使用 i=0 来迭代吗?在 arrVenderoes 中,默认情况下将是(0 到 6)而不是(1 到 7)。您可以在编辑器的本地窗口中检查这一点。
-
将 i=1 和 i 迭代替换为 For i = LBound(arrVendedores) To UBound(arrVendedores) 可能是一个想法,这样如果您更改数组就安全了。然后您可以使用您提到的表格更早地设置数组。
-
我尝试在 arrVendores 中使用 i+1 但失败了,并且....我应该使用另一个变量,例如 ii = i 然后在 arrVendores 中使用 ii+1
-
我现在注意到了。
标签: vba excel macros excel-2013