如何将模块中的格式化子例程应用于跨工作簿的各种范围

Posted

技术标签:

【中文标题】如何将模块中的格式化子例程应用于跨工作簿的各种范围【英文标题】:How to apply formatting subroutine in module to various ranges across workbook 【发布时间】:2020-07-17 08:53:15 【问题描述】:

我在一个模块中创建了一个格式化子,我想调用工作簿中的各种范围。对我的范围对象应用无效过程时出现 424 错误。

在模块中,我有:

Option Explicit

Sub BoldRedFont(rng As Range)

With rng.Font
    .Name = "Calibri"
    .Size = 10
    .Color = -16776961
    .Bold = True
End With

End Sub

在工作表中,我有:

Option Explicit


DynamicSpreadsRange()

Dim pasteCell As Range
Set pasteCell = Range("B5")
pasteCell = "Paste spreads here"
BoldRedFont (pasteCell)

End Sub

【问题讨论】:

删除这些括号 - BoldRedFont (pasteCell) - 子程序不使用它们。函数可以。这不是一个函数,因为它不返回任何东西。 这能回答你的问题吗? Purpose of using sub routines over functions 【参考方案1】:

正如@braX 在评论中提到的,你不能使用 BoldRedFont (pasteCell)

但是你可以像这样在 Call 中使用它:

Call BoldRedFont(pasteCell)

或前面提到的(不带括号)

BoldRedFont pasteCell

我还建议在您想将值写入范围时使用范围(和其他对象)的属性然后使用 (当您将参数发送到 BoldRedFont 函数时这是正确的,因为您想将整个范围发送到那里)。

pasteCell.Value = "Paste spreads here"

我希望这能澄清一点。

【讨论】:

以上是关于如何将模块中的格式化子例程应用于跨工作簿的各种范围的主要内容,如果未能解决你的问题,请参考以下文章

修改新建工作表或者工作簿的默认的单元格格式

Verilog中实例化子模块的问题!

有条件地格式化子表单中的组合框

MS Access,嵌套在表单中的格式化子报表

Excel VBA - 循环遍历多个文件夹中的文件,复制范围,粘贴到此工作簿中

如何获取当前打开的excel工作簿的本地路径?