Ir para conteúdo
Fórum Script Brasil
  • 0

Erro em tempo de execução '9': Subscrito fora do intervalo


sieg

Pergunta

galera quem poder me ajudar nesse codigo em VBA agradeço muito. Estou tentando via formulário prencher com dados nas caixas de textos e depois serem copiados para a planilha mas quando cliko no botão aparece um erro "Erro em tempo de execução '9': Subscrito fora do intervalo"

agradeço desde já a quem me ajudar o codigo esta ai galerá!!!

------------------------------------------------

Private Sub CommandButton1_Click()

'butão cadastrar

If ValidateData = True Then

EnterDataInWorksheet

CommandButton1_Click

Me.Hide

End If

End Sub

Private Sub CommandButton2_Click()

'lipar campos

txnome.Value = ""

txcpf.Value = ""

txtelefone.Value = ""

txcelular.Value = ""

txendereco.Value = ""

txcidade.Value = ""

txcep.Value = ""

cmbestado.Value = ""

End Sub

Private Sub UserForm_Initialize()

'carrega estados no combobox

cmbestado.AddItem "Acré"

cmbestado.AddItem "Alagoas"

cmbestado.AddItem "Amapá"

cmbestado.AddItem "Amazonas"

cmbestado.AddItem "Bahia"

cmbestado.AddItem "Ceará"

cmbestado.AddItem "Distrito Federal"

cmbestado.AddItem "Espírito Santo"

cmbestado.AddItem "Goiás"

cmbestado.AddItem "Maranhão"

cmbestado.AddItem "Mato Groço"

cmbestado.AddItem "Mato Groço do Sul"

cmbestado.AddItem "Pará"

cmbestado.AddItem "Paraíba"

cmbestado.AddItem "Paraná"

cmbestado.AddItem "Pernambuco"

cmbestado.AddItem "Piauí"

cmbestado.AddItem "Rio de Janeiro"

cmbestado.AddItem "Rio Grande do Norte"

cmbestado.AddItem "Rio Grande do Sul"

cmbestado.AddItem "Roraima"

cmbestado.AddItem "Santa Catarina"

cmbestado.AddItem "São Paulo"

cmbestado.AddItem "Sergipe"

cmbestado.AddItem "Tocantins"

End Sub

Public Sub EnterDataInWorksheet()

'copia os dados do formulário para a planilha

Dim r As Range

Dim r1 As Range

Set r = Worksheets("1").Range("A2").CurrentRegion >>>>>>> O Erro Aparece Aki!!

Set r1 = r.Offset(r.Rows.Count, 0)

r1.Cells(1).Value = txnome.Value

r1.Cells(2).Value = txcpf.Value

r1.Cells(3).Value = txtelefone.Value

r1.Cells(4).Value = txcelular.Value

r1.Cells(5).Value = txendereco.Value

r1.Cells(6).Value = txcidade.Value

r1.Cells(7).Value = cmbestado.Value

r1.Cells(8).Value = txcep.Value

End Sub

Public Function ValidateData() As Boolean

If txnome.Value = "" Then

MsgBox "Por favor Informe o Seu Nome."

ValidateData = False

Exit Function

End If

If txcpf.Value = "" Then

MsgBox "Por Favor Informe o seu CPF."

ValidateData = False

Exit Function

End If

If txtelefone.TextLength <> 10 Then

MsgBox "O Telefone deve possuir 10 números (DDD + número)"

ValidateData = False

Exit Function

End If

If txcelular.TextLength <> 10 Then

MsgBox "O Celular deve possuir 10 números (DDD + números)"

ValidateData = False

Exit Function

End If

If txendereco.Value = "" Then

MsgBox "Por Favor Informe o seu Endereço."

ValidateData = False

Exit Function

End If

If txcidade.Value = "" Then

MsgBox "Por Favor Informe a Cidade"

ValidateData = False

Exit Function

End If

If cmbestado.Value = "" Then

MsgBox "Por Favor Selecione um Estado"

ValidateData = False

Exit Function

End If

If txcep.TextLength <> 8 Then

MsgBox "O CEP deve Haver 8 Digitos"

ValidateData = False

Exit Function

End If

ValidateData = True

End Function

--------------------------------------------------------

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Duas perguntas que podem ajudá-lo:

1) Você realmente tem uma Worksheet (planilha) chamada "1", ou você está dizendo ao seu código para colar as informações na primeira Worksheet (planilha) que ele encontrar? Se for esta última, então retire as aspas duplas (") e deixe somente o número 1 mesmo.

Set r = Worksheets(1).Range("A2").CurrentRegion
2) A Worksheet (planilha) está na mesma pasta de trabalho (arquivo .xls) onde está o formulário? Se não, então diga qual é a pasta de trabalho no código:
Set r = Workbooks("arquivo_feliz.xls").Worksheets("1").Range("A2").CurrentRegion

Editado por João.Neto
Link para o comentário
Compartilhar em outros sites

  • 0

João.Neto tentei do 1ª modo que você me colocou

Set r = Worksheets(1).Range("A2").CurrentRegion

bom, deu certo mas apresentou outro erro agora. ele insere os dados na planilha, mas ao invés de inserir apenas um dado por vez ele insere os mesmo dados para ser mais precisos 6552 vezes ate mostrar a tela de erro Erro em tempo de execução '- 2147417848 (80010108)': O método 'Range' do Objeto '_Worksheet' falhou e na depuração o erro aparece na mesmo linha de antes Set r = Worksheets(1).Range("A2").CurrentRegion !!! Por favor se poder me ajudar nessa! Agradeço!!

Link para o comentário
Compartilhar em outros sites

  • 0

Acredito que essa rotina execute o mesmo que você está tentando:

Public Sub EnterDataInWorksheet()
'copia os dados do formulário para a planilha

Dim r As Range
Dim r1 As Range
Worksheets(1).Range("A65536").End(xlUp).Offset(1,0) = txnome.Value
Worksheets(1).Range("A65536").End(xlUp).Offset(0,1) = txcpf.Value
Worksheets(1).Range("A65536").End(xlUp).Offset(0,2) = txtelefone.Value
Worksheets(1).Range("A65536").End(xlUp).Offset(0,3) = txcelular.Value
Worksheets(1).Range("A65536").End(xlUp).Offset(0,4) = txendereco.Value
Worksheets(1).Range("A65536").End(xlUp).Offset(0,5) = txcidade.Value
Worksheets(1).Range("A65536").End(xlUp).Offset(0,6) = cmbestado.Value
Worksheets(1).Range("A65536").End(xlUp).Offset(0,7) = txcep.Value

End Sub

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...