如何正确格式化这个在vba中

这工作正常,但我想学习如何正确格式这更像一个正常的function与什么xlsmacros生成的代码看起来像。 在这里我正在过滤所有在这个列中有黄色的行。

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,,) 

除非您要返回值,否则不要在括号中放置括号。

 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是否显示logging,r都为True。

使用子程序很简单。

 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