解决:我正在尝试根据其像元值使像元更改颜色

问题描述 投票:0回答:1

hi,如果最后一个数字(作为字符串)是我选择的许多数字之一,我想将单元格的颜色设为蓝色。但是我得到的是所有的列都变为蓝色,而不仅仅是我想要的特定单元格。这是我的代码。

    Dim Count As Integer

    Count = 1

    Do
        If Right(Sheets(2).Cells(Count, 2), InStr(1, Sheets(2).Cells(Count, 2), "-")) = "10" Or "2" Or "20" Or "26" Or "3" Or "35" Or "36" Or "4" Or "43" Or "45" Or "6" Or "15" Or "18" Or "5" Then

            Sheets(2).Cells(Count, 2).Interior.ColorIndex = 33  

        End If

        Count = Count + 1

    Loop Until Sheets(2).Cells(Count, 2) = ""
End Sub
excel vba
1个回答
0
投票

这里是使用正则表达式而不是冗长的OR语句的示例。我从您的代码中假设字符串末尾的数字前面是一个破折号。

 Sub colorBlue()

   Dim regex As Object
   Set regex = CreateObject("vbscript.regexp")

   'match 10,2,20,26,3,35,36,4,43,45,6,15,18,5
   With regex
     .Global = True
     .MultiLine = False
     .pattern = "(-)(2|3|4|5|6|10|15|18|20|26|35|36|43|45)$"
   End With

   Dim ws As Worksheet, cell As Range
   Set ws = ThisWorkbook.Sheets(2)

   For Each cell In ws.UsedRange.Columns(1).Cells
     If regex.test(cell.Value) Then
         cell.Interior.ColorIndex = 33
     End If
   Next cell

 End Sub
© www.soinside.com 2019 - 2024. All rights reserved.