Pergunte aqui

Histórico de revisões [voltar]

clique para ocultar/mostrar a revisão 1
Versão inicial

Bom dia,

Não deu certo primeiramente porque não existe uma propriedade RangeByName para o objeto ScCellObj (célula individual) que está dentro da sua variável oRange. Também a função RIGHT() ficou inconsistente com sua alteração. Ela foi definida para extrair uma string com 4 caracteres a partir da direita e que será comparada agora com outra com 10 ($B$7:$B$27) pelo operador "=". Nunca passará no teste, mesmo que existisse a propriedade RangeByName.

O melhor jeito de verificar se uma célula está dentro de um intervalo é usando seu "endereço", mais ou menos, como nesta resposta.

Então, a macro adaptada ficaria:

Sub SelecaoAlterada( oCelula )
    ' Testar se o objeto selecionado é uma célula individual'
    If oCelula.ImplementationName <> "ScCellObj" Then Exit Sub

    ' Endereço da Célula'
    oEnd = oCelula.CellAddress    

    ' Celula no intervalo B7:B27 '
    ' Coluna 1 e linha entre 6 e 26'
    If oEnd.Column = 1 Then
      If oEnd.Row >= 6 And oEnd.Row <= 26 Then
        'Chamar a macro desejada
        Call Macro1 
      End If
    End If
End Sub

Espero ter ajudado.

Ate,

Bom dia,

Não deu certo primeiramente porque não existe uma propriedade RangeByName para o objeto ScCellObj (célula individual) que está dentro da sua variável oRange. Também a função RIGHT() ficou inconsistente com sua alteração. Ela foi definida para extrair uma string com 4 caracteres a partir da direita e que será comparada agora com outra com 10 ($B$7:$B$27) pelo operador "=". Nunca passará no teste, mesmo que existisse a propriedade RangeByName.

O melhor jeito de verificar se uma célula está dentro de um intervalo é usando seu "endereço", mais ou menos, como nesta resposta.

Então, a macro adaptada ficaria:

Sub SelecaoAlterada( oCelula )
    ' Testar se o objeto selecionado é uma célula individual'
individual '
    If oCelula.ImplementationName <> "ScCellObj" Then Exit Sub

    ' Endereço da Célula'
Célula '
    oEnd = oCelula.CellAddress    

    ' Celula no intervalo B7:B27 '
    ' Coluna 1 e linha entre 6 e 26'
26 '
    If oEnd.Column = 1 Then
      If oEnd.Row >= 6 And oEnd.Row <= 26 Then
        'Chamar ' Chamar a macro desejada
desejada '
        Call Macro1 
      End If
    End If
End Sub

Espero ter ajudado.

Ate,