Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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-如果选项卡名称的前3个字母=”则更改选项卡颜色;xxx“;_Vba_Excel - Fatal编程技术网

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

Excel&;VBA-如果选项卡名称的前3个字母=”则更改选项卡颜色;xxx“;,vba,excel,Vba,Excel,对excel中的VBA不熟悉,但希望在找到我的脚时能得到宏方面的帮助。任何帮助都将不胜感激 我有一个工作簿,我想根据标签名称自动为标签上色。我的选项卡/工作表名称通常是代码。我现有的一些图纸名称(例如): CIS22ABC CIS22CBA NAS22XYZ NAS22ZXY 我的数据 管理员等 我正在尝试实现一个脚本,该脚本在整个工作簿中运行(即在“ThisWorkbook”下),搜索每个选项卡名称的前3个字母,并根据这些字母生成选项卡颜色。有很多工作表被添加和删除的所有时间-所以一个数组

对excel中的VBA不熟悉,但希望在找到我的脚时能得到宏方面的帮助。任何帮助都将不胜感激

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

  • CIS22ABC
  • CIS22CBA
  • NAS22XYZ
  • NAS22ZXY
  • 我的数据
  • 管理员等
我正在尝试实现一个脚本,该脚本在整个工作簿中运行(即在“ThisWorkbook”下),搜索每个选项卡名称的前3个字母,并根据这些字母生成选项卡颜色。有很多工作表被添加和删除的所有时间-所以一个数组的名称将无法工作

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

  • 如果图纸名称的前3个字母=“CIS”,则Tab.Color=RGB(0,255,255)
  • 如果工作表名称的前3个字母=“NAS”,则Tab.Color=RGB(66134244)
  • 否则什么也不做
再说一次,任何帮助都会很好。谢谢。

试试这个:

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

每次添加新图纸时,都会自动执行此操作

有大量事件可以将其与之关联,以便在无需用户干预的情况下自动触发宏。与我在下面使用的
新闻单
事件相比,一些值得注意的事件可能更适合您的需要,如
图纸更改
图纸删除前
图纸激活
,等等


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

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

这应该能奏效。首先,你需要数一数所有的表格,然后浏览每一张,检查前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

为此干杯。最后,我采用了一种方法,复制一张工作表,提示输入一个工作表名称,并根据输入的名称为选项卡添加颜色。