Macros 在宏中使用阵列时出现运行时错误9

Macros 在宏中使用阵列时出现运行时错误9,macros,Macros,我一直在使用下面的宏,它工作得很好: Sub PremTable() Dim i, m, j As Integer Dim PDFDiv, PDFClass, PDFSex, PDFPlan, LimAge As Variant Dim FlagD, FlagC, Band, FlagP, FlagB, IssAge, Dur As Integer PDFClass = Array("N", "S") PDFSex = Array("M", "F") PDFDiv = Array("G", "E

我一直在使用下面的宏,它工作得很好:

Sub PremTable()
Dim i, m, j As Integer
Dim PDFDiv, PDFClass, PDFSex, PDFPlan, LimAge As Variant
Dim FlagD, FlagC, Band, FlagP, FlagB, IssAge, Dur As Integer
PDFClass = Array("N", "S")
PDFSex = Array("M", "F")
PDFDiv = Array("G", "E")
PDFPlan = Array(10, 20, 30)
LimAge = Array(70, 60, 50)

j = 0
For FlagD = 1 To 2
Range("div").Value = PDFDiv(FlagD)
For FlagP = 1 To 3
Range("plan").Value = PDFPlan(FlagP)
For Band = 1 To 3
Range("band").Value = Band
For FlagS = 1 To 2
Range("sex").Value = PDFSex(FlagS)
For FlagC = 1 To 2
Range("class").Value = PDFClass(FlagC)
m = 18
For i = 1 To Range("LimAge").Value - 17
    Range("IssAge").Offset(i + j, 0) = m
    Range("age").Value = Range("IssAge").Offset(i + j, 0)
    Worksheets("input").Range("J4:J76").Copy
    Worksheets("Premium Tables").Range("M1").Offset(i + j, 0).PasteSpecial xlPasteValues,         Transpose:=True
    Range("DIV2").Offset(i + j, 0) = Range("Div")
    Range("PLAN2").Offset(i + j, 0) = Range("plan")
    Range("BAND2").Offset(i + j, 0) = Range("band")
    Range("SEX2").Offset(i + j, 0) = Range("sex")
    Range("CLASS2").Offset(i + j, 0) = Range("class")
m = m + 1
Next i
j = j + i - 1
Next FlagC
Next FlagS
Next Band
Next FlagP
Next FlagD

End Sub
现在我有了另一个非常类似的spreatsheet,我想用这个宏来创建表,但它总是给我所有具有文本格式变量的数组的“运行时错误9”(例如:Range(“class”)。Value=PDFClass(FlagC)导致运行时错误9)
请告知!非常感谢

(下次,最好包含错误消息;例如,“下标超出范围”比错误9更具描述性)。您的问题在于错误所说的:您正在尝试超出数组限制的索引。例如:PDFClass=Array(“N”,“S”)的维度为2,即只存在PDFClass(0)和PDFClass(1),但在您的代码中,您打算检索PDFClass(2)->这就是触发错误的原因。非常感谢!!问题已经解决了。我不熟悉数组,现在想知道为什么旧的宏可以用错误的维度来写…没问题。VBA对于数组维度来说有点混乱,因为大多数内置集合都是从1开始的。请记住,如果您以不同的方式声明同一数组(Dim PDFClass(2)为String),它的大小将变为3,因此PDFClass(2)可以工作。如前所述,相当困惑:)谢谢!这很有帮助!我会自己做更多的研究:-)