PROBLEMAS COM UMA ROTINA
Não estou conseguindo entender o que estou fazendo de errado, quando chega no exit do ele vai para o final da rotina, e não para onde deveria ir (para o else), sou novato ainda, segue o códico
Private Sub Inserir()
Dim strCodigo As String
Dim intResp As Integer
If Not (rcsCli.EOF And rcsCli.BOF) Then
rcsCli.Index = "iCodCliente"
varMarca = rcsCli.Bookmark
Do While True
strCodigo = InputBox("Digite o código", "Inclusão")
If IsNumeric(strCodigo) = False Then
strCodigo = ""
End If
rcsCli.Seek "=", strCodigo
If (rcsCli.NoMatch) And (strCodigo <> "") Then
Exit Do 'Daqui ele sai da rotina
Else
intResp = MsgBox("Código já existente, ou não é válido" & vbCrLf & "Outro?", vbYesNo, "Inclusão")
If intResp = vbNo Then
rcsCli.Bookmark = varMarca
MoverParaTela
Exit Sub
End If
End If
Loop
Else
strCodigo = InputBox("Digite Código")
If strCodigo = "" Then
strCodigo = 1
End If
LimparTela
strManutencao = "I"
rcsCli.AddNew
fraCli.Enabled = True
txtCodigo.Enabled = False
txtCodigo.Text = strCodigo
txtNome.SetFocus
cmdBusca.Visible = False
With tbrCli
.Buttons(1).Enabled = False
.Buttons(2).Enabled = False
.Buttons(3).Enabled = False
.Buttons(4).Enabled = False
.Buttons(6).Enabled = False
.Buttons(7).Enabled = False
.Buttons(8).Enabled = False
.Buttons(10).Enabled = True
.Buttons(11).Enabled = True
End With
End If
End Sub
Amigo Exit do ele vai para depois do LOOP porem no seu caso se ele entrou no Do While ele está dentro do IF e nesse caso ele vai para o End If porque o Else significa Se Não, ou seja, ele só vai para o else quando a condição no If for falsa.
Se você quer que ela vá para dentro do else então coloque um rótulo na rotina (é só escolher um nome qualquer sem espaço seguido de dois pontos(:) e colocá-lo sozinho em uma linha) e no lugar do Exit Do use GoTo NomeQueVcEscolheu
Ficaria assim:
Tenta ai, Abraços
Não esquece de encerrar o tópico quando conseguir.
Se você quer que ela vá para dentro do else então coloque um rótulo na rotina (é só escolher um nome qualquer sem espaço seguido de dois pontos(:) e colocá-lo sozinho em uma linha) e no lugar do Exit Do use GoTo NomeQueVcEscolheu
Ficaria assim:
Private Sub Inserir()
Dim strCodigo As String
Dim intResp As Integer
If Not (rcsCli.EOF And rcsCli.BOF) Then
rcsCli.Index = "iCodCliente"
varMarca = rcsCli.Bookmark
Do While True
strCodigo = InputBox("Digite o código", "Inclusão")
If IsNumeric(strCodigo) = False Then
strCodigo = ""
End If
rcsCli.Seek "=", strCodigo
If (rcsCli.NoMatch) And (strCodigo <> "") Then
GoTo Continua 'Daqui ele vai para o rótulo chamado Continua
Else
intResp = MsgBox("Código já existente, ou não é válido" & vbCrLf & "Outro?", vbYesNo, "Inclusão")
If intResp = vbNo Then
rcsCli.Bookmark = varMarca
MoverParaTela
Exit Sub
End If
End If
Loop
Else
Continua: '<-- Esse é o rótulo
strCodigo = InputBox("Digite Código")
If strCodigo = "" Then
strCodigo = 1
End If
LimparTela
strManutencao = "I"
rcsCli.AddNew
fraCli.Enabled = True
txtCodigo.Enabled = False
txtCodigo.Text = strCodigo
txtNome.SetFocus
cmdBusca.Visible = False
With tbrCli
.Buttons(1).Enabled = False
.Buttons(2).Enabled = False
.Buttons(3).Enabled = False
.Buttons(4).Enabled = False
.Buttons(6).Enabled = False
.Buttons(7).Enabled = False
.Buttons(8).Enabled = False
.Buttons(10).Enabled = True
.Buttons(11).Enabled = True
End With
End If
End Sub
Tenta ai, Abraços
Não esquece de encerrar o tópico quando conseguir.
Funcionou, muito obrigado!!
Tópico encerrado , respostas não são mais permitidas