【问题标题】:how do i properly format this in vba我如何在vba中正确格式化它
【发布时间】:2018-02-18 07:46:40
【问题描述】:

这很好用,但我正在尝试学习如何正确格式化它,更像是一个普通函数,而不是 xls 宏生成的代码的样子。在这里,我正在过滤此列中所有黄色的行。

sheet.UsedRange.AutoFilter field:=1, Criteria1:=RGB(255, 255, 0), Operator:=xlFilterCellColor

这不起作用

sheet.UsedRange.AutoFilter(1,RGB(255,255,0),xlFilterCellColor)

也没有

sheet.UsedRange.AutoFilter(1,RGB(255,255,0),xlFilterCellColor,,)

【问题讨论】:

    标签: excel colors cell vba


    【解决方案1】:

    除非要返回值,否则不要在参数列表周围加上括号。

    sheet.UsedRange.AutoFilter 1, RGB(255,255,0), xlFilterCellColor
    

    参数值必须按预期的“正常”顺序排列。如果您打算以“无序”的方式添加它们,那么命名参数会将正确的值放入正确的参数中。

    sheet.UsedRange.AutoFilter Operator:=xlFilterCellColor, Criteria1:=RGB(255, 255, 0), field:=1
    

    一些 VBA 函数返回一个有用的值。在这些情况下,请在参数列表中使用括号。

    dim r as variant
    r = sheet.UsedRange.AutoFilter(1, RGB(255,255,0), xlFilterCellColor)
    debug.print r
    

    在这种情况下,无论 .AutoFilter 是否显示记录,r 都是 True。

    【讨论】:

    • 好的...这解释了编译/运行时错误(预期 =)以及您可以将它们乱序但命名解释了为什么它们在由宏生成时被命名的事实。非常感谢。
    • 请注意,您的 RGB 函数将长整数(例如 65535)返回到 Criteria1 参数中,因此需要括号。
    【解决方案2】:

    使用子程序很简单。

    Sub test()
        myFilter Sheet1.UsedRange, 1, RGB(255, 255, 0)
    End Sub
    
    
    Sub myFilter(rng As Range, i As Integer, color As Long)
    rng.AutoFilter field:=i, Criteria1:=color, Operator:=xlFilterCellColor
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2014-01-07
      • 2021-08-30
      • 2012-07-02
      • 2019-11-13
      • 2012-06-13
      • 1970-01-01
      • 2015-08-25
      • 1970-01-01
      • 2021-06-06
      相关资源
      最近更新 更多