Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Uso de función iif

Estas en el tema de Uso de función iif en el foro de Visual Basic clásico en Foros del Web. Hola, tengo un problema con esta función. El tema es que si uso iif el ejemplo siguiente me da error y si lo planteo con ...
  #1 (permalink)  
Antiguo 15/03/2006, 15:15
 
Fecha de Ingreso: abril-2005
Mensajes: 483
Antigüedad: 19 años
Puntos: 3
Uso de función iif

Hola, tengo un problema con esta función. El tema es que si uso iif el ejemplo siguiente me da error y si lo planteo con el if común no me da error. Sólo con colocar con CommandButton pueden probar este ejemplo.

Código:
Option Explicit
Dim Matriz() As String

Private Sub Command1_Click()
 MsgBox IIf(UBound(Matriz) = 2, Matriz(2), "No hay datos")
End Sub

Private Sub Command2_Click()
 If UBound(Matriz) = 2 Then
  MsgBox Matriz(2)
 Else
  MsgBox "No hay datos"
 End If
End Sub

Private Sub Form_Load()
 Matriz = Split("Dato 1-Dato 2", "-")
End Sub
Gracias por las respuestas.
Javier
  #2 (permalink)  
Antiguo 15/03/2006, 18:03
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación

Cita:
Iniciado por ci2000
Hola, tengo un problema con esta función. El tema es que si uso iif el ejemplo siguiente me da error y si lo planteo con el if común no me da error. Sólo con colocar con CommandButton pueden probar este ejemplo.

Código:
Option Explicit
Dim Matriz() As String
 
Private Sub Command1_Click()
 MsgBox IIf(UBound(Matriz) = 2, Matriz(2), "No hay datos")
End Sub
 
Private Sub Command2_Click()
 If UBound(Matriz) = 2 Then
  MsgBox Matriz(2)
 Else
  MsgBox "No hay datos"
 End If
End Sub
 
Private Sub Form_Load()
 Matriz = Split("Dato 1-Dato 2", "-")
End Sub
Gracias por las respuestas.
Javier
Es que al ejecutar la línea del IIf el Visual comprueba todos si todos los errores de ejecución q' pudieran pasar (no coinciden los tipos, índice de matriz no existente) lo cual en el caso de Matriz el 2 tal vez no sea un índice válido, mientras que en el If la línea If no contiene la referencia de Matriz(2) y por tanto no tira error...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 19/03/2006, 14:38
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
respuesta al problema, facil únicamente ver si los valores son nulos en este caso yo he colocado un valor si 0 si son nulos..

Código:
Option Explicit
Dim Matriz() As String

Private Sub Command1_Click()
 MsgBox IIf(IIf(IsNull(UBound(Matriz)), 0, UBound(Matriz)) = 2, IIf(IsNull(UBound(Matriz)), 0, UBound(Matriz)), "No hay datos")
End Sub

Private Sub Command2_Click()
 If UBound(Matriz) = 2 Then
  MsgBox Matriz(2)
 Else
  MsgBox "No hay datos"
 End If
End Sub

Private Sub Form_Load()
 Matriz = Split("Dato 1-Dato 2", "-")
End Sub
los valores que puse si es nulo los puse en negrita para distinguir..

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:48.