Notifications
Clear all

Script VBA não executa corretamente quando chamado por botão

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

Boa tarde!

Tenho uma planilha que contém dados de clientes. E criei uma macro para retirar da listagem de clientes, os que não pertencem aos estados selecionados em uma determinada célula do Excel.

A macro é a seguinte:

Sub limpaContatos()
    
    'Variaveis para a Sheet Parametros
    Dim contadorIni As Integer
    Dim contadorFim As Integer
    Dim rangeEstados As String
    contadorFim = 33
    'Set rangeEstados = Nothing

    'Variaveis para a Sheet Dados
    Dim ultimaDados As Integer
    Dim contadorIniDados As Integer
    Dim contadorFimDados As Integer
    Dim rangeDados As String
    'Set rangeDados = Nothing
    contadorFimDados = Sheets("Dados").Range("A1048576").End(xlUp).Row 'Ultima linha preenchida
    
    'Este FOR vai listar estados que vão ser utilizados
    For contadorIni = 7 To contadorFim
        rangeEstados = "L" & contadorIni
        
        If Sheets("Parametros").Range(rangeEstados).Value <> "" Then
           
           For contadorIniDados = 2 To contadorFimDados
            rangeDados = "D" & contadorIniDados
            If Sheets("Parametros").Range(rangeEstados).Value = Sheets("Dados").Range(rangeDados).Value Then
               Range("A" & contadorIniDados & ":D" & contadorIniDados).Clear
            End If
         Next contadorIniDados
        End If
    Next contadorIni
    MsgBox ("Passou por aqui")
End Sub

Pois bem, se eu executa-la diretamente do Microsoft Visual Basic for Application, ela faz exatamente o que está proposta a fazer. Porém, eu inclui em uma das pastas um botão de formulário (Também tentei com um Forma) e atribui a ele, chamar a macro limpaContatos. Mas nessa situação, ele não limpa as linhas as quais defini.
A planilha está em anexo. Na aba parametros, seleciono o estado e clico no botão. Ele deve fazer uma consulta ao banco e retirar da listagem vinda do banco, todos os clientes que não são daquele estado.

Desde já agradeço!

 
Postado : 25/11/2016 11:29 am
(@mprudencio)
Posts: 2749
Famed Member
 

Troque esta linha

Range("A" & contadorIniDados & ":D" & contadorIniDados).Clear

Por esta

Sheets("Dados").Range("A" & contadorIniDados & ":D" & contadorIniDados).Clear

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 25/11/2016 2:02 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Sempre coloque endereço completo dos ranges, especialmente se vc estiver trabalhando com multiplas planilhas ou multiplos ranges...
Nem verifiquei pq vou relevar a resposta do Marcelo como correta....

Se for correta, o que acontece qdo vc não especifica a planilha, o código tenta rodar na planilha ativa, podendo destruir seu arquivo...

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 25/11/2016 5:24 pm
(@spinalsc)
Posts: 2
New Member
Topic starter
 

Bom dia a todos!

Perfeita a solução> Realmente, quando eu executava a macro via editor, eu estava com a aba correta selecionada. Obrigado pelas informações.

Tópico resolvido!

Grato!

 
Postado : 28/11/2016 6:50 am