Excel VBA宏设置单元格格式

Excel VBA宏设置单元格格式,excel,vba,format,Excel,Vba,Format,我编写了一个Excel sub,其中包含重复代码,其中活动范围以特定方式格式化,但我认为不可能将这些情况合并到一个循环中。 是否可以像python使用可定义函数那样,编写一个单独的子函数/函数来获取输入范围、对其进行格式化并输出该格式化范围 编辑:这里有一些赤裸裸的伪代码 function Colour_and_Merge(Input Range) Formatted range = *Input Range with text and background colour changed

我编写了一个Excel sub,其中包含重复代码,其中活动范围以特定方式格式化,但我认为不可能将这些情况合并到一个循环中。 是否可以像python使用可定义函数那样,编写一个单独的子函数/函数来获取输入范围、对其进行格式化并输出该格式化范围

编辑:这里有一些赤裸裸的伪代码

function Colour_and_Merge(Input Range)
    Formatted range = *Input Range with text and background colour changed*

    Colour_and_Merge = Formatted Range
end function

sub Main_Code()

for y = 1 to 3
    if y <> 1
        Colour_and_merge(Range(Cells(1,y),Cells(5,y)))
    end if

Colour_and_Merge(Seperate_Range)

end sub
功能颜色和合并(输入范围)
格式化范围=*文本和背景颜色已更改的输入范围*
颜色和合并=格式化范围
端函数
副主控单元代码()
对于y=1到3
如果y 1
颜色_和_合并(范围(单元格(1,y)、单元格(5,y)))
如果结束
颜色和合并(分离范围)
端接头

您可以像下面这样做

选项显式
公共子颜色和合并(ByVal输入范围作为范围)
带输入范围
.Interior.Color=vbRed'格式范围背景红色。
.Font.Bold=True“格式字体粗体”
“你到底想用这个靶场做什么?把它放在这里
以
端接头
公共子主代码()
长得一样暗
对于y=1到3
如果y>1,则
ColorAndMerge Range(单元格(1,y)、单元格(5,y))'确保指定“范围”和“单元格”对象在哪个工作簿和工作表中!
如果结束
下一个y
ColorAndMerge分离范围
端接头
请注意,您不需要
函数
,而需要
子函数
。返回范围没有任何意义,因为它与您作为
InputRange
发送的范围相同。例如,如果你打电话
ColorAndMerge separateRange
在主过程中,您不需要
ColorAndMerge
返回任何内容,因为它只返回与您已知的
separateRange
相同的内容

因此,如果主代码执行以下操作

Public Sub MainCode()
将单独的范围变暗为范围
设置分隔范围=范围(单元格(1,y)、单元格(5,y))
ColorAndMerge SeparateRange'如果调用该过程
'此处'SeparateRange'将是格式化的范围。不需要在函数中返回它,separateRange变量只是对工作表中已通过ColorAndMerge格式化的实际范围的引用
端接头
还请注意,调用过程/子过程必须不带括号,而调用函数时必须带括号:

ColorAndMergeSub SeperateRange    ' correct
ColorAndMergeSub (SeperateRange)  ' wrong! ... this syntax exists but does something entirely differnt than the first one
ReturnValue = ColorAndMergeFunction(SeperateRange)  ' correct
ReturnValue = ColorAndMergeFunction SeperateRange   ' wrong!

你能把你写的代码写下来吗?这样我们就可以检查和改正了。那绝对有可能。潜艇可以携带物体<代码>专用功能Frmt(rng作为范围)作为范围