Excel & VBA - 如果选项卡名称的前 3 个字母 = "xxx",则更改选项卡颜色



excel 中的 VBA 新手,但希望在我找到自己的立足点时获得一些宏方面的帮助。任何帮助将不胜感激。

我有一个工作簿,我想根据选项卡名称自动为选项卡着色。我的标签/工作表名称通常是代码。我现有的一些工作表名称(例如(是:

  • CIS22ABC
  • CIS22CBA
  • NAS22XYZ
  • NAS22ZXY
  • 我的数据
  • 管理员等

我正在尝试实现一个在整个工作簿(即在"ThisWorkbook"下(运行的脚本,该脚本搜索每个选项卡名称的前 3 个字母并根据这些字母制作选项卡颜色。一直在添加和删除许多工作表 - 因此名称数组不起作用。

简而言之,我希望做到以下几点:

  • 如果工作表名称的前 3 个字母 = "CIS",则 Tab.Color = RGB(0, 255, 255(
  • 如果工作表名称的前 3 个字母 = "NAS",则 Tab.Color = RGB(66, 134, 244(
  • 否则什么都不做!

同样,任何帮助都会很棒。谢谢。

每次添加新工作表时,这都会自动执行。

您可以将大量事件绑定到,以便在没有用户干预的情况下自动触发宏。一些值得注意的可能比我在下面使用的NewSheet事件更适合您的需求是SheetChangeSheetBeforeDeleteSheetActivate等。


此代码需要放置在 VBE 中的编码空间中ThisWorkbook而不是工作表或模块下。

Option Explicit
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim ws As Worksheet
For Each ws In Worksheets
Select Case Left(ws.Name, 3)
Case "CIS"
ws.Tab.Color = RGB(0, 255, 255)
Case "NAS"
ws.Tab.Color = RGB(66, 134, 244)
'Case "ABC"
'Add as many of these as you need inbetween _
Select Case and End Select
End Select
Next ws
End Sub

试试这个:

Dim sheet As Worksheet
For Each sheet In ActiveWorkbook.Worksheets
Dim name As String
name = sheet.name
If Len(name) > 3 Then
Dim bit As String
bit = Mid(name, 1, 3)
Select Case bit
Case "CIS"
sheet.Tab.Color = 16776960
Case "NAS"
'etc etc
End Select
End If
Next

这应该可以解决问题。首先,您需要计算所有工作表,然后浏览每张工作表并检查前 3 个字母。如果这是真的,你可以给它上色:

For i = 1 To Sheets.Count
If Left(Sheets(i).Name, 3) = "CIS" Then
Sheets(i).Tab.Color = RGB(0, 255, 255)
End If
If Left(Sheets(i).Name, 3) = "NAS" Then
Sheets(i).Tab.Color = RGB(66, 134, 244)
End If  
Next i

最新更新