Select Case com mat...
 
Notifications
Clear all

Select Case com matriz. É possível?


cacilds
Posts: 16
Registered
Topic starter
(@cacilds)
Active Member
Entrou: 4 anos atrás

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!

Responder
3 Respostas
1 Responder
EdsonBR
Moderator
(@edsonbr)
Entrou: 6 anos atrás

Prominent Member
Posts: 895

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...

Responder
MPrudencio
Posts: 2748
Registered
(@mprudencio)
Famed Member
Entrou: 6 anos atrás

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

Responder
1 Responder
cacilds
Registered
(@cacilds)
Entrou: 4 anos atrás

Active Member
Posts: 16

@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)!

Responder