Calificador no valido, al usar .contains en un if

Tengo un formulario que tiene varios campos pero uno es un campo multivalor que se llama ASEFURAMIENTOD y quisiera que cuando el usuario seleccionara una o varias opciones se mostraran los subformularios que corresponden a la elección (los sub formularios son subfarma, subfdetenido, subfdroga, subfvehiculo, pero al hacer la condicional para saber si contiene la palabra haga visibles los subformularios correspondientes

Private Sub ASEGURAMIENTOD_AfterUpdate()

Dim valor As String
valor = Me.ASEGURAMIENTOD.Column(1)

If valor.Contains(Arma) = True Then

Me.SubfArma.Visible = True

If valor.Contains(PERSONA) = True Then
Me.SubfPersona.Visible = True

If valor.Contains(DROGA) = True Then
Me.SubfDroga.Visible = True

If valor.Contains(VEHICULO) = True Then
Me.SubfVehiculo.Visible = True

Else
Me.SubfArma.Visible = False
Me.SubfPersona.Visible = False
Me.SubfDroga.Visible = False
Me.SubfVehiculo.Visible = False

End If
End Sub

1 Respuesta

Respuesta

Según esto:
valor = Me.ASEGURAMIENTOD.Column(1)

Es de suponer que 'ASEGURAMIENTOD' es un cuadro de lista con la opción 'selección múltiple' activada, si esta deducción no es correcta ... lo que continua no tiene validez.

Si aceptamos esta asignación:
Dim valor As String

Una cadena de texto (String) no admite esto:
If valor.Contains(Arma) 

Suponiendo que se pretenda conocer si en el texto que contiene 'Valor' existe la palabra 'Arma' lo correcto será:

If InStr (Valor, "Arma") <> 0 Then .....

La función InStr devuelve el comienzo de una cadena de texto contenida en una cadena de texto.
Si no la localiza: devuelve un cero (0)
Si la localiza la posición del primer carácter, un ejemplo en la ventana de inmediato:

Valor = "Tengo un formulario que tiene varios campos pero uno es un campo multivalor"
¿? Instr(valor,"que")
21

¿

? Instr(valor,"gato")
0

En cualquier caso y desde la ignorancia de la procedencia de ese código (puede haber funciones personalizadas), la forma correcta de escribirlo seria así:
If valor.Contains("Arma")                         (el texto a localizar entre comillas)

En otro caso Access espera que Arma sea una variable ya que no la reconocerá como una palabra reservada.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas