Clovis, precisamos que detalhe o que realmente está pretendendo, em suas rotinas você faz a verficação de qual é a última linha preenchida na Aba Controle :
Verifica a Última Linha Preenchida
UltimaLinha = Sheets("Controle").Cells(Cells.Rows.Count, 1).End(xlUp).Row
E, se for menor que 5 definimos à variável Ultimalinha como sendo 5 ( =5)
If UltimaLinha < 5 Then UltimaLinha = 5
Depois é utilizado "Target.Row", nesta instrução será definida sempre a primeira celula selecionada, independente se selecionarmos mais de uma celula, exemplificando, na Aba Saída, apague as rotinas que constam na mesma e cole a abaixo :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox Target.Row
MsgBox Target.Address
MsgBox Target.Cells.Count
End Sub
Apos colar, posicione o cursor em cima da linha : Private Sub Worksheet_SelectionChange(ByVal Target As Range) e tecle "F9" a mesma ficará Marrom, volte para planilha e selecione uma celula qualquer, ao fazer isto abrirá a telado VBA na linha em que destacamos utilizando "F9", então vá teclando "F8" e a rotina será executada Passo a Passo cada vez que teclar F8 :
Então supondo que selecionou a Celula "A8" as mensagens serão :
Target.Row = 8 - porque selecionamos a Linha 8
e
Target.Address = $A$8 - porque selecionamos o Endereço (Range) A8
e
Target.Cells.Count = 1 - porque selecionamos somente uma (1) Linha
Agora se selecionar as Celulas "A8 até A10", as mensagens serão :
Target.Row = 8 porque selecionamos a Linha 8 - Row se refere sempre a primeira Linha selecionada
e
Target.Address = "$A$8:$A$10" porque selecionamos o Endereço (Range) A8 até A10.
e
Target.Cells.Count = 3 - porque selecionamos somente TRES (3) Linhas
Então se queremos definir um conjunto de celulas não podemos utilizar ROW neste seu caso.
Espero ter conseguido explicar, só falta você definir realmente qual a intensão.
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 05/06/2012 8:34 pm