24.08.2020 Views

Programando o Excel ® Vba Para Leigos - 2ª Ed 2013 NoDRM (1)

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Capítulo 12: Técnicas de Tratamento de Erros 195

Aqui está um modo mais fácil: uma função mais geral aceita um argumento

(um nome de workbook) e retorna True se o workbook estiver

aberto, False se não estiver.

Eis a função:

Function WorkbookIsOpen(book As String) As Boolean

Dim WBName As String

On Error GoTo NotOpen

WBName = Workbooks(book).Name

WorkbookIsOpen = True

Exit Function

NotOpen:

WorkbookIsOpen = False

End Function

Esta função tem a vantagem de que o Excel gera um erro se você fizer

referência a uma pasta de trabalho que não está aberta. Por exemplo, a

declaração a seguir gera um erro se uma pasta de trabalho chamada

MyBook.xlsl não estiver aberta:

WBName = Workbooks(“MyBook.xlsl”).Name

Na função WorkbooksOpen, a declaração On Error diz ao VBA para retornar

a macro à declaração NotOpen se houver um erro. Portanto, um erro

significa que a pasta de trabalho não está aberta, e a função retorna False.

Se a pasta de trabalho estiver aberta, não há erro e a função retorna True.

Eis outra variação da função WorkbooksOpen. Esta versão usa On Error

Resume Next para ignorar o erro. Porém, o código verifica a propriedade

Number de Err. Se Err.Number for 9, nenhum erro ocorreu e a pasta

de trabalho está aberta. Se Err.Number for qualquer outra coisa,

significa que ocorreu um erro (e a pasta de trabalho não está aberta).

Function WorkbookIsOpen(book) As Boolean

Dim WBName As String

On Error Resume Next

WBName = Workbooks(book).Name

If Err.Number = 0 Then WorkbookIsOpen = True _

Else WorkbookIsOpen = False

End Function

O exemplo a seguir demonstra como usar esta função em um procedimento

Sub:

Sub UpdatePrices()

If Not WorkbookIsOpen(“Prices.xlsl”) Then

MsgBox “Por favor abra a pasta de trabalho

Prices primeiro!”

Exit Sub

End If

‘ [Outros códigos entram aqui]

End Sub

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!