Notifications
Clear all

Ajuda nas funções

4 Posts
3 Usuários
0 Reactions
998 Visualizações
(@mcordeiro)
Posts: 0
New Member
Topic starter
 

Pessoal estou fazendo uma planilha que faz comparativo com registros de NFs e as retenções (quando ocorrem) do ISS (imposto sobre serviço) com um codigo na aba (Quadro Sinotico) das empresas já desenvolvi algumas subs que estão rodando bem, mas estou com dificuldade na seguinte:

A sub abaixo tem como ideia buscar a que município esta estabelecida a empresa

Sub ProcurarMunicipioTESTE()
ThisWorkbook.Worksheets("Cruzamento").Activate
Range("C3").Select
Do While Not IsEmpty(ActiveCell)
If ActiveCell.Offset(-2, 10).Select = "1" Then
ActiveCell.Offset(0, 26).Value = Application.WorksheetFunction.VLookup(ActiveCell, ThisWorkbook.Worksheets("UNIDADES").Range("D2:E39"), 2, False)
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Offset(-2, 10).Select = "2" Then
ActiveCell.Offset(0, 26).Value = Application.WorksheetFunction.VLookup(ActiveCell, ThisWorkbook.Worksheets("UNIDADES").Range("D40:E40"), 2, False)
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Offset(-2, 10).Select = "3" Then
ActiveCell.Offset(0, 26).Value = Application.WorksheetFunction.VLookup(ActiveCell, ThisWorkbook.Worksheets("UNIDADES").Range("D41:E53"), 2, False)
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Offset(-2, 10).Select = "4" Then
ActiveCell.Offset(0, 26).Value = Application.WorksheetFunction.VLookup(ActiveCell, ThisWorkbook.Worksheets("UNIDADES").Range("D54:E57"), 2, False)
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Offset(-2, 10).Select = "5" Then
ActiveCell.Offset(0, 26).Value = Application.WorksheetFunction.VLookup(ActiveCell, ThisWorkbook.Worksheets("UNIDADES").Range("D58:E63"), 2, False)
ActiveCell.Offset(1, 0).Select
End If
Loop
End Sub

A pessoal que irá utilizar a planilha irá selecionar na aba (Input) qual empresa será analisada, isso irá gerar um numero na célula M1 da aba (Cruzamento) (numero em branco para não aparecer) e dai a sub deverá buscar o código da empresa na célula C3 na aba (unidades) restringi cada tipo de empresa limitando a linha na procura mas não esta achando. Exempli numero 1 na M1 = as empresas BR10 que estão entre a linha 2 e a 39.
Obs. só tem uma cadastrada para teste mesmo e mesmo assim não esta achando (que seria a empresa tipo 3 (BR42) LN 0029. Se puderem me ajudar agradeço. Qualquer duvida estou a disposição.

 
Postado : 08/01/2016 9:39 am
(@mprudencio)
Posts: 0
New Member
 

Seria bom preencher a planilha com dados para os testes.

 
Postado : 08/01/2016 10:50 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não sei se entendi corretamente mas experimente:

Sub ProcurarMunicipioTESTE()


ThisWorkbook.Worksheets("Cruzamento").Activate

Range("C3").Select


Do While Not IsEmpty(ActiveCell)
    Select Case ActiveCell.Offset(-2, 10).Value
        Case 1, 2, 3, 4, 5
            ActiveCell.Offset(0, 26).Value = Application.WorksheetFunction.VLookup(ActiveCell, ThisWorkbook.Worksheets("UNIDADES").Range("D2:E63"), 2, False)
        End Select
    ActiveCell.Offset(1, 0).Select
Loop
End Sub
 
Postado : 08/01/2016 11:48 am
(@mcordeiro)
Posts: 0
New Member
Topic starter
 

Reinaldo,

Consegui resolver, achei dois erros:

Erro 1: If ActiveCell.Offset(-2, 10).Select = "1" Then - usei SELECT era pra ser Value
Erro 2: estava usando offset e depois mandava fazer a busca na celular de baixo logo minha referencia para o tipo de empresa que era na M1 descia para M2 e assim por diante. mudei para If Range("M1").Value = "1" Then

Parti para a proxima sub nessa planilha rs rs rs Verificar se o mesmo código de fornecedor possui nfs registradas com mais de um codigo de serviço, esse vai me dar mais trabalho. se não conseguir posto aqui a duvida.
Mas muito obrigado a todos.

Segue a sub final caso alguem queira usar como base para algo

Sub ProcurarMunicipioTESTE()

ThisWorkbook.Worksheets("Cruzamento").Activate

Range("C3").Select

Do While Not IsEmpty(ActiveCell)
If Range("M1").Value = "1" Then
ActiveCell.Offset(0, 26).Value = Application.WorksheetFunction.VLookup(ActiveCell, ThisWorkbook.Worksheets("UNIDADES").Range("D2:E39"), 2, False)
ActiveCell.Offset(1, 0).Select
ElseIf Range("M1").Value = "2" Then
ActiveCell.Offset(0, 26).Value = Application.WorksheetFunction.VLookup(ActiveCell, ThisWorkbook.Worksheets("UNIDADES").Range("D40:E40"), 2, False)
ActiveCell.Offset(1, 0).Select
ElseIf Range("M1").Value = "3" Then
ActiveCell.Offset(0, 26).Value = Application.WorksheetFunction.VLookup(ActiveCell, ThisWorkbook.Worksheets("UNIDADES").Range("D41:E53"), 2, False)
ActiveCell.Offset(1, 0).Select
ElseIf Range("M1").Value = "4" Then
ActiveCell.Offset(0, 26).Value = Application.WorksheetFunction.VLookup(ActiveCell, ThisWorkbook.Worksheets("UNIDADES").Range("D54:E57"), 2, False)
ActiveCell.Offset(1, 0).Select
ElseIf Range("M1").Value = "5" Then
ActiveCell.Offset(0, 26).Value = Application.WorksheetFunction.VLookup(ActiveCell, ThisWorkbook.Worksheets("UNIDADES").Range("D58:E63"), 2, False)
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If

Loop

End Sub

 
Postado : 08/01/2016 12:30 pm