PROBLEMAS COM UMA ROTINA

USUARIO.EXCLUIDOS 08/09/2007 10:35:40
#234720
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

MJAC 08/09/2007 11:25:40
#234728
Resposta escolhida
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:

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.
USUARIO.EXCLUIDOS 08/09/2007 12:53:29
#234745
Funcionou, muito obrigado!!
Tópico encerrado , respostas não são mais permitidas