variable valor una seleccionar refrescar rango que para objetos macro lista hoja cumplan crear condicion celdas celda asignar excel vba excel-2007

valor - ¿Cómo verificar si existen ciertas hojas o no en Excel-VBA?



refrescar hoja excel vba (4)

¿Alguien sabe cómo verificar si ciertas hojas existen o no en un documento de Excel usando Excel VBA?


Aunque (lamentablemente) dicho método no está disponible, podemos crear nuestra propia función para verificar esto ...

Espero que el código a continuación se ajuste a tus necesidades.

Edit1: Añadido también delete statement ...

Sub test() If CheckSheet(Sheets(3).Name) then Application.DisplayAlerts = False Sheets(Sheets(3).Name).Delete Application.DisplayAlerts = True End If End Sub

La solución que elegiría ...

Function CheckSheet(ByVal sSheetName As String) As Boolean Dim oSheet As Excel.Worksheet Dim bReturn As Boolean For Each oSheet In ActiveWorkbook.Sheets If oSheet.Name = sSheetName Then bReturn = True Exit For End If Next oSheet CheckSheet = bReturn End Function

Alternativamente, si no le importa usar código que genere errores de forma activa (que no es recomendado por las mejores prácticas de codificación común), podría usar este código de '' Programación aspirante a Spartan '' a continuación ...

Function CheckSheet(ByVal sSheetName As String) As Boolean Dim oSheet As Excel.Worksheet Dim bReturn As Boolean For Each oSheet In ActiveWorkbook.Sheets If oSheet.Name = sSheetName Then bReturn = True Exit For End If Next oSheet CheckSheet = bReturn End Function Function CheckSheet(ByVal sSheetName As String) As Boolean On Error Resume Next Dim oSheet As Excel.Worksheet Set oSheet = ActiveWorkbook.Sheets(sSheetName) CheckSheet = IIf(oSheet Is Nothing, False, True) End Function


Adapte este código para su uso en LotusScript, uno de los idiomas utilizados por IBM Notes (anteriormente Lotus Notes) como se muestra a continuación.

Public Function ExcelSheetExists( _ xlBook As Variant, _ '' Excel workbook object ByVal strSheetName As String _ ) As Boolean On Error GoTo errHandler ForAll xlSheet In xlBook.Sheets If xlSheet.Name = strSheetName Then ExcelSheetExists = True Exit Forall End If End ForAll GoTo Done errHandler: '' Call MyCustomErrorHandler() Resume Done Done: End Function


On Error GoTo Line1 If Sheets("BOX2").Index > 0 Then Else Line1: MsgBox ("BOX2 is missing") end if

Lo hice de esta manera :)


Algo como esto lo ayudará a comenzar:

On Error Resume Next Dim wSheet as Worksheet Set wSheet = Sheets(1) '' can also be a string, such as Sheets("Sheet1") If wSheet Is Nothing Then MsgBox "Worksheet not found!" Set wSheet = Nothing '' make the worksheet point to nothing. On Error GoTo 0 Else MsgBox "Worksheet found!" Set wSheet = Nothing '' set the found Worksheet object to nothing. You can use the found wSheet for your purposes, though. End If

Este código se basó en http://www.ozgrid.com/VBA/IsWorkbookOpen.htm . Busque el sub de DoesSheetExist ().

¡Espero que esto ayude!