Passo 1 - A lista
Primeiro, você pode adicionar a parte "Selecionada" com uma lista suspensa.
Com E1
selecionado, vá para a aba Data e selecione Validação de dados . Selecione List e escreva Selecionado como Source .
Agora arraste E1
para E12
para obter a lista em todas as células.
Etapa 2 - o código
Adicionando linhas
Para acompanhar essas células, alterar um Worksheet_Change
Sub funciona muito bem.
Clique com o botão direito do mouse em "Sheet1" ( ou equivalente ) e selecione Show code .
Para acompanhar e copiar as linhas selecionadas, podemos fazer algo assim:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer, r As Integer
On Error GoTo EndM
If Target.Value = "Selected" And Target.Column = 5 And Target.Row < 13 Then
For r = 15 To 30
If Cells(r, 1).Value = "" Then
Range("A" & r & ":D" & r).Cells.Value = Range("A" & Target.Row & ":D" & Target.Row).Cells.Value
i = 1
End If
If i > 0 Then GoTo EndM
Next r
End If
EndM:
End Sub
Isso procura por alterações na planilha. E, se a alteração de qualquer célula de E1
para E12
for alterada para "selecionar", ela copia as colunas A
para D
da mesma linha, para a primeira linha vazia a partir da linha 15.
Nota
Isto não impede que você selecione a mesma entrada duas vezes, ou seja, obtendo duas linhas de janeiro. Ele também é definido como um limite da linha 30. Após a linha 30, ele não adicionará mais entradas. Pode ser alterado alterando o valor 30
em For r = 15 To 30
Excluindo linhas
Podemos usar basicamente o mesmo método para excluir as linhas novamente quando excluirmos o valor "Selecionado" adicionando
If Target.Column = 5 And Target.Row < 13 And Target.Value = "" Then
For r = 15 To 30
If Cells(r, 1).Value = Cells(Target.Row, 1) Then
Range("A" & r & ":D" & r).Cells.Delete
End If
Next r
End If
Entre End If
e EndM:
no exemplo anterior.
O manipulador Error é necessário para que a planilha não lance um erro sempre que você tentar excluir várias células por vez.
Observação
Isso não será executado se você excluir várias células ao mesmo tempo e não excluirá todas as linhas se o mesmo mês estiver presente duas vezes seguidas.
Você pode, claro, adicionar ou alterar funcionalidades, como restringir a adição de várias entradas adicionando:
ElseIf Cells(r, 1).Value = Cells(.Row, 1).Value Then
MsgBox ("Multiple entries are not allowed!")
GoTo EndM
Entre i = 1
e End If
na parte Adicionando.
Boa sorte!