• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

charlie69

[Resolvido] On Error GoTo

6 mensagens neste tópico

Olá

Sou novo aqui no forum, e decidi entrar porqeu este forum pareceu muto bom para tirar algumas duvidas na programação.

Sou um utilizador pouco experiente de vba (no excel), utilizo no emprego consoante o que for preciso para me facilitar o trabalho.

Surgiu-me hoje este problema,:

Na ficheiro A executo uma macro, que vai à pasta P vai abrindo os ficheiros B, C, etc... e de dentro desses ficheiros vai à folha "Notas" e retira a informação que estiver numa determianda célula e copia esses valores para o ficheiro A... vai repetindo este procedimento para a lista que estiver no ficheiro A.

Problema: nem sempre a folha tem o nome "notas", pode ter ou "relatorio" ou "factura"

O que queria era colocar algo do género

On Error GoTo A:

Abrir folha Notas (não está em código  :biggrin:)

GoTo D:

A:

On Error GoTo B:

Abrir folha relatorio

GoTo D:

B:

On Error GoTo C:

Abrir folha factura

GoTo D:

C:

Mensagem que não é nenhum, insira novo nome

D:

Continuação do código

Só que não consigo que ele passe para o 3º erro, parece que ele fica sempre com Erro na memória, sempre que encontra o 1 erro.

Alguém sabe como me ajudar, de forma que ele procure qual a folha que deverá ir ler de entre as três, do tipo se não encontra uma vai para a outra.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Faz antes assim e evita tantos "on error ..."

Dim ws As Worksheet

For Each ws In Worksheets
    Select Case ws.Name
        Case "notas"
            Stop
        Case "relatorio"
            Stop
        Case "factura"
            Stop
    End Select
Next

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tentei fazer isso, coloqueio assim o código:

    Windows(fn).Activate 'fn=nome do ficheiro a abrir

For Each ws In Worksheets
   Select Case ws.Name
       Case "notas"
           Stop
       Case "relatorio"
           Stop
       Case "factura"
           Stop
   End Select
Next

   Sheets(ws).Select

mas ele não reconhece nenhum dos nomes.

Pensei também em abrir sempre a 1ª sheet, não a Sheet1, mas sim a 1ª sheet, como é que se faz isso, porqeu sei abrir pelo nome da folha, mas não pelo número da folha.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenta assim:

Windows(fn).Activate

Dim ws As Worksheet
For Each ws In Worksheets
    Select Case UCase(ws.Name)
        Case "NOTAS"
            ws.Select
        Case "RELATORIO"
            ws.Select
        Case "FACTURA"
            ws.Select
    End Select
Next

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Resolvido o 1º problema.

Conseguem me explicar qual o código de o vba ir ler a 1ª sheet e não a sheet1?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Conseguem me explicar qual o código de o vba ir ler a 1ª sheet e não a sheet1?

Dim ws As Worksheet
Set ws = Worksheets(1)

ws.Select

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora