Notifications
Clear all

FINDNEXT

4 Posts
2 Usuários
0 Reactions
1,212 Visualizações
(@gabrielmgc)
Posts: 3
New Member
Topic starter
 

Bom dia, estou desenvolvendo uma planilha de controle de almoxarifado.
Preciso depois de procurar o valor da variável "coditen" em B:B, verificar se o saldo disponivel da coluna L é 0, e se for procurar o próximo registro com valor de coditen.
Porém meu método .FindNext está dando erro.

Sub saída()
Dim i As Integer
coditen = Sheets("Saída").Range("C6").Value

Sheets("BD_Entrada").Select
Columns("B:B").Select
Selection.Find(What:=coditen, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
selectlin = ActiveCell.Row
selectcol = ActiveCell.Column

For i = 1 To 10

If (Cells(selectlin, 12) - Sheets("Saída").Range("G6").Value < 0) Then
x = Sheets("Saída").Range("G6").Value - Cells(selectlin, 12)
Cells(selectlin, 12) = 0
Range("B:B").FindNext (coditen)
selectlin = ActiveCell.Row
MsgBox (selectlin)

Else

Cells(selectlin, 12) = Cells(selectlin, 12) - Sheets("Saída").Range("G6").Value
Cells(selectlin, 12) = Cells(selectlin, 12) - x
MsgBox (Cells(selectlin, 12))

End If
Next i

End Sub

Alguem pode me ajudar ?

 
Postado : 19/09/2016 8:32 am
Basole
(@basole)
Posts: 487
Reputable Member
 

Por favor teste as alteraçes:

Sub saída()
    Dim i As Integer, rng As Range, firstAddress As String, selectcol As String, selectlin As String, coditen as String
    coditen = Sheets("Saída").Range("C6").Value

    With Sheets("BD_Entrada")

        Set rng = .Columns(2).Find(What:=coditen, LookIn:=xlValues, _
                                   LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                                   MatchCase:=False, SearchFormat:=False)
        If Not rng Is Nothing Then
            firstAddress = rng.Address
            
            Do
                selectlin = rng.Row
                selectcol = rng.Column

                If (Cells(selectlin, 12) - Sheets("Saída").Range("G6").Value < 0) Then
                    x = Sheets("Saída").Range("G6").Value - Cells(selectlin, 12)
                    Cells(selectlin, 12) = 0
                Else

                    Cells(selectlin, 12) = Cells(selectlin, 12) - Sheets("Saída").Range("G6").Value
                    Cells(selectlin, 12) = Cells(selectlin, 12) - x
                    MsgBox (Cells(selectlin, 12))
                End If
                
                Set rng = .Columns(2).FindNext(rng)
                selectlin = rng.Row
                MsgBox (selectlin)
            Loop While Not rng Is Nothing And rng.Address <> firstAddress

        End If


    End With
End Sub

Click em se a resposta foi util!

 
Postado : 19/09/2016 11:00 am
(@gabrielmgc)
Posts: 3
New Member
Topic starter
 

Mudei meu código, to usando a estrutura de repetição do while, só que estou com um erro agora no Loop While [(Cells(selectlin, 12).Value - qnt) < 0], o excel da erro no '13', Tipos imcompatíveis.

Alguém sabe o porque ?
Segue o cod:

Sub saída()
Dim i As Integer
coditen = Sheets("Saída").Range("C6").Value
qnt = Sheets("Saída").Range("G6").Value
Sheets("BD_Entrada").Select
Columns("B:B").Select
Selection.Find(What:=coditen, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
selectlin = ActiveCell.Row
selectcol = ActiveCell.Column

Do

qnt = qnt - Cells(selectlin, 12).Value
Cells(selectlin, 12).Value = 0
Selection.FindNext(After:=ActiveCell).Activate
selectlin = ActiveCell.Row

Loop While [(Cells(selectlin, 12).Value - qnt) < 0]

Cells(selectlin, 12).Value = Cells(selectlin, 12).Value - qnt

End Sub

 
Postado : 19/09/2016 11:14 am
(@gabrielmgc)
Posts: 3
New Member
Topic starter
 

Mudei meu código, to usando a estrutura de repetição do while, só que estou com um erro agora no Loop While [(Cells(selectlin, 12).Value - qnt) < 0], o excel da erro no '13', Tipos imcompatíveis.

Alguém sabe o porque ?
Segue o cod:

Sub saída()
Dim i As Integer
coditen = Sheets("Saída").Range("C6").Value
qnt = Sheets("Saída").Range("G6").Value
Sheets("BD_Entrada").Select
Columns("B:B").Select
Selection.Find(What:=coditen, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
selectlin = ActiveCell.Row
selectcol = ActiveCell.Column

Do

qnt = qnt - Cells(selectlin, 12).Value
Cells(selectlin, 12).Value = 0
Selection.FindNext(After:=ActiveCell).Activate
selectlin = ActiveCell.Row

Loop While [(Cells(selectlin, 12).Value - qnt) < 0]

Cells(selectlin, 12).Value = Cells(selectlin, 12).Value - qnt

End Sub

PODE DEIXAR GLR

 
Postado : 19/09/2016 11:34 am