Parece que você precisa de algo assim:
Sub moveselection()
Selection.Offset(1, 0).Select
End Sub
Isso moverá sua seleção uma linha para baixo sem alterar o tamanho da seleção.
Existe uma maneira de mover um intervalo selecionado para a próxima linha?
Digamos que eu tenha selecionado "E9: H9" e que a seleção seja movida para "E10: H10". Existe um atalho para isso? A seleção não deve ser estendida, mas movida uma linha para baixo.
(a) Esse código não desce uma linha conforme a pergunta
(b) Ele funcionará apenas na primeira linha de uma seleção, você quer que ele funcione em uma seleção de múltiplas linhas?
(c) Em vez de chamar um sub para isso, você poderia executá-lo automaticamente clicando com o botão direito do mouse - você pode fazer isso clicando com o botão direito na guia de planilha, no View Code e colando no código abaixo
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
On Error Resume Next
Range("E" & CStr(Selection.Row) & ":" & "GN" & CStr(Selection.Row)).Select
End Sub
Uma alternativa que usa argumentos nomeados e é, portanto, muito mais clara, é algo assim.
ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate
Um rowOffset positivo move a seleção para baixo da planilha, um rowOffset negativo sobe o número especificado de linhas e um deslocamento de zero deixa a linha na qual a seleção reside inalterada.
Da mesma forma, os deslocamentos positivos movem a seleção para a direita, enquanto as compensações negativas movem-se para a esquerda. Zero, claro, deixa a coluna inalterada.
Consulte a Propriedade Range.Offset (Excel)
Duas descobertas relacionadas podem ser de interesse para os futuros visitantes.
Selection.EntireColumn.Insert
e cuidado com Range.Insert, que gera erro de tempo de execução 1004, pelo menos em algumas circunstâncias, como planilhas protegidas (mesmo com inserção de coluna permitida enquanto está protegido). Ok,
O cursor tem que estar na linha e os intervalos "E" e "GN" precisam de ajuste para colunas diferentes, mas isso me poupa algum tempo:
Sub SelectRange()
Dim RowNumber As Integer
RowNumber = Selection.Row
Range("E" & CStr(RowNumber) & ":" & "GN" & CStr(RowNumber)).Select
End Sub