VBA当鼠标悬停在一条线上并显示语法粗体字意味着什么?

问题描述 投票:0回答:2

我继承了一个我正在进行更改的大型工作簿。

(这就是为什么我必须用眼睛而不是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

比如何让代码工作更重要,我想问一下如何解释和使用这个“黄色鼠标在盒子上”,它是否准确放在我的屏幕上显示我的问题直接在它上面,我想象它是一个语法模板。

提前感谢您的指导

excel-vba vba excel
2个回答
0
投票

粗体线显示当前哪个位出现问题 - 在您的示例中,SourceData:= rangesForSparkLine。

在这种情况下,它告诉你的是VBA期待一个字符串。 你给它的是一个Range对象(即不是一个字符串) 解决方案是直接将地址作为String提供,或者使用Range对象的.Address()属性。


0
投票

这里重要的部分是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
© www.soinside.com 2019 - 2024. All rights reserved.