我遇到了代码构思问题。
我刚刚编写了一些看到列的内容(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。
尽管如此,我现在想做反过来:
如果工作表作为列中没有的名称,则隐藏此工作表。 我无法弄明白...... 我想查看每个工作表中的第一个(数据)。 如果名称出现在列中,则不执行任何操作。如果不是,则隐藏工作表。
谢谢。
答案 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