我正在使用userform来填充电子表格中的单元格,但我无法弄清楚如何根据其中一个单元格中的值更改填充行中单元格的背景颜色。我对VBA很新,所以请耐心等待。这是我的用户表单代码:
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub Insert_Click()
Dim emptyRow As Long
Sheet1.Activate
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
Cells(emptyRow, 1).Value = Category.Value
Cells(emptyRow, 3).Value = Dt_Initiated.Value
Cells(emptyRow, 6).Value = Due_Date.Value
Cells(emptyRow, 4).Value = Requestor.Value
Cells(emptyRow, 5).Value = Assigned_To.Value
Cells(emptyRow, 7).Value = Status.Value
Cells(emptyRow, 2).Value = Description.Value
Unload Me
End Sub
Private Sub UserForm_Click()
End Sub
Private Sub UserForm_Initialize()
With Category
.AddItem "Chaplain"
.AddItem "Jag"
.AddItem "Medical"
.AddItem "Personnel"
.AddItem "Red Cross"
.AddItem "Misc"
End With
With Status
.AddItem "Initiated"
.AddItem "Pending"
.AddItem "Complete"
End With
End Sub
这一切都按预期运行,没有任何问题。现在我需要它根据状态更改为行的背景颜色。我尝试过搜索并使用不同的代码而没有运气。
帮助?
答案 0 :(得分:0)
您可以查看条件格式,看看是否可以帮助您。这可能比VBA更直接。话虽如此,这里有一个快速草图,说明如何为单元格设置颜色。 (PS:你的代码中声明了Status
是什么,范围是吗?)。
Sub testColors()
Dim myRow as Integer
Dim Status as String, celStatus as String
Dim rng as Range, cel as Range
Status = "Confirmed!" ' some string you want to find matches for
Set rng = Range(Cells(1,1),Cells(100,1)) ' Equivalent to Range("A1:A100")
For each cel in rng
if cel.value = Status then
cel.entireRow.interior.colorindex = 6
End if
next cel
End Sub
因此,如果您想根据状态设置行的颜色,您可以执行以下操作:
...
For each cel in rng
Select case cel.Value
case "Color yellow!"
cel.entireRow.interior.colorindex = 6
case "Color green!"
cel.entireRow.interior.colorindex = 4
...etc, etc.
End select
next cel
这将遍历您的范围,如果单元格值为Color yellow!
,则会将单元格设置为黄色。请参阅here for colorIndex
的快速摘要。
同样,我可能首先考虑条件格式以查看是否可行 - 如果您手动更改单元格,条件格式将动态更改单元格颜色,而无需运行宏。如果要设置很多条件,可能会考虑进行条件格式化,但是将VBA作为代码的一部分?只是一个想法。
答案 1 :(得分:0)
这将根据coloumn 7中的值为所有行着色:
Sub Macro2()
'
'
Dim i As Long
For i = 2 To emptyRow
If Cells(i, 7).Value = "Pending" Then
Range(Cells(i, 1), Cells(i, 7)).Interior.ColorIndex = 6
End If
If Cells(i, 7).Value = "Initiated" Then
Range(Cells(i, 1), Cells(i, 7)).Interior.ColorIndex = 7
End If
If Cells(i, 7).Value = "Complete" Then
Range(Cells(i, 1), Cells(i, 7)).Interior.ColorIndex = 8
End If
Next i
End Sub