Excel 定义第六范围对象时出现问题

Excel 定义第六范围对象时出现问题,excel,vba,Excel,Vba,我定义了不同的范围,以便将其用于图形: Sub rangesGRAPHS() Dim count, counter, Erow, Prow1, Prow2, Urow1 As Long Dim Dsrc1, Dsrc2, Dsrc3, Xsrc1, Xsrc2, Xsrc3 As Range counter = 5 count = Application.CountA(Range("A:A")) count = count + 3 While counter < count I

我定义了不同的范围,以便将其用于图形:

Sub rangesGRAPHS()
Dim count, counter, Erow, Prow1, Prow2, Urow1 As Long
Dim Dsrc1, Dsrc2, Dsrc3, Xsrc1, Xsrc2, Xsrc3 As Range

counter = 5
count = Application.CountA(Range("A:A"))
count = count + 3

While counter < count
    If Range("Q" & CStr(counter)) = "ECO_BS" Then Erow = counter
    If Range("Q" & CStr(counter)) = "PHO_BS" Then Prow2 = counter
    counter = counter + 1
Wend

Prow1 = Erow + 1
Urow1 = Prow2 + 1

Dsrc1 = ("P5:P" & CStr(Erow))
Dsrc2 = ("P" & CStr(Prow1) & ":P" & CStr(Prow2))
Dsrc3 = ("P" & CStr(Urow1) & ":P" & CStr(count))
Xsrc1 = ("$C$5:$C$" & CStr(Erow))
Xsrc2 = ("$C$" & CStr(Prow1) & ":$C$" & CStr(Prow2))
Xsrc3 = ("$C$" & CStr(Urow1) & ":$C$" & CStr(count))

ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Range(Dsrc1)
ActiveChart.SeriesCollection(1).XValues = ("=SICALIS_Detail!" & Xsrc1)
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Range(Dsrc2)
ActiveChart.SeriesCollection(1).XValues = ("=SICALIS_Detail!" & Xsrc2)
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Range(Dsrc3)
ActiveChart.SeriesCollection(1).XValues = ("=SICALIS_Detail!" & Xsrc3)
子范围图()
暗计数、计数器、Erow、Prow1、Prow2、Urow1等长
尺寸Dsrc1、Dsrc2、Dsrc3、Xsrc1、Xsrc2、Xsrc3作为范围
计数器=5
count=Application.CountA(范围(“A:A”))
计数=计数+3
当计数器<计数时
如果范围(“Q”和CStr(计数器))=“ECO_BS”,则Erow=计数器
如果范围(“Q”和CStr(计数器))=“PHO_BS”,则航向2=计数器
计数器=计数器+1
温德
Prow1=Erow+1
Urow1=船首2+1
Dsrc1=(“P5:P”和CStr(Erow))
Dsrc2=(“P”和CStr(项目1)和“:P”和CStr(项目2))
Dsrc3=(“P”和CStr(Urow1)和“:P”和CStr(计数))
Xsrc1=(“$C$5:$C$”&CStr(Erow))
Xsrc2=(“$C$”&CStr(项目1)和“$C$”&CStr(项目2))
Xsrc3=(“$C$”&CStr(Urow1)和“$C$”&CStr(计数))
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType=xlColumnClustered
ActiveChart.SetSourceData源:=范围(Dsrc1)
ActiveChart.SeriesCollection(1.XValues=(“=SICALIS_Detail!”&Xsrc1)
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType=xlColumnClustered
ActiveChart.SetSourceData源:=范围(Dsrc2)
ActiveChart.SeriesCollection(1.XValues=(“=SICALIS_Detail!”&Xsrc2)
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType=xlColumnClustered
ActiveChart.SetSourceData源:=范围(Dsrc3)
ActiveChart.SeriesCollection(1.XValues=(“=SICALIS_Detail!”&Xsrc3)
除了行
Xsrc3=(“$C$”&CStr(Urow1)和“$C$”&CStr(count))
之外,所有操作都正常,该行给出了一个
错误91:未设置对象变量


调试时,我注意到Xsrc3被设置为
nothing
。然而,所有其他的东西都是用同样的方式写的。如果我把它注释掉,其他的东西仍然有效。我不明白发生了什么事-告诉我发生了什么事

它实际上不是用同样的方式写的。在这方面:

Dim Dsrc1, Dsrc2, Dsrc3, Xsrc1, Xsrc2, Xsrc3 As Range
前5个变量实际上声明为Variant,只有最后一个变量声明为Range。实际上,您希望它们都是字符串,因此请使用:

Dim Dsrc1 As String, Dsrc2 As String, Dsrc3 As String, Xsrc1 As String, Xsrc2 As String, Xsrc3 As String

其实写的方式不一样。在这一行
Dim Dsrc1、Dsrc2、Dsrc3、Xsrc1、Xsrc2、Xsrc3作为范围
前5个变量实际上被声明为变量,只有最后一个变量被声明为范围。实际上,您希望它们都是字符串,所以
Dim Dsrc1 As String,Dsrc2 As String,Dsrc3 As String,Xsrc1 As String,Xsrc2 As String,Xsrc3 As String
我一直在错误地声明变量?????糟糕透了。。。。好吧,那就解决了。所以,如果你发布的答案我可以接受。