Excel VBA: método Intersect com intervalo de vários nomes [closed]

0

O Intersect não funciona.

Dim NTit como intervalo   Dim NInf como intervalo   Dim NDat As Range

Dim WS como planilha   Definir WS = ActiveSheet

   Set NTit = WS.Range("$A$1:$J$1")       
   Set NInf = WS.Range("$B$3:$F$3")       
   Set NDat = WS.Range("$A$5:$K$11")       
   NTit.Interior.Color = RGB(255, 0, 0)
   If Not Intersect(Target, NTit, NInf, NDat) Is Nothing Then
Anao
fonte
Por favor, dedique um minuto para reformular essa questão de uma maneira que facilite a compreensão do que você está tentando e qual é a sua pergunta. Pode ser útil ler Como perguntar .
CharlieRB
Quando eu executo o Evento de Mudança, normalmente a parte de interseção deve pular o código que segue se os dados de entrada estiverem na célula fora dos intervalos & amp; execute o código se os dados de entrada estiverem dentro dos intervalos, mas, de fato, saltem sobre o código a cada vez. Eu sei que cada Ranges está correto porque eu pinto então deve ser um erro na linha dentro do Intersect? Obrigado pela ajuda.
Anao

Respostas:

2

o Intersect não está funcionando porque cada parâmetro deve ter uma célula ou células comuns. Não é uma situação de OR; é um AND. Você precisa essencialmente usar Target AND (NTit OR NInf OR NDat). Isso pode ser feito combinando Intersect com Union.

If Not Intersect(Target, Union(NTit, NInf, NDat)) Is Nothing Then

Isso parece que pode ser de um Worksheet_Change macro de eventos. Se esse for o caso, você não precisará declarar e atribuir WS. Você poderia simplesmente usar ME como o objeto da planilha. Há outras melhorias que eu poderia sugerir, mas você poderia editar sua pergunta e postar mais do seu código antes que eu pudesse ver como isso se relaciona com outros fatores.

Jeeped
fonte
Essa é uma boa resposta.
Raystafarian