Notifications
Clear all

Macro esta exigindo que txt não esteja vazio

4 Posts
2 Usuários
0 Reactions
803 Visualizações
(@ueleodoro)
Posts: 133
Estimable Member
Topic starter
 

Bom Dia a todos,

Estou com uma dificuldade com um trabalho. Se eu preencher o formulário e deixar algum campo vazio, campo para ser preenchido em outro momento, o sistema ao clicar incluir me leva ao depurado e seleciona a primeira linha que esta vazio. Se eu preencher o campo referente a essa linha no txt do formulário, o mesmo problema ocorre com a próxima linha, ou seja com o próximo campo vazio. Curioso se eu colocar um 0 (zero) nos campos tudo da certo, porém ficar colocando zero não é a alternativa mais eficiente né. Estou iniciante e estou apanhando bastante com coisas básicas, espero que possam me ajudar. Abaixo o código.

Esta em negrito e com Smilies a parte do código que inicia o erro. Obrigado.

Private Sub cmdincluir_Click()
Sheets("ADM FICHAS").Select

i = 1

If Me.cbsequencia = "" Then
MsgBox "Clique Inicialmente em NOVO", vbOKOnly, "Administração de Fichas"
Me.cmdnovo.SetFocus
Exit Sub
End If

If Me.txtcodkit = "" Then
MsgBox "Falta digitar o 'KIT'"
Me.txtcodkit.SetFocus
Exit Sub
End If

If Me.txtmatricula = "" Then
MsgBox "Falta digitar a 'MATRICULA'"
Me.txtmatricula.SetFocus
Exit Sub
End If

If Me.txtstatusrevendedor = "INATIVO" Then
MsgBox " ATENÇÃO: revendedor(a) " & Me.txtrevendedor & " tem seu cadastro INATIVO."
Me.txtmatricula.SetFocus
Exit Sub
End If

Do Until Cells(i, 1) = ""
i = i + 1
Loop

Dim lSequencia As Long
Dim lCodkit As Long
Dim lmatricula As Long
Dim lQtpc As Long
Dim cVrkit As Long
Dim cCtkit As Long
Dim dDtmontagem As Date
Dim dDtvisita As Date
Dim dDtretorno As Date
Dim dDtacerto As Date
Dim iPorcentagem As Integer
Dim cParticipacao As Currency
Dim cVdreais As Currency
Dim cFtlq As Currency
Dim cCmpr As Currency
Dim cVdbt As Currency
Dim cDevedor As Date
Dim cVendacartao As Date

lSequencia = Me.cbsequencia
lCodkit = Me.txtcodkit
lmatricula = Me.txtmatricula
:shock: lQtpc = Me.txtqtpc :shock:
cVrkit = Me.txtvrkit
cCtkit = Me.txtctkit
dDtmontagem = Me.txtdtmontagem
dDtvisita = Me.txtdtvisita
dDtretorno = Me.txtdtretorno
dDtacerto = Me.txtdtacerto
iPorcentagem = Me.txtporcentagem
cParticipacao = Me.txtparticipacao
cVdreais = Me.txtvdreais
cFtlq = Me.txtftlq
cCmpr = Me.txtcmpr
cVdbt = Me.txtvdbt
cDevedor = Me.txtdevedor
cVendacartao = Me.txtvendacartao

Cells(i, 1) = lSequencia
Cells(i, 2) = lCodkit
Cells(i, 3) = lmatricula
Cells(i, 4) = Me.txtrevendedor.Text
Cells(i, 5) = lQtpc
Cells(i, 6) = cVrkit
Cells(i, 7) = cCtkit
Cells(i, 8) = dDtmontagem
Cells(i, 9) = dDtvisita
Cells(i, 10) = dDtretorno
Cells(i, 11) = dDtacerto
Cells(i, 12) = cVdreais
Cells(i, 13) = cParticipacao
Cells(i, 14) = iPorcentagem
Cells(i, 15) = cFtlq
Cells(i, 16) = cCmpr
Cells(i, 17) = cVdbt
Cells(i, 18) = cDevedor
Cells(i, 19) = cVendacartao

Me.cbsequencia.Value = ClearContents
Me.txtcodkit.Value = ClearContents
Me.txtmatricula.Value = ClearContents
Me.txtrevendedor.Value = ClearContents
Me.txtqtpc.Value = ClearContents
Me.txtvrkit.Value = ClearContents
Me.txtctkit.Value = ClearContents
Me.txtdtmontagem.Value = ClearContents
Me.txtdtvisita.Value = ClearContents
Me.txtdtretorno.Value = ClearContents
Me.txtdtacerto.Value = ClearContents
Me.txtvdreais.Value = ClearContents
Me.txtparticipacao.Value = ClearContents
Me.txtporcentagem.Value = ClearContents
Me.txtftlq.Value = ClearContents
Me.txtcmpr.Value = ClearContents
Me.txtvdbt.Value = ClearContents
Me.txtdevedor.Value = ClearContents
Me.txtvendacartao.Value = ClearContents

Application.DisplayAlerts = False 'Disabilita o prompt
ActiveWorkbook.Save 'Salva as alterações
Application.DisplayAlerts = True 'Habilita o prompt

End Sub

 
Postado : 01/02/2013 5:30 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Voce definiu variaveis do tipo long, essas variaveis "esperad" receber valor numerico, ao definir o valor ( lQtpc = Me.txtqtpc) e o txt está vazio, gera o conflito de tipo incompativeis.
Duas possibilidades para contornar, utilize um if para cada igualdade.
Exemplo:

If me.txtqtpc="" then
lQtpc =0 '(zero)
else
 lQtpc = Me.txtqtpc
end if

Ou redefina essas variaveis para o tipo Variant.

Dim lQtpc As Variant

Eu, pessoalmente, apesar de um pouco mais trabalhosa, recomendo utilizar a primeira opção

 
Postado : 01/02/2013 6:00 am
(@ueleodoro)
Posts: 133
Estimable Member
Topic starter
 

Fiz com a primeira opç utilizando If, perfeito. Só tirando uma dúvida. Para Date e Currecy tb tive que fazer a condicional, acontece o mesmo para eles tb?

 
Postado : 01/02/2013 7:33 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Sim, pois Date e Currency tambem "esperam" receber valores numéricos

 
Postado : 01/02/2013 8:02 am