Oi Claudinei, sou eu mesmo. Fiquei longe um tempo, agora estou de volta (em São Paulo e no Forum), não sei por quanto tempo, rs
Que bom que deu certo, eu nem tinha testado,
Para comentar o código, preciso explicar a lógica.
Pensei: ok, temos que redimensionar a tela de alguma maneira. Mas para redimensionar, este código depende de selecionar as células para as quais você quer ajustar o zoom. E não podemos perder a seleção anterior, pq, imagina só, o cara vai numa célula olha pra ela, seleciona ela, lá embaixo no fundo da plan, demorou, mas encontrou a mardita célula que ele queria. Daí ele vai em outra planilha, pra copiar um valor de lá e colocar de volta na célula que estava selecionada. Pronto, se eu simplesmente usasse o código que seleciona as células da linha 1, sem pensar no que estava selecionado antes, o cara ia dar uma cacetada na mesa , xingar até a mãe do juiz , e teria que procurar aquela célula de novo, que agora ele não lembra onde está .
Então, no código, eu precisei guardar os detalhes de posicionamento de tela, e da célula selecionada, para poder recuperá-los posteriormente. Eu só não gostei de rodar esse código toda vez, no evento sheet_activate. Mas aí é gosto do cliente, rs
Ok vamos ao código.
Private Sub Worksheet_Activate()
'Declaração de objetos e variáveis
Dim rngSelection As Range
Dim lRow As Long
Dim lCol As Long
'Verificando se a seleção atual é de uma célula (poderia ser uma imagem ou um gráfico, não tratados nesse código)
'Se a seleção for uma célula, registrando que célula é essa no objeto rngSelection
If TypeName(Selection) = "Range" Then Set rngSelection = Selection
With ActiveWindow
'ScrollRow e ScrollCol são propriedades do objeto window, que indicam qual a primeira linha e coluna da janela ativa, sendo vistas pelo Excel, respectivamente.
'Guardei seus resultados atuais nestas variáveis, só para poder recuperá-los mais tarde
lRow = .ScrollRow
lCol = .ScrollColumn
'Alterei os ScrollRow e ScrollCol para 1, garantindo que a primeira célula visível à esquerda é a célula A1
.ScrollRow = 1
.ScrollColumn = 1
'Selecionar de A a J
ActiveSheet.Range("A1:J1").Select
'Esta é a "mágica" do código. que acerta o zoom para a área selecionada acima
.Zoom = True
'Pronto, tudo feito, agora é hora de recuperar o posicionamento de tela para aonde estava antes
.ScrollRow = lRow
.ScrollColumn = lCol
End With
If Not rngSelection Is Nothing Then
'e pra finalizar, agora que a tela voltou aonde estava, mas com outro zoom, hora de selecionar de volta aquela célula q estava selecionada
rngSelection.Select
'destruindo as referencias ao objeto, em memória.
Set rngSelection = Nothing
End If
'FIM
End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 29/06/2012 8:26 pm