整个表格的内容由填写序号的单元格引发变化,每变化一次另存为pdf,并将其中一个单元格的值作为pdf的文件名
一、错误写法
Sub 另存并重命名PDF()
Dim i As Integer
Dim n As String
For i = 1 To 10
Sheets("sheet1").Range("A2:D2").Value = i
n = Sheets("sheet1").Range("A4:F4").Value
Sheets(Array("sheet1")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"要保存的文件夹地址" & n & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Next
End Sub
运行会报错:
错误‘13’:类型不匹配
n = Sheets(“sheet1”).Range(“A4:F4”).Value
这句会标高亮。
点击帮助,跳到官网的文档,看大意,应该这句的右边和左边类型不符,不能赋值。
二、修改参考
Excel VBA Range对象基本操作应用示例(转贴,实用参考)
该文中的[示例01-06]里
[示例01-06]
Sub test6()
MsgBox “设置单元格C5中的公式.”
Worksheets(1).Range(“C5:C10”).Cells(1, 1).Formula = “=Rand()”
End Sub
虽然是说明设置C5中的公式,但从
Range(“C5:C10”).Cells(1, 1)
看,C5应该是在一块区域里的第一行第一列的单元格。该段程序在工作表界面看很可能是一块合并单元格,但赋值只赋给合并单元格里的第一行第一列的单元格,也就是那块区域里最左上角的一个原始单元格。(也就是Cells(1,1))
那么,反向赋值也应该用区域的左上角单元格代表整个区域。
三、正确写法
Sub 另存并重命名PDF()
Dim i As Integer
Dim n As String
For i = 1 To 10
Sheets("sheet1").Range("A2:D2").Value = i
n = Sheets("sheet1").Range("A4:F4").cells(1,1).Value
Sheets(Array("sheet1")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"要保存的文件夹地址" & n & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Next
End Sub
有时候在单元格里使用公式时,引用单元格(或说区域)出错,查看错误原因时也可以看到一点这种左上角代表一个区域的影子。
版权声明:本文为cialion原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。