Boa Tarde
adaptando algumas macros e mudando a referencia simplesmente param de funcionar e a outra nao funciona
se alguem puder me ajudar
O código funciona quando é selecionada a célula C2.
Você pode alterar esse endereço, mas só vai funcionar quando for selecionada a célula do endereço.
Simplesmente alterando o valor de uma célula que já está selecionada, eu não consigo fazer.
Está pegando o código que está na célula D3 (.Range("D3").Value). Você também pode alterar esse endereço.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim cod As Range 'Me.Protect "125812", UserInterFaceOnly:=True If Target.Address = "$C$2" Then With Sheets("lancamento") Set cod = Sheets("config").[A:A].Find(.Range("D3").Value, lookat:=xlWhole) If cod Is Nothing Then MsgBox "Código não encontrado": Exit Sub .[c4] = cod.Offset(, 1).Value: .[c5] = cod.Offset(, 2).Value: .[c6] = cod.Offset(, 3).Value .[c7] = cod.Offset(, 4).Value: .[c8] = cod.Offset(, 5).Value: End With 'Range("b8:d8").ClearContents End If End Sub
Não vi problemas ao rodar a rotina do Evento Change, se alterar de "$C$3" para "$D$3", funcionou, eu só acrescentaria a instrução para congelarmos a rotina, porque desta forma ela é executada com as alterações referentes aos resultados.
Private Sub Worksheet_Change(ByVal Target As Range) Dim cod As Range Me.Protect "125812", UserInterFaceOnly:=True If Target.Address = "$C$3" Then 'Congelamos para evitar loop referente as alterações 'efetuadas pelos resultados Application.EnableEvents = False Set cod = Sheets("config").[A:A].Find(Target.Value, lookat:=xlWhole) If cod Is Nothing Then MsgBox "Código não encontrado": Exit Sub ' With Me .[c4] = cod.Offset(, 1).Value: .[c5] = cod.Offset(, 2).Value: .[c6] = cod.Offset(, 3).Value .[c7] = cod.Offset(, 4).Value: .[c8] = cod.Offset(, 5).Value: End With 'Retomamos o controle da macro Application.EnableEvents = True 'Range("b8:d8").ClearContents End If End Sub
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Boa Noite
Testei e Funcionou, quando fui alterar para ('Range("b8:d8").ClearContents) para limpar as celulas
deu erro e nao funcionou mais.
Nao consigo entender porque nao funciona
acabei de mandar novamente o modelo
funcionou,porem quando fui alteras para a limpeza das celulas que gostaria que fossem limpas, simplesmente travou e nao voltou a funcionar
Nilson, não compreendi, pra mim funciona corretamente, acredito que seu modelo está incompleto uma vez que nele não temos nada no range que pretende limpar (Range("b8:d8").ClearContents), mas se realmente quer limpa-lo, a instrução só irá funcionar se tiver alteração somente na celula "J6" que é a condição imposta e a mesma está dentro do "IF" sem "ELSE", mas você tem de passar em que momento quer limpar para podermos ajustar.
A instrução "Application.EnableEvents = False" em termos mais simples, seria como se desativássemos as macros, ela impede de entrarmos em loop dependendo das instruções, e se não devolvermos para "TRUE" nenhuma outra rotina irá funcionar, se em algum momento executou sem devolver a condição tem de executar em separado com "TRUE"
Outra obs é sobre o range digitado, se não tratarmos corretamente é distinguido maiuscula de minuscula, então "$j$6" é diferente de "$J$6", provavelmente a rotina está sendo executada mas indo direto pro final sem fazer nada.
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel