Notifications
Clear all

Código com erro

5 Posts
2 Usuários
0 Reactions
1,396 Visualizações
engeel2014
(@engeel2014)
Posts: 207
Estimable Member
Topic starter
 

Boa tarde pessoal, estou desenvolvendo um código e me deparei com uma situação de erro. Já tentei descobrir mas não encontrei onde estou errando. Parece ser um erro besta.

Veja abaixo, fiz um código de teste. O primeiro funciona corretamente porém o segundo apresenta um erro de tempo de execução. Alguém pode me dar uma dica em que estou fazendo errado?

Esse funciona corretamente

Public Sub teste()
linha = 1
Dim teste As String
Do Until Sheets("BD_Livros").Range("A" & linha).Value = ""
linha = linha + 1
Loop
MsgBox linha - 1
End Sub

Já esse apresenta erro:

Public Sub teste()
linha = 1
Dim teste As String
Do Until shtBD_Livros.Cells(linha, "A") = ""
linha = linha + 1
Loop
MsgBox linha - 1
End Sub

Obrigado.

Lucélio Ferreira dos Santos
Eng. Eletricista
CREA: DF-7165/TD
[email protected]

 
Postado : 04/01/2017 2:19 pm
engeel2014
(@engeel2014)
Posts: 207
Estimable Member
Topic starter
 

Anexo planilha onde está acontecendo o erro

Lucélio Ferreira dos Santos
Eng. Eletricista
CREA: DF-7165/TD
[email protected]

 
Postado : 04/01/2017 3:46 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde Lucélio,

Você deve setar as worksheets, apenas declara-las o VBE não consegue identificar qual é...

Código com erro no tópico:

Public Sub teste()
Dim sht     As Worksheet
Dim linha   As Long
Dim texto   As String

    Set sht = ThisWorkbook.Worksheets("Inicio") 'Nome da Sheet
    
    linha = 1
    Do Until sht.Cells(linha, "A").Value = ""
        linha = linha + 1
    Loop
    MsgBox linha - 1
    
    Set sht = Nothing
    
End Sub

Código com erro na planilha anexa:

Sub nova()
Dim sht     As Worksheet
Dim linha   As Long
Dim texto   As String

    Set sht = ThisWorkbook.Worksheets("Inicio") 'Nome da Sheet
    
    linha = 4
    texto = sht.Cells(linha, "A")
    MsgBox texto
    
    Set sht = Nothing
    
End Sub

Qualquer coisa da o grito.
Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/01/2017 4:24 pm
engeel2014
(@engeel2014)
Posts: 207
Estimable Member
Topic starter
 

Boa tarde Bernardo, obrigado por sua resposta. Fiz o questionamento pois recebi uma planilha de um amigo que funciona sem apresentar erros. Tentei usar uma parte do código para fazer uma adaptação na minha planilha mas apresentou o erro. Desta maneira que você citou eu já havia feito e funcionou, porém gostaria de saber porque nesta planilha anexa não acontece o mesmo erro, pois o código é bem parecido.

Lucélio Ferreira dos Santos
Eng. Eletricista
CREA: DF-7165/TD
[email protected]

 
Postado : 13/01/2017 11:48 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Existem alguns procedimentos que dá pra resumir-mos o código.
Não gosto muito de utiliza-los (justamente por isso que está acontecendo agora).

Ainda mais quando se faz um código que se resume muito, abrevia muito e tudo...
Se precisar fazer alguma modificação depois de um tempo, não vai lembrar algumas coisas...

Seguinte...
A WorkSheet tem o nome e o codename.
O nome você verá lá em baixo ao abrir a planilha, o codename é interno... acredito que verá apenas no VBE...

No VBE, onde verá os "Objetos", "Formulários", "Módulos" e "Módulos de Classe", verá que ele renomeou os codenames das Sheets....

O VBA te permite utilizar, no lugar de WorkSheet("nome_da_planilha").range("a1"), você utiliza CodeName.range("a1")
A vantagem dessa utilização é que o usuário poderá modificar o nome da planilha (seja por pura inocência ou por maldade), que o código vai continuar funcionando... Já utilizando o nome, ferra todo o código.

Aaah, só a título de curiosidade... Já deve ter visto por aí... Mas aproveitando o assunto desses "atalhos" que o VBA permite e eu não gosto de utilizar, no lugar de utilizar range("A1"), utilize [A1].

Qualquer coisa da o grito.
Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/01/2017 12:32 pm