0102-Objeto Range – Propriedades de A a E

Vamos percorrer as propriedades do objeto Range iniciando com AddIndent e, seguindo em ordem alfabética, iremos até XPath, esclarecendo como podem ser utilizadas na construção das macros.

Utilizaremos códigos de exemplo para cada uma destas propriedades demonstrando como podem ser utilizadas. Os nomes dos códigos informam a propriedade tratada em cada um deles. Nos comentários destes códigos estão as explicações de conceitos relacionados à sua aplicação.
Devido à quantidade de propriedades abordadas (95 no total), vamos divulgá-las ao longo de diversos posts.

Hoje veremos as propriedades que se iniciam com a letra A até as iniciadas pela letra E.

Sub Propriedades_Range_AddIndent()
'Retorna ou define um valor que indica se
'o texto será recuado de forma automática
'caso o alinhamento de texto da célula seja
'distribuído na horizontal ou na vertical

'No exemplo abaixo a caixa de mensagem retorna
'o status de recuo automático para a célula A1

If Range("A1").AddIndent Then
MsgBox "A célula A1 possui recuo automático"
Else
MsgBox "A célula A1 não possui recuo automático"
End If

End Sub
Sub Propriedades_Range_Address()

'Retorna, em forma de texto, o endereço de um intervalo
'de acordo com o tipo de referência para linhas e
'colunas e do estilo de referência informado

'O exemplo a seguir mostra os diferentes resultados que
'podem ser obtidos para a representação de A1:D10

Dim Texto As String

With Range("A1:D10")
Texto = "Linha e coluna absolutas, estilo A1: " & _
.Address(RowAbsolute:=True, ColumnAbsolute:=True, _
ReferenceStyle:=xlA1) & vbLf

Texto = Texto & "Linha absoluta e coluna relativa, estilo A1: " & _
.Address(RowAbsolute:=True, ColumnAbsolute:=False, _
ReferenceStyle:=xlA1) & vbLf

Texto = Texto & "Linha relativa e coluna absoluta, estilo A1: " & _
.Address(RowAbsolute:=False, ColumnAbsolute:=True, _
ReferenceStyle:=xlA1) & vbLf

Texto = Texto & "Linha e coluna relativas, estilo A1: " & _
.Address(RowAbsolute:=False, ColumnAbsolute:=False, _
ReferenceStyle:=xlA1) & vbLf

Texto = Texto & "" & vbLf

Texto = Texto & "Linha e coluna absolutas, estilo R1C1: " & _
.Address(RowAbsolute:=True, ColumnAbsolute:=True, _
ReferenceStyle:=xlR1C1) & vbLf

Texto = Texto & "Linha absoluta e coluna relativa, estilo R1C1: " & _
.Address(RowAbsolute:=True, ColumnAbsolute:=False, _
ReferenceStyle:=xlR1C1) & vbLf

Texto = Texto & "Linha relativa e coluna absoluta, estilo R1C1: " & _
.Address(RowAbsolute:=False, ColumnAbsolute:=True, _
ReferenceStyle:=xlR1C1) & vbLf

Texto = Texto & "Linha e coluna relativas, estilo R1C1: " & _
.Address(RowAbsolute:=False, ColumnAbsolute:=False, _
ReferenceStyle:=xlR1C1) & vbLf

End With
MsgBox Texto

End Sub
Sub Propriedades_Range_AddressLocal()

'Retorna, em forma de texto, o endereço de um intervalo
'de acordo com o tipo de referência para linhas e
'colunas e do estilo de referência informado
'respeitando o idioma de instalação do Excel
'A diferença é perceptível para o estilo
'de referência R1C1.
'Compare com os resultados obtidos para Address

'O exemplo a seguir mostra os diferentes resultados que
'podem ser obtidos para a representação de A1:D10

Dim Texto As String

With Range("A1:D10")

Texto = "Linha e coluna absolutas, estilo A1: " & _
.AddressLocal(RowAbsolute:=True, ColumnAbsolute:=True, _
ReferenceStyle:=xlA1) & vbLf

Texto = Texto & "Linha absoluta e coluna relativa, estilo A1: " & _
.AddressLocal(RowAbsolute:=True, ColumnAbsolute:=False, _
ReferenceStyle:=xlA1) & vbLf

Texto = Texto & "Linha relativa e coluna absoluta, estilo A1: " & _
.AddressLocal(RowAbsolute:=False, ColumnAbsolute:=True, _
ReferenceStyle:=xlA1) & vbLf

Texto = Texto & "Linha e coluna relativas, estilo A1: " & _
.AddressLocal(RowAbsolute:=False, ColumnAbsolute:=False, _
ReferenceStyle:=xlA1) & vbLf

Texto = Texto & "" & vbLf

Texto = Texto & "Linha e coluna absolutas, estilo R1C1: " & _
.AddressLocal(RowAbsolute:=True, ColumnAbsolute:=True, _
ReferenceStyle:=xlR1C1) & vbLf

Texto = Texto & "Linha absoluta e coluna relativa, estilo R1C1: " & _
.AddressLocal(RowAbsolute:=True, ColumnAbsolute:=False, _
ReferenceStyle:=xlR1C1) & vbLf

Texto = Texto & "Linha relativa e coluna absoluta, estilo R1C1: " & _
.AddressLocal(RowAbsolute:=False, ColumnAbsolute:=True, _
ReferenceStyle:=xlR1C1) & vbLf

Texto = Texto & "Linha e coluna relativas, estilo R1C1: " & _
.AddressLocal(RowAbsolute:=False, ColumnAbsolute:=False, _
ReferenceStyle:=xlR1C1) & vbLf

End With

MsgBox Texto

End Sub
Sub Propriedades_Range_AllowEdit()

'Retorna um valor Booleano que indica
'se a célula pode ou não ser editada

'Neste exemplo é verificado o status de A1

Dim Texto As String

If Range("A1").AllowEdit Then
Texto = "A célula pode ser editada"
Else
Texto = "A célula está bloqueada"
End If

MsgBox Texto

End Sub
Sub Propriedades_Range_Application()

'Application retorna o nome do aplicativo
'de origem de um objeto.
'No caso do objeto Range, sempre retorna
'Microsoft Excel

MsgBox Range("A1").Application
End Sub
Sub Propriedades_Range_Areas()

'Retorna uma coleção que representa todos os
'os sub-conjuntos de um intervalo.

'A seguir vemos o resultado da contagem das áreas de
'um intervalo resultante da união de outros intervalos

Dim rgUnião As Range

Set rgUnião = Union(Range("A1:A10"), Range("D1:D10"), Range("H1:H10"))

MsgBox "O intervalo contém " & rgUnião.Areas.Count & " áreas."
End Sub
Sub Propriedades_Range_Borders()

'Retorna uma coleção que representa todas
'as bordas de um intervalo.
'Podemos desta forma, definir a aparência
'das bordas de um intervalo.
'Cada elemento da coleção é identificado
'por uma constante que possui uma representação
'numérica destacada nos comentários ao lado das
'linhas de comando a seguir

'Neste exemplo todas as bordas do intervalo são definidas
'na cor preta

With Range("A1:D10")
    .Borders(xlDiagonalDown).ColorIndex = 1     'xlDiagonalDown = 5
    .Borders(xlDiagonalUp).ColorIndex = 1       'xlDiagonalUp = 6
    .Borders(xlEdgeLeft).ColorIndex = 1         'xlEdgeLeft = 7
    .Borders(xlEdgeTop).ColorIndex = 1          'xlEdgeTop = 8
    .Borders(xlEdgeBottom).ColorIndex = 1       'xlEdgeBottom = 9
    .Borders(xlEdgeRight).ColorIndex = 1        'xlEdgeRight = 10
    .Borders(xlInsideVertical).ColorIndex = 1   'xlInsideVertical = 11
    .Borders(xlInsideHorizontal).ColorIndex = 1 'xlInsideHorizontal = 12
End With

'Obs1:
'Como cada constante possui uma representação numérica,
'podemos escrever um loop para definir as bordas de um
'intervalo
'
'Neste exemplo são colocadas todas as bordas à exceção
'das bordas diagonais
'
'With Range("A1:D10")
'    For i = 7 To 12
'    .Borders(i).ColorIndex = 1
'    Next i
'End With
'
'Obs2:
'ColorIndex é a representação numárica da posição de
'uma cor na paleta de cores do Excel.
'Ex. ColorIndex = 1 representa a cor preta

End Sub

Para facilitar a visualização, segue a correspondência de cores e valores e ColorIndex:

Sub Propriedades_Range_Cells()

'Acompanhada dos índices numéricos, representa as coordenadas
'de uma célula num intervalo
'Exemplo
'Range("D2:F10").Cells(1, 1) representa a célula da primeira
'linha e da segunda coluna do intervalo D2:F10 contadas a
'partir da célula do canto superior esquerdo, ou seja, E2

'Se não for indicado o intervalo, cells(i,j) representa a i-ésima
'linha e a j-ésima coluna de uma planilha

'Este tipo de representação é muito útil para realização de loops
'em intervalos de células

'No exemplo a seguir, cada célula do intervalo do loop é preenchida
'com o valor equivalente à soma do número da linha com o número da
'coluna

Dim i As Integer
Dim j As Integer

For i = 1 To 10
    For j = 4 To 8
    Cells(i, j) = i + j
    Next i
Next j

End Sub
Sub Propriedades_Range_Characters()

'Permite retornar uma parte ou a totalidade da
'cadeia de texto inserida em uma célula

'No exemplo a seguir, é inserido um nome numa célula
'e os caracteres de 2 a 5 são definidos em vermelho

With Range("A1")
.Value = "abcdefg"
.Characters(2, 3).Font.ColorIndex = 3
End With

End Sub

Sub Propriedades_Range_Column()

'Retorna o número da primeira coluna da primeira
'área de um intervalo

'O exemplo a reguir retorna o valor 4 (coluna D)

MsgBox Range("D1:F5").Column
End Sub
Sub Propriedades_Range_Columns()

'Retorna a coleção das colunas de um intervalo

'O exemplo a seguir exibe o número de colunas do intervalo

MsgBox Range("A1:J10").Columns.Count

End Sub

Sub Propriedades_Range_Comment()

'Retorna o objeto comentário inserido na célula
'superior esquerdo de um intervalo

'O exemplo exibe o texto do comentário inserido em A1

On Error Resume Next
Texto = Range("A1").Comment.Text

If Texto  "" Then
MsgBox Texto
Else
MsgBox "Não há comentário na célula"
End If

End Sub
Sub Propriedades_Range_Count()

'Retorna o número de células do intervalo
'Valor máximo: 2.147.483.647 de células

'Para este exemplo, é exibida uma MsgBox com o número
'de células do intervalo A1:B4

MsgBox Range("A1:B4").Count
End Sub

Sub Propriedades_Range_CountLarge()

'Retorna o número de células do intervalo
'Valor máximo: 17.179.869.184 de células

'Neste exemplo, é exibida uma MsgBox com o número
'de células do intervalo A1:XFD1048576

MsgBox Range("A1:XFD1048576").CountLarge

End Sub
Sub Propriedades_Range_Creator()

'Retorna um número interior hexadecimal de
'32 bits que representa o código do Excel (5843454C)
'Representação decimal: 1480803660

'Retorna a representação decimal do código do Excel

MsgBox Range("A1").Creator
End Sub

Sub Propriedades_Range_CurrentArray()

'Caso a célula faça parte de uma matriz, retorna a
'matriz completa

'No exemplo a seguir, se A1 estiver incluso numa fórmula
'matricial, é retornado o endereço do intervalo.
'Se não estive inclusa, é exibida uma mensagem que
'informa do fato

On Error Resume Next
MsgBox Range("A1").CurrentArray.Address
If Error.Number  0 Then MsgBox "A célula não faz parte de uma matriz"

End Sub
Sub Propriedades_Range_CurrentRegion()

'Retorna o intervalo contínuo de células que contém o
'intervalo informado

'No exemplo abaixo, é retornado o número de colunas do
'intervalo no qual A1 está inserido

MsgBox Range("A1").CurrentRegion.Columns.Count

End Sub
Sub Propriedades_Range_Dependents()

'Retorna o intervalo que contém todas as células que
'dependem do resultado da célula informada para
'cálculo de funções, ma mesma planilha

'Exemplo: são retornados os endereços das células que
'utilizam a célula A1 em seus cálculos ou é
'exibida uma mensagem, caso A1 não seja referenciado
'em fórmulas

Dim Dependentes As Range

On Error Resume Next
Set Dependentes = Range("A1").Dependents
If Dependentes Is Nothing Then
MsgBox "Esta célula não é utilizada em cálculos"
Else
MsgBox "As células " & Dependentes.Address _
& " utilizam o valor de A1"
End If
End Sub
Sub Propriedades_Range_DirectDependents()

'Retorna o intervalo que contém as células que
'dependem diretamente do resultado da célula informada para
'cálculo de funções, na mesma planilha

'Exemplo: são retornados os endereços das células que
'utilizam diretamente a célula A1 em seus cálculos ou é
'exibida uma mensagem, caso A1 não seja referenciado
'em fórmulas

Dim Dependentes As Range

On Error Resume Next
Set Dependentes = Range("A1").DirectDependents
If Dependentes Is Nothing Then
MsgBox "Esta célula não é utilizada em cálculos"
Else
MsgBox "As células " & Dependentes.Address _
& " utilizam o valor de A1"
End If

End Sub
Sub Propriedades_Range_DirectPrecedents()

'Retorna o intervalo que contém as células que
'diretamente utilizadas para calcular a célula
'informada

'Exemplo: são retornados os endereços das células que
'são utilizadas diretamente por A1 em seu cálculo ou é
'exibida uma mensagem, caso A1 não utilize outras
'células no cálculo de seu valor

Dim Precedentes As Range

On Error Resume Next
Set Precedentes = Range("A1").DirectPrecedents
If Dependentes Is Nothing Then
MsgBox "Esta célula não depende de outras células"
Else
MsgBox "As células " & Precedentes.Address _
& " utilizam o valor de A1"
End If

End Sub

Sub Propriedades_Range_End()

'Retorna um intervalo que se extende até o fim
'do intervalo que contém a referência informada.
'Para definir o sentido da extensão são utilizadas
'4 constantes:
'xlDown (para baixo) , xlToLeft (para a esquerda),
'xlToRight (para a direita) e xlUp (para cima)

'Vamos supor que numa planilha as células do intervalo
'A1:J10 estejam preenchidas, os exemplos a seguir
'retornam os intervalos obtidos a partir das células
'de origem e respectivos deslocamentos

Set rgDown = Range("A1").End(xlDown)     'Retorna [A1:A10]
Set rgLeft = Range("D5").End(xlToLeft)   'Retorna [A5:D5]
Set rgRigth = Range("F2").End(xlToRight) 'Retorna [F2:J2]
Set rgUp = Range("H8").End(xlUp)         'Retorna [H1:H8]

End Sub
Sub Propriedades_Range_EntireColumn()

'Retorna um intervalo que representa a(s) coluna(s)
'que contém a referência

'O exemplo a seguir exibe o endereço das colunas
'da referência informada

MsgBox Range("A1:D10").EntireColumn.Address
End Sub

Sub Propriedades_Range_EntireRow()

'Retorna um intervalo que representa a(s) linhas(s)
'que contém a referência

'O exemplo a seguir exibe o endereço das linhas
'da referência informada

MsgBox Range("A1:D10").EntireRow.Address

End Sub
Sub Propriedades_Range_Errors()

'Retorna os elementos das opções de verificação de erros

'xlEvaluateToError :      A célula é avaliada como um valor de erro.
'xlTextDate:              A célula contém uma data do texto com anos de 2 dígitos.
'xlNumberAsText:          A célula contém um número armazenado como texto.
'xlInconsistentFormula:   A célula contém um fórmula inconsistente para uma região.
'xlOmittedCells:          A célula contém uma fórmula que omite uma célula para uma região.
'xlUnlockedFormulaCells:  A célula desbloqueada contém uma fórmula.
'xlEmptyCellReferences:   A célula contém uma fórmula que faz referência a células vazias.

'Adaptado a partir do exemplo do help do VBA:
'Neste exemplo, um número escrito como texto é colocado na célula A1.
'Em seguida, o Microsoft Excel determina se o número está escrito
'como texto na célula A1 e notifica o usuário de maneira apropriada.

Range("A1").Formula = "'12"

If Range("A1").Errors.Item(xlNumberAsText).Value = True Then
    MsgBox "O número foi escrito como texto."
Else
    MsgBox "O número não foi escrito como texto."
End If

End Sub

In Excel We Trust

Marcado com: , , , , , ,
Publicado em Nível: Avançado

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Visitas dos usuários
  • 1,963,899

Clique para assinar este blog e receber notificações de novos artigos por email.

Junte-se a 1.476 outros seguidores

Aumente sua interação

Siga-nos do twitter (@usuariosdoexcel).

Acesse o nosso fórum e compartilhe as suas dúvidas.

Curta nossa página no Facebook.

Junte-se ao grupo do LinkedIn.

Visite-nos utilizando o seu smartphone ou tablet.

Recomende este Blog
Visualizar notícias
Site monitorado:
Real Time Web Analytics

Clicky

%d blogueiros gostam disto: