not - if exist vba excel
Excel VBA Si WorkSheet("wsName") existe (5)
Esta pregunta ya tiene una respuesta aquí:
- Pruebe o verifique si la hoja existe 20 respuestas
Me pregunto si hay una funcionalidad de corte limpio que devuelva True o False si existe una hoja de trabajo dentro de un libro de trabajo.
Sería bueno, pero no esencial, si es posible hacerlo sin omitir el manejo de errores.
Lo único que he encontrado realmente no funciona:
On Error Resume Next
If (Worksheets("wsName").Name <> "") Then
Debug.Print "Worksheet exists!"
Else
Debug.Print "Worksheet doesn''t exist!"
End If
On Error GoTo ErrHandler
No hay una función incorporada para esto.
Function SheetExists(SheetName As String, Optional wb As Excel.Workbook)
Dim s As Excel.Worksheet
If wb Is Nothing Then Set wb = ThisWorkbook
On Error Resume Next
Set s = wb.Sheets(SheetName)
On Error GoTo 0
SheetExists = Not s Is Nothing
End Function
Otra version de la función sin manejo de errores. Esta vez no distingue entre mayúsculas y minúsculas y es un poco más eficiente.
Function WorksheetExists(wsName As String) As Boolean
Dim ws As Worksheet
Dim ret As Boolean
wsName = UCase(wsName)
For Each ws In ThisWorkbook.Sheets
If UCase(ws.Name) = wsName Then
ret = True
Exit For
End If
Next
WorksheetExists = ret
End Function
Un poco cambiado al código de David Murdoch para la biblioteca genérica
Function HasByName(cSheetName As String, _
Optional oWorkBook As Excel.Workbook) As Boolean
HasByName = False
Dim wb
If oWorkBook Is Nothing Then
Set oWorkBook = ThisWorkbook
End If
For Each wb In oWorkBook.Worksheets
If wb.Name = cSheetName Then
HasByName = True
Exit Function
End If
Next wb
End Function
Una versión sin manejo de errores:
Function sheetExists(sheetToFind As String) As Boolean
sheetExists = False
For Each sheet In Worksheets
If sheetToFind = sheet.name Then
sheetExists = True
Exit Function
End If
Next sheet
End Function
también una versión ligeramente diferente. Acabo de hacer un appllication.sheets.count para saber cuántas hojas de trabajo tengo también. bien y poner un poco de renombre también
Sub insertworksheet()
Dim worksh As Integer
Dim worksheetexists As Boolean
worksh = Application.Sheets.Count
worksheetexists = False
For x = 1 To worksh
If Worksheets(x).Name = "ENTERWROKSHEETNAME" Then
worksheetexists = True
''Debug.Print worksheetexists
Exit For
End If
Next x
If worksheetexists = False Then
Debug.Print "transformed exists"
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "ENTERNAMEUWANTTHENEWONE"
End If
End Sub