Página 1 de 1

Erro Vba

Enviado: 04 Ago 2016 às 10:04
por blufmlhh
Bom dia galéra to com um problema.Tenho um formulario em VBA , mais quando vou salvar um informação apertir de um TextBox, aparece o seguinte erro :
Run-Time Error '-2147024809 (80070057): Could not find the specified object .......alguem sabe com resolver,,,,,o iteressante é que tem mais TextBox neste formulário que consigo salvar

Erro Vba

Enviado: 04 Ago 2016 às 12:27
por gfranco
Bom dia.
Parece ser um erro de referência ao objeto (nome inexistente ou modificado acidentalmente).
Sugiro postar a planilha para facilitar ajudar-lhe.
At.
gfranco

Re: Erro Vba

Enviado: 04 Ago 2016 às 16:30
por blufmlhh
segue código que estou usando....de de 1 a 8 ele salva normal porem de 9 ate 17 da um erro de tempo de execução. neste procedimento"b] Sheet12.Cells(Linha + 1, 8) = Controls("TextBox" & i).Text ' registra obs
[/b] "


Private Sub Command_Registra_Click()

Dim Itens As Boolean
Itens = False
For i = 1 To 17 'Valida os itens do dialogo com label
If Controls("Check" & i) = True Then
Itens = True
Exit For
End If
Next

If Text_Data = "" Then ' valida data
MsgBox "Favor informar a data!", vbCritical, "Mensagem do Sistema"

ElseIf TextBox_Cod_Transp = "" Then ' valida codigo do transportador
MsgBox "Favor informar o código"

ElseIf Not Itens Then
MsgBox "Favor informar ao menos um iten !", vbCritical, "Mensagem do Sistema"
Else

For i = 1 To 17 'Registra descrição do iten
If Controls("Check" & i) = True Then
Linha = Sheet12.Range("A1").CurrentRegion.Rows.Count
Sheet12.Cells(Linha + 1, 1) = Text_Data 'registra data
Sheet12.Cells(Linha + 1, 2) = TextBox_Cod_Transp ' registra codigo transportador
Sheet12.Cells(Linha + 1, 3) = Text_Nome_Transp ' registra nome do transportador
Sheet12.Cells(Linha + 1, 4) = TextBox_Nome_GT ' registra nome do GT
'Sheet12.Cells(Linha + 7, 6) = Frame
Sheet12.Cells(Linha + 1, 6) = Controls("Check" & i).Caption ' registra o desvio
Sheet12.Cells(Linha + 1, 8) = Controls("TextBox" & i).Text ' registra obs
End If
Next
MsgBox "Registro efetuado com sucesso!"
LimparItens

End If

End Sub

Erro Vba

Enviado: 04 Ago 2016 às 16:47
por gfranco
Pelo que posso ver no código, à não ser que seu userform tenha 17 textbox's, vai dar erro mesmo pois o último laço for next vai rodar 17 vezes e quando não encontrar um texbox para associar à variável "i" não vai encontrar o objeto e vai dar erro!!

Erro Vba

Enviado: 04 Ago 2016 às 17:05
por LuizSegecs
Eu também diria que o "TextBox9" não existe, e por isso dá o erro de execução.
Dá uma olhada no nome dos TextBox e vê se não tem um erro.

Se não resolver, coloca por favor a planilha pra gente poder analisar melhor.

Abraço!

Re: Erro Vba

Enviado: 04 Ago 2016 às 17:19
por blufmlhh
O conteudo sitado no botão Avaliação Transp

Erro Vba

Enviado: 04 Ago 2016 às 18:55
por gfranco
A planilha está em xlsb. Tô tentando baixar pela terceira vez. Das outras duas vezes não consegui abrir o arquivo.

Re: Erro Vba

Enviado: 04 Ago 2016 às 19:41
por LuizSegecs
Amigo @blufmlhh, está bem fácil de arrumar.
Realmente o problema no código é que seu formulário só contem 8 TextBox!

Sendo assim, precisa colocar mais uma condicional para esta parte do código:

For i = 1 To 17 'Registra descrição do iten
If Controls("Check" & i) = True Then
Linha = Sheet12.Range("A1").CurrentRegion.Rows.Count
Sheet12.Cells(Linha + 1, 1) = Text_Data 'registra data
Sheet12.Cells(Linha + 1, 2) = TextBox_Cod_Transp ' registra codigo transportador
Sheet12.Cells(Linha + 1, 3) = Text_Nome_Transp ' registra nome do transportador
Sheet12.Cells(Linha + 1, 4) = TextBox_Nome_GT ' registra nome do GT
'Sheet12.Cells(Linha + 7, 6) = Frame
Sheet12.Cells(Linha + 1, 6) = Controls("Check" & i).Caption ' registra o desvio
IF i <9 Then Sheet12.Cells(Linha + 1, 8) = Controls("TextBox" & i).Text ' registra obs
End If
Next
MsgBox "Registro efetuado com sucesso!"

Dessa maneira ele só vai rodar até o TextBox8 e seus problemas terão fim! hahah.

P.S.: Observe que os TextBox 6, 7 e 8 não correspondem aos Checks 6, 7 e 8!!!!!
Não sei se qual é a lógica que precisa, mas não me pareceu correto isso ao olhar o formulário.

Qualquer coisa pode me mandar um email (luiz.segecs@gmail.com).

Abraço!