constante de constantes

12/08/2007 - 03:56 por Ivan | Informe spam
hola a todos, hoy voy por partida doble

1.-¿existe una forma de 'encadenar' varias constantes en una sola, como una especie de matriz?

creo recordar por un ejemplo que me mandaron (pero que ahora mismo no tengo disponible), que si se puede, pero no se
como hacerlo

[si no recuerdo mal el caso era con constantes de alguna API, aunque en este caso seria con/para codigo 'normal' vba].¿
Sabeis si es posible y como??

2.-y, por otro lado, ¿es posible declarar matrices [de constantes] como constantes?

un saludo y hasta pronto
Ivan
 

Leer las respuestas

#1 Héctor Miguel
12/08/2007 - 06:39 | Informe spam
hola, Ivan !

1.- existe una forma de 'encadenar' varias constantes en una sola, como una especie de matriz?
creo recordar por un ejemplo que me mandaron (pero que ahora mismo no tengo disponible)
que si se puede, pero no se como hacerlo
[si no recuerdo mal el caso era con constantes de alguna API, aunque en este caso seria con/para codigo 'normal' vba]. Sabeis si es posible y como??



1) para codigos 'normales' de VBA... [me temo que no... ya que] segun la ayuda en linea:
"No es posible usar variables, funciones definidas por el usuario o funciones intrinsecas de VB[A]... en expresiones asignadas a constantes"
"A diferencia de las variables, las constantes no se pueden cambiar inadvertidamente mientras el programa se esta ejecutando"

2.- por otro lado, es posible declarar matrices [de constantes] como constantes?



2) de acuerdo con lo anterior, no podrias declarar una *constante* usando [p.e.] un *Array* :-(( [p.e.]

a) la siguiente *forma* y procedimiento no son *ejecutables*...

Const Array_1 = Array("uno", "dos", "tres")
Sub Lista_Array()
Dim Sig As Byte
For Sig = LBound(Array_1) To UBound(Array_1)
MsgBox Array_1(Sig)
Next
End Sub

b) podrias *simular* la declaracion de [semi]matrices [p.e.] de la siguiente *alteracion* a la forma anterior...

Const Array_2 = "uno,dos,tres"
Sub Lista_Array_2()
Dim Sig As Byte, n_Array
n_Array = Split(Array_2, ",")
For Sig = LBound(n_Array) To UBound(n_Array)
MsgBox n_Array(Sig)
Next
End Sub

[claro que] requiere ejecutarse a partir de excel 2000 [VBA6] por la funcion Split :-((
si necesitas que sea operable desde la version xl97, deberas *proveer* tu propia funcion *Split*
lo que puedes hacer con el siguiente codigo [p.e.] al final de tu modulo *normal*...

#If Not VBA6 Then
Function Split(Cadena As String, Delimitador As String) As Variant
Split = Evaluate("{""" & Application.Substitute(Cadena, Delimitador, """,""") & """}")
End Function
#End If

saludos,
hector.

Preguntas similares