我继承了一个我正在进行更改的大型工作簿。
(这就是为什么我必须用眼睛而不是i来命名,因为它已被使用)
我有一个工作簿,第一张工作表是一个摘要表,每张工作表后面都有测试数据和一个名称,我想在每个工作表中按照相应的名称在“摘要”页面上放置数据的迷你图
Dim eye As Integer
For eye = 3 To LAstRow
Range("E" & eye).Select
Application.CutCopyMode = False
Range("E" & eye).Select
Dim rangesForSparkLine
Set rangesForSparkLine = Sheets(eye).Range("P3:P24")
Range("E" & eye).SparklineGroups.Add Type:=xlSparkLine, SourceData:=rangesForSparkLine
如您所见,我正在考虑命名范围并将其用于源数据。
我得到的错误是“类型不匹配”
当我将鼠标悬停在它上面时,我看到了Add(Type As XlSparkType, SourceData As String)As SparklineGroup
比如何让代码工作更重要,我想问一下如何解释和使用这个“黄色鼠标在盒子上”,它是否准确放在我的屏幕上显示我的问题直接在它上面,我想象它是一个语法模板。
提前感谢您的指导
粗体线显示当前哪个位出现问题 - 在您的示例中,SourceData:= rangesForSparkLine。
在这种情况下,它告诉你的是VBA期待一个字符串。 你给它的是一个Range对象(即不是一个字符串) 解决方案是直接将地址作为String提供,或者使用Range对象的.Address()属性。
这里重要的部分是SourceData AS String
位。它告诉你,你必须给它一个字符串。相反,你给它一个范围。那些是非常不同的类型。
Looking at the documentation关于它读取的.Add
对象的SparklineGroup
方法,对于此参数
表示用于创建迷你图的范围。
所以你真的只需要获取该范围的地址并将其输入到.Add()
方法而不是范围对象本身。就个人而言,这似乎真的很愚蠢,因为争论应该是一个范围...但我确信有一种方法可以解决excel和Microofts设计方法的深刻内容,它的图表和数据来源......对吗?
我们可以使用.Address()
对象的Range
属性让它吐出范围的地址作为String
使这件事情开心(我想......我没有测试过):
Range("E" & eye).SparklineGroups.Add Type:=xlSparkLine, SourceData:=rangesForSparkLine.Address