Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何使用vba根据单元格是否包含特定单词来格式化整行?_Excel_Vba - Fatal编程技术网

Excel 如何使用vba根据单元格是否包含特定单词来格式化整行?

Excel 如何使用vba根据单元格是否包含特定单词来格式化整行?,excel,vba,Excel,Vba,如果单元格字符串包含单词“risk”,我需要突出显示整行。但我需要使用vba,因为使用它的人在使用宏后会在上面写字 我有点像: 原因将在后面写出来,如果有人在本栏的任何地方写了“风险”一词,我需要突出显示该行。那里可以写任何东西 当我想要完全匹配时,我使用此选项来突出一行: lastReg= Cells(Rows.Count, 1).End(xlUp).Row Set Rng = Range("A1:J" & lastReg) Rng.FormatConditions.Add Type

如果单元格字符串包含单词“risk”,我需要突出显示整行。但我需要使用vba,因为使用它的人在使用宏后会在上面写字

我有点像:

原因将在后面写出来,如果有人在本栏的任何地方写了“风险”一词,我需要突出显示该行。那里可以写任何东西

当我想要完全匹配时,我使用此选项来突出一行:

lastReg= Cells(Rows.Count, 1).End(xlUp).Row
Set Rng = Range("A1:J" & lastReg)
Rng.FormatConditions.Add Type:=xlExpression, Formula1:="=$J1=""Plat"""

...
所以我试着:

Rng.FormatConditions.Add Type:=xlExpression, Formula1:="=FIND(""risk"",$J1)>0"
但它不起作用

编辑:它给我一个执行错误,所以代码本身不会运行

Edit2:其他人使用这个宏,他自己不能做,所以我想让代码帮他做。
此外,代码存储在personal.xlsb中,因为他每天在不同的工作表中运行代码,所以我无法预先配置工作表的formatConditions。

我将使用工作表更改事件。将此子项放在工作表中。当第5列中的任何单元格发生更改且值为“风险”时,它将为行着色

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rng As Range
Set Rng = Columns(5)

    If Not Intersect(Rng, Target) Is Nothing And Target.Value = "risk" Then
        Target.Offset(, -4).Resize(, 5).Interior.Color = vbYellow
    End If

End Sub
尝试:


“它不起作用”没有帮助-请详细说明。您的代码实际上也不会进行任何格式设置。而且由于您的vba代码正在设置条件格式,我不明白为什么您不能只使用条件格式。@RonRosenfeld,因为我不是运行代码的人。这是为我公司的另一个不知道怎么做的人准备的。所以我做了这个宏来帮助他。他使用宏已经有一段时间了,但他总是忘记自己格式化,所以我想修改它,使它可以自己格式化。但它不是一个固定的工作表。。。使用它的人从他使用的平台表单导出它,并使用宏找到他需要的客户机,然后写出原因,因此宏本身就在personal.xlsb中。@DaniMika您所要做的就是将此代码放在该人添加原因的任何工作表中。但之后我必须每天都这样做,对吗?这个人在我公司的不同领域工作。他不能经常使用excel,所以我这样做是为了帮助他。现在他自己强调了这一点,或者至少他应该这样做。但他总是忘记这样做,所以我想让它成为宏本身的一部分。@DaniMika我要做的是创建一个空白工作簿,用户只需将其放在桌面上即可。当他打开文件时,它将从平台导入数据。然后,用户可以修改和添加原因,当他在第5列中添加原因时,放置在工作表中的此宏将自动为行着色。然后使用按钮将工作表保存为新的未启用宏的工作簿。通过这样做,空白工作簿将不被更改,并且可以在每次需要创建新报表时重用。
Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    Dim cell As Range

    If Not Intersect(Target, Sh.UsedRange) Is Nothing Then

        For Each cell In Target.Cells

            With cell

                If UCase(.Value) = "RISK" Then
                    .Font.Color = vbRed
                Else
                    .Font.Color = vbBlack
                End If

            End With

        Next cell

    End If

End Sub