我正在努力让动态细胞范围正常工作。我必须告诉我要使用的行数和列数。 (我不能使用xlToRight,因为我不想要单元格中的所有值。
到目前为止,我试过了:
Dim xCount As Long
Dim yCount As Long
Dim workRange As Range
xCount = Worksheets("Controls").Range("B4")
yCount = Worksheets("Controls").Range("B5")
workRange = Worksheets("Data").Range(Worksheets("Data").Cells(1,1), Cells(xCount, yCount)
ActiveChart.SetSourceData Source:=workRange
错误消息是:未分配对象变量或With-block变量(我希望德语的翻译是正确的:-)调试器停在" workRange"一部分。
你能解释一下,我的想法有哪些错误?
由于
答案 0 :(得分:1)
你几乎得到了它,你明确地给了workRange
第一个单元格的工作表,你需要用第二个单元格来完成。我喜欢使用with
来帮助澄清这些事情:
With worksheets("Controls")
xCount = .Range("B4").Value ' I assume this is some number
yCount = .Range("B5").Value
End with
With Worksheets("Data")
workRange = .Range(.Cells(1,1), .Cells(xCount, yCount))
end with
ActiveChart.SetSourceData Source:=workRange
如果不这样做,请尝试workRange = Worksheets("Data").Range(Worksheets("Data").Cells(1,1), Worksheets("Data").Cells(xCount, yCount)
在不知道你如何声明xCount
和yCount
的情况下,如果你刚刚Dim xCount, yCount
,它将被设置为Variant(也就是任何东西)。您的原始声明将使Excel认为您想要一个范围(或单元格),而不是该单元格的值。如果您执行Dim xCount as Integer, yCount as Integer
(或Long
,如果您有大量行),那么它将获得该单元格的VALUE并将其用于该范围内的行。否则,如果您将xCount.Row
设置为xCount
或Variant
,则会使用Range
。
答案 1 :(得分:0)
我找到了解决方案!正如BruceWayne所说,我错过了一个Worksheets("Controls")
。但这还不足以消除错误。
将范围填入set
时,我遗失了workRange
。为了拥有正确的代码,这里有完整的例子:
Dim xCount As Long
Dim yCount As Long
Dim workRange As Range
With worksheets("Controls")
xCount = .Range("B4").Value
yCount = .Range("B5").Value
End with
With Worksheets("Data")
set workRange = .Range(.Cells(1,1), .Cells(xCount, yCount))
end with
ActiveChart.SetSourceData Source:=workRange
感谢大家的帮助! :-D
卡兹
答案 2 :(得分:-2)
据我了解。您需要为所选范围指定值。试试这个。
workRange = Worksheets("Data").Range(Worksheets("Data").Cells(1,1), Cells(xCount, yCount).Value = 5
这应该在框内写一个5。
也许这会有所帮助:
http://www.excel-easy.com/vba/range-object.html
https://msdn.microsoft.com/de-de/library/office/Ff838238.aspx
Ich glaube,du musst dem ganzen noch einen Wert zuweisen。
Setzte ein
.... Cells(xCount, yCount).Value = 5
dahinter。 Vielleicht funktioniert es dann。