【问题标题】:If with Find not working as intended如果 Find 没有按预期工作
【发布时间】:2012-04-12 10:07:42
【问题描述】:

我对 VBA 非常陌生,并且基于 Excel 2007 中的宏记录器创建了一个图表。我在使用 If 语句时遇到了一些问题,我希望找到 FALSE 的值strong> 在单元格范围内并更改图表中标记的颜色。我没有得到想要的结果,但是所有的标记都变成了 Else 条件。这是sn-p供参考:

Dim rSeries As Range
Dim MyChart As Chart

Set rSeries = Sheets("Data").Range("I24:I39")
Set MyChart = Sheets("Sheet1").ChartObjects("PT_Schedule").Chart
With MyChart
    If rSeries.Find("FALSE") Then
        .SeriesCollection(8).MarkerForegroundColor = RGB(255, 255, 0)
        .SeriesCollection(8).MarkerBackgroundColor = RGB(255, 255, 0)
    Else
        .SeriesCollection(8).MarkerForegroundColor = RGB(255, 0, 0)
        .SeriesCollection(8).MarkerBackgroundColor = RGB(255, 0, 0)
    End If
End With

谁能解释为什么 FALSE 的任何单元格值不符合条件以及代码应该更改为什么?

提前致谢!

【问题讨论】:

  • 这是一个链接siddharthrout.wordpress.com/2011/07/14/find-and-findnext-in-excel-vba/,它将指导您如何使用.Find :) 如果您仍然卡住,那么我们将从那里获取它:)
  • 我现在明白为什么整个系列都在变化。我想我了解 .Find 功能。我已经使用您提供的链接来确定(经过一些调整)我的错误不在查找中,而是在 .SeriesCollection() 中。这就是为什么更改整个集合而不是单个点的原因。有没有办法识别集合中的单个点并修改图表上的颜色?

标签: excel excel-2007 vba


【解决方案1】:

方法 Find() 返回一个范围,而不是布尔值。 您应该验证返回的范围是否不为空(VBA 中没有)

If Not rSeries.Find("FALSE") Is Nothing Then

【讨论】:

    猜你喜欢
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 2015-08-02
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    相关资源
    最近更新 更多