Prezados(as), boa noite!
Preciso criar uma macro com algumas condicionais que impossibilitem o usuário de inserir (digitando ou colando) determinados valores de um range em outro range. Exemplo:
1- Na célula A1 existe uma lista suspensa (drop down list) com três opções: “Custo”, “Despesa “ e “Projeto;
2- Ao selecionar na lista suspensa a opção “Custo”, só serão permitidos inserir na coluna G da Plan1 valores que estão no range “R2:R5” contido na Plan2, ou seja, caso o usuário cole ou digite algum valor que não está neste range a planilha deverá emitir uma mensagem de aviso e exlcuir o valor inserido;
3- Da mesma forma deverá ocorrer ao selecionar na lista suspensa a opção “Despesa”, só serão permitidos inserir na coluna G da Plan1 valores que estão no range “F2:F5” contido na Plan2. Para a opção “Projeto”também deverá seguir o mesmo racional, só serão permitidos valores que estão no range “L2:L5”contido na Plan2;
Consegui fazer parte do código, porém sem conseguir todas as condicionais (opções da lista e diferentes ranges), sem emitir a mensagem corretamente, e sem excuir os valores inseridos:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Cell As Range
If Not Intersect(Target, Columns("G")) Is Nothing Then
For Each Cell In Intersect(Target, Columns("G"))
If IsNumeric(Application.Match(ActiveCell.Value, Sheets("Plan2").Range("R2:R5"), 0)) Then Target.ClearContents
Next
End If
End Sub
Gostaria de saber os códigos corretos que preciso inserir e ainda posteriormente aperfeiçoar minha planilha com mais dezenas de condicionais com a mesma lógica.
Infelizmente ainda sou iniciante nos estudos de VBA e não consegui resolver essa questão que acredito que para a maioria de vocês deve ser bem simples.
Desde já agradeço a colaboração e o apoio de vocês!!
Fico no aguardo.
Obrigado!
Postado : 05/10/2016 6:56 pm