Msgbox when he can’t find the search doesn’t show up

Asked

Viewed 18 times

-1

Msgbox in bold does not work. Or when it works it does not take the data located.

sub MSIAPE() Application.Screenupdating = False

Dim MSIAPE As String
Dim Celula As Range
Dim Valor
Dim Assunto As String
Dim Processo As String
Dim Error As String

MSIAPE = InputBox("Digite a matrícula SIAPE:")
        
ThisWorkbook.Worksheets("Impressão").Range("B13").Value = MSIAPE
    
For Each Celula In Sheets("Funcionario").UsedRange
    If Celula.Value = MSIAPE Then
        If Celula.Offset(0, 6).Value = "" Then
            MsgBox "O campo Processo não pode ficar vazio", 48, "Campo em branco"
    flag = 0
            Processo = InputBox("Digite o Processo:")
            Sheets("Impressão").[b7].Value = Processo
            Else
                Sheets("Impressão").[b7].Value = Celula.Offset(0, 6).Value
        End If
        If Celula.Offset(0, 6).Value = "" Then
            MsgBox "O campo Assunto não pode ficar vazio", 48, "Campo em branco"
            flag = 0
            Assunto = InputBox("Digite o Assunto:")
            Sheets("Impressão").[b8].Value = Assunto
            Else
                Sheets("Impressão").[b8].Value = Celula.Offset(0, 8).Value
        End If
            Sheets("Impressão").[b12].Value = Celula.Offset(0, 1).Value
            Sheets("Impressão").[b14].Value = Celula.Offset(0, 7).Value
            Sheets("Impressão").[b15].Value = Celula.Offset(0, 2).Value & " a " & Celula.Offset(0, 3).Value
        If Celula.Value <> MSIAPE Then
            **MsgBox "Esta Matrícula SIAPE esta errada ou não existe!"**
Exit For
        End If
    End If
Next

Sheets("Impressão").Select
     Range("b13").Select

End Sub

1 answer

0

Hello.

I didn’t look at all the code, I looked at where you’re in trouble. Follows correction:

Sub MSIAPE()
Application.ScreenUpdating = False
Dim MSIAPE As String
Dim Celula As Range
Dim Valor
Dim Assunto As String
Dim Processo As String
Dim Error As String

MSIAPE = InputBox("Digite a matrícula SIAPE:")
        
ThisWorkbook.Worksheets("Impressão").Range("B13").Value = MSIAPE
    
For Each Celula In Sheets("Funcionario").UsedRange
    If Celula.Value = MSIAPE Then
        If Celula.Offset(0, 6).Value = "" Then
            MsgBox "O campo Processo não pode ficar vazio", 48, "Campo em branco"
    flag = 0
            Processo = InputBox("Digite o Processo:")
            Sheets("Impressão").[b7].Value = Processo
            Else
                Sheets("Impressão").[b7].Value = Celula.Offset(0, 6).Value
        End If
        If Celula.Offset(0, 6).Value = "" Then
            MsgBox "O campo Assunto não pode ficar vazio", 48, "Campo em branco"
            flag = 0
            Assunto = InputBox("Digite o Assunto:")
            Sheets("Impressão").[b8].Value = Assunto
            Else
                Sheets("Impressão").[b8].Value = Celula.Offset(0, 8).Value
        End If
        Sheets("Impressão").[b12].Value = Celula.Offset(0, 1).Value
        Sheets("Impressão").[b14].Value = Celula.Offset(0, 7).Value
        Sheets("Impressão").[b15].Value = Celula.Offset(0, 2).Value & " a " & Celula.Offset(0, 3).Value
    Else
        MsgBox "Esta Matrícula SIAPE esta errada ou não existe!"
        Exit For
    End If
Next

Sheets("Impressão").Select
Range("b13").Select

Application.ScreenUpdating = True
End Sub

It turns out the logic is wrong. If Celula.Value = MSIAPE will not be Celula.Value <> MSIAPE. So if it’s not the same, it’s different. These two conditions are opposite, if not in one way, surely it will be in another.

if Celula.Value = MSIAPE THEN
    ...
else
    MsgBox "Esta Matrícula SIAPE esta errada ou não existe!"
    Exit For
end if

OBS. Sorry for the way I expressed myself. I hope you understood.

Just one detail, whenever you turn off the screen update at the beginning:

Application.ScreenUpdating = False

Call again at the end:

Application.ScreenUpdating = True

Browser other questions tagged

You are not signed in. Login or sign up in order to post.