我有vba代码片段,我试图修改,以便我可以自动为预定义的单元格区域中的每个单元格中的文本着色。代码片段我提供了一个“InputBox”供用户输入范围,但是,我想在代码中用预定义的范围替换此提示,以便永远不会提示用户。能不能指出我正确的方向。这是我一直在使用的代码。非常感谢提前。
Sub changeTextColor()
Dim rng As Range
Dim WorkRng As Range
Dim xRed As Byte
Dim xGreen As Byte
Dim xBlue As Byte
On Error Resume Next
xTitleId = "Prompt Box" 'I commented this out prior to running
Set WorkRng = Application.Selection
.I Inserted this line of code and this is the line where I keep on getting errors
'Set WorkRng = ActiveSheet.Range("C4:I55").Select
'I commented this out prior to running
Set WorkRng = Application.InputBox("Range", "", WorkRng.Address, Type:=8)
For Each rng In WorkRng
xRed = Application.WorksheetFunction.RandBetween(0, 255)
xGreen = Application.WorksheetFunction.RandBetween(0, 255)
xBlue = Application.WorksheetFunction.RandBetween(0, 255)
rng.Pattern = xlSolid
rng.PatterColorIndex = xlAutomatic
rng.Font.Color = VBA.RGB(xRed, xGreen, xBlue)
Next
End Sub
答案 0 :(得分:0)
您Set WorkRng = ActiveSheet.Range("C4:I55").Select
的位置应该只有Set WorkRng = ActiveSheet.Range("C4:I55")
。
在第一个代码中,您选择范围(但不对选择*执行任何操作)。在我修改过的代码中,我将WorkRng
分配给您想要的范围 - 相当于您对InputBox
所做的操作。
您也不需要Set WorkRng = Application.Selection
。对于初学者来说,在运行宏之前,您依赖的是用户选择的东西。
(*)作为一个方便的提示,你不应该在VBA代码中操作.Select
范围等,因为用户可以很容易地改变你的选择。如果您已经知道所需的范围,只需直接使用该对象即可。