检查单元格vba中是否存在名称表中的值

时间:2016-02-17 21:45:10

标签: excel vba excel-vba

我遇到了代码构思问题。

我刚刚编写了一些看到列的内容(500 +单元格) 如果单元格的值不作为工作表名称存在(在同一个wb中),则使用该单元格中的值名称创建工作表。

这是我的代码:

' Si le ticker existe mais pas l'onglet,créé l'onglet
 LastRowData = Data.Cells(Data.Rows.Count, "A").End(xlUp).Row 'trouve la dernière ligne de Data
 LastColumnData = Data.Cells(1, Data.Columns.Count).End(xlToLeft).Column 'trouve la dernière colonne de Data

For i = 2 To LastRowData
    For Each sht In Perftitres.Worksheets
         If Not SheetExists(Data.Cells(i, 9), Perftitres) Then
         Worksheets.Add.Name = Data.Cells(i, 9)
         ActiveSheet.Move After:=Worksheets(2)
         End If
    Next sht
Next i

此代码有效。 SheetExist是一个函数,如果表存在则表示为true,否则为false。

尽管如此,我现在想做反过来:

如果工作表作为列中没有的名称,则隐藏此工作表。 我无法弄明白...... 我想查看每个工作表中的第一个(数据)。 如果名称出现在列中,则不执行任何操作。如果不是,则隐藏工作表。

谢谢。

1 个答案:

答案 0 :(得分:1)

未经测试但是这样:

Dim sName As String, m, sht As Worksheet

LastRowData = Data.Cells(Data.Rows.Count, "A").End(xlUp).Row
LastColumnData = Data.Cells(1, Data.Columns.Count).End(xlToLeft).Column

'Hide any unmatched sheets (and unhide any matched ones)
For Each sht In Perftitres.Worksheets
    m = Application.Match(sht.Name, Data.Cells(2, 9).Resize(LastRowData, 1), 0)
    sht.Visible = IIf(IsError(m), xlSheetHidden, xlSheetVisible)
Next sht

'add any missing sheets
For i = 2 To LastRowData
    sName = Data.Cells(i, 9).Value
    If Not SheetExists(sName, Perftitres) Then
        With Perftitres.Worksheets.Add(After:=Perftitres.Worksheets(2))
            .Name = sName
        End With
    End If
Next i