Notifications
Clear all

Select Case com matriz. É possível?

4 Posts
3 Usuários
2 Reactions
1,331 Visualizações
(@cacilds)
Posts: 0
New Member
Topic starter
 

Boa tarde a todos! Gostaria de saber como me referir a um conjunto de matrizes. Exemplo:

Dim matriz(9) 'uma matriz com 10 posições

for contador = 1 to 10

select case cell(i,3)

case matriz(0), matriz(1), matriz(2), matriz(3), matriz(4)

'faça isto

case matriz(5), matriz(6), matriz(7), matriz(8), matriz(9)

'faça aquilo

end select

next

Neste exemplo me referi as posições da matriz uma a uma. Há alguma forma de fazer referência abreviada, como

case matriz(0) to matriz(4) ?

A princípio ele é válido, considerando o valor armazenado em matriz(0) e matriz(4). Mas eu não quero isto, quero me referir a todas as posições de 0 a 4, ou seja, matriz(0), matriz(1), matriz(2), matriz(3), matriz(4).

O VBA tem algo para facilitar esta construção?

Agradeço desde já pela ajuda!

 
Postado : 30/06/2021 5:43 pm
(@edsonbr)
Posts: 0
New Member
 

Receio que isso que vc está querendo fazer seja impossível, @cacilds. Pelo menos desconheço alguma forma de usar o Index no Select Case, pois é uma estrutura simples que só compara valores entre si...

 
Postado : 01/07/2021 8:45 am
cacilds reacted
(@mprudencio)
Posts: 0
New Member
 

Eu nao entendi direito do que se trata. Seria bom mais detalhes da necessidade.

 
Postado : 01/07/2021 1:52 pm
cacilds reacted
(@cacilds)
Posts: 0
New Member
Topic starter
 

@mprudencio Inicialmente peço desculpas pela demora na resposta. Fiquei sem acesso ao computador por alguns dias. Acho que o colega EdsonBR compreendeu, mas vou tentar me expressar de outra forma.

A sintaxe básica do select case é:

Select case expressão

 Case valora

  'Faça isto

 Case valorb

   'Faça aquilo

 Case Else

  'Faça algo

End select

Pois bem. Eu também posso usar intervalos nos case, como case 1-10 (valor de 1 a 10) , case 20-25 (valor de 20 a 25), etc.

Eu queria usar a mesma ideia de intervalo, mas com matrizes (todas unidimensionais), para não precisar ficar repetindo. Voltando ao exemplo, ao invés de fazer isto:

Select case expressão

 Case matriz(0), matriz(1), matriz(2), matriz(3), matriz(4), matriz(5) (repetir 6 vezes)

  'Faça isto

...

End select

Eu gostaria de saber se é possível fazer algo neste sentido:

Select case expressão

 Case matriz(0) to matriz(5)  (matriz inicial e final)

  'Faça isto

...

End select

Se eu fizer isto, o VBA vai interpretar o intervalo que há entre o valor armazenado de (0) a (5). Mas eu não quero isto, quero que considere como true todas as 6 posições (0, 1, 2, 3, 4 e 5)!

 
Postado : 12/07/2021 9:29 pm