1

我对 VBA 不是很熟悉,但需要更改我的 excel 以允许超过 3 种条件格式。

我在网上找到了下面的代码,想根据内容改变单元格的颜色,可以选择六个不同的值。

我的代码是:

Private Sub Worksheet_Change(ByVal Target As Range)
  Set MyPlage = Range("G3:AG115")

   For Each Cell In MyPlage
     If Cell.Value = "." Then
      Cell.Interior.ColorIndex=28
      Cell.Font.Bold = True
     End If

     If Cell.Value = "X1" Then
       Cell.Interior.ColorIndex=32
       Cell.Font.Bold = True
     End If

     If Cell.Value = "1X" Then
       Cell.Interior.ColorIndex=6
       Cell.Font.Bold = True
     End If

     If Cell.Value = "2X" Then
       Cell.Interior.ColorIndex=45
       Cell.Font.Bold = True
     End If

     If Cell.Value = "3X" Then
       Cell.Interior.ColorIndex=4
       Cell.Font.Bold = True
     End If

     If Cell.Value = "XY" Then
       Cell.Interior.ColorIndex=44
       Cell.Font.Bold = True
     End If

     If Cell.Value = "bt" Then
       Cell.Font.ColorIndex=27
       Cell.Interior.ColorIndex=27
     End If

     If Cell.Value = "bl" Then
       Cell.Font.ColorIndex=28
       Cell.Interior.ColorIndex=28
     End If

     If Cell.Value <> "bt" And Cell.Value <> "bl" And Cell Value <> "." And Cell.Value <> "X1" And Cell.Value <> "1X" And Cell.Value <> "2X" And Cell.Value <> "3X" And Cell.Value <> "XY" Then
       Cell.Interior.ColorIndex=xlNone
     End If
   Next
End Sub

内容要么从下拉列表中选择,要么写入 bt 和 bl 以检查这些行是否突出显示。

当我尝试更改我得到的内容时Error: 13 Type Mismatch

线

If Cell.Value = "." Then 

突出显示为错误源(我认为问题可能出"."

If Cell.Value = "X1" Then

突出显示)

我用谷歌搜索,发现你可以做一个循环,如果错误Then Next,我不确定我将如何准确编码,我宁愿解决编码问题而不是快速修复。

如果有人对我哪里出错/解决方案有任何想法,那就太好了。

4

1 回答 1

2

编辑

如果您在工作中有任何错误值(例如#NA #DIV/0等),那么该If Cell...行将失败

将其更改为

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Cell as Range
    Set MyPlage = Range("G3:AG115")
    For Each Cell In MyPlage.Cells
        If Not IsError(Cell) Then
            If Cell.Value = "." Then
                Cell.Interior.ColorIndex=28
                Cell.Font.Bold = True
            End If

            etc

        End If
     Next
于 2012-01-08T11:18:18.933 回答