Uso de "Or" en visual basic

Hola fpazos, yo otra vez molestándote, la verdad es q todo lo q se de macros lo he aprendido por mi misma y con la guía de los expertos de este foro, por lo q no entiendo mucho de declarar variables y esas cosas, apenas las estoy aprendiendo, hice una macro que evalúa celdas y en base a eso copia a otra hoja, pues bien, lo que esta en negritas funcionaba muy bien con solo este renglón: If ActiveCell.Offset(0, 6) = "Visita Integral" And ActiveCell.Offset(0, 31) = "TERMINADA" And ActiveCell.Offset(0, 37) = ComboBox1.Value Then , sin embargo en la celda ActiveCell.Offset(0,6) tiene dos variables por lo que agregue un "Or" a la activecello.offset (0,6) y entonces surge el problema, me dice "error 13, no coinciden tipos", asi q supuse que tenia q declararla como booleana y le agregue las variables q están al principio y nombre los active cell como "Tipo" Y "Status" para q aplicara la Boolean y me quedo asi macro:

Dim i As Byte
Dim Tipo As Boolean
Dim fila As String
Hoja8.Select
'la variable fila guarda el número de filas que tiene la hoja origen
fila = Cells(1000, 1).End(xlUp).Row
'Asignemos una variable de la fila utilizada en la hoja destino
Hoja8.Select
e = 12
For i = 11 To fila
Hoja8.Select
Cells(i + 1, 1).Select
Tipo = ActiveCell.Offset(0, 6).Value
Status = ActiveCell.Offset(0, 31).Value
If Tipo = "Visita Integral" Or "Visita R. Especifico" And Status = "TERMINADA" And ActiveCell.Offset(0, 37) = ComboBox1.Value Then
ActiveCell.Select 'se copia el nombre del contribuyente
Selection.Copy
Hoja6.Select 'SE PEGA EN LA HOJA 6
Cells(e + 1, 4).Select
Selection.PasteSpecial Paste:=xlValues

End If

e = e + 1
Next
End Sub

Pero me sigue saliendo exactamente el mismo mensaje, asi q pido tu ayuda para saber donde esta mi error, y solo es en ese renglón, si quito el Or la macro vuelve a correr perfectamente, la verdad las declaraciones las hice como me indico la conciencia xq no se nada de declarar variables, de hecho todas las macros que yo hago por mi misma no tiene ninguna declaración. ¿me podrías orientar al respecto por favor?? Te lo agradeceré enormemente.

1 Respuesta

Respuesta
1

Otra vez,

Recuerda que la lógica booleana dará diferentes resultados dependiendo de la combinación de AND y OR.

Cada vez que utilizas un AND o un OR, debes especificar la comparación =,<,>,<>

Solo te faltó incluir luego del OR con que comparabas "Visita R. Especifico, que para el caso es compararlo nuevamento con la variable TIPO.

If Tipo = "Visita Integral" Or Tipo="Visita R. Especifico" And Status = "TERMINADA" And ActiveCell.Offset(0, 37) = ComboBox1.Value Then

AAAAH muchas gracias, si tuve que hacer varias pruebas para acertar el resultado que quería porque como q no le entendía muy bien la lógica del or, pero con lo que me dijiste logre descifrarlo, mi renglón quedo de la siguiente manera : If Tipo = "Visita R. Especifico" And Status = "TERMINADA" And informe = ComboBox1.Value Or Tipo = "Visita Integral" And Status = "TERMINADA" And informe = ComboBox1.Value Then

Asi que muchísimas gracias por tu tiempo y tu enseñanza, en verdad aprendí algo nuevo sobre declarar variables :) te envío muchos saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas