If con or para varias condiciones

07/12/2004 - 04:55 por Compumakro | Informe spam
Amigos:
La siguiente fórmula porqué no me funciona ni en OffXP ni en Off97?

If Cells(3, 5) = 4 Or 6 Or 8 Or 10 then
Cells(3, 7) = 15000
End If
If Cells(3, 5) = 12 Or 14 Or 16 then
Cells(3, 7) = 18000
End If
If Cells(3, 5) = "S" Or "M" then
Cells(3, 7) = 20000
End If
If Cells(3, 5) = "L" Or "XL" then
Cells(3, 7) = 22000
End If

Gracias
Oscar

Preguntas similare

Leer las respuestas

#6 KL
07/12/2004 - 15:30 | Informe spam
Oscar,

Si la celda contiene fecha, utiliza la funcion YEAR, p.ej.:

If IsDate(Cells(3,5)) Then miAno=Year(Cells(3,5))

Saludos,
KL


"Compumakro" wrote in message
news:
Hector:
Acabo de tropezarme con una situación no prevista.
Hay 2 precios: uno para los que pagan ahora en Diciembre o sea año "2004"
y otro precio para los que comprarán en Enero de 2005 o sea año "2005".
No sé cómo se condiciona una fecha si corresponde a un año (...2003, 2004,
2005) que esté dentro de una fecha; es decir que no se asigne una celda
exclusivamente para contener el año.
Todo esto para aplicarlo al Case.

Es decir algo así:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Precio As Integer
Select Case Cells(3, 5)
If year = 2004 then
Case 4, 6, 8, 10: Precio = 15000
End if
If year = 2005 then
Case 4, 6, 8, 10: Precio = 16000
End if
If year = 2004 then
Case 12, 14, 16: Precio = 18000
End if

If year = 2005 then
Case 12, 14, 16: Precio = 19000
End if

If year = 2004 then
Case "S", "M": Precio = 20000
End if

If year = 2005 then
Case "S", "M": Precio = 21000
End if

If year = 2004 then
Case "L": Precio = 22000

End if

If year = 2005 then
Case "L": Precio = 23000
End if
If year = 2004 then
Case "XL": Precio = 24000
End if
If year = 2005 then
Case "XL": Precio = 25000
End if
End Select
Cells(3, 7) = Precio
Cells(3, 5) = UCase(Cells(3, 5))

End Sub

Gracias
Oscar

PD: La pregunta acerca del Excel97 es que este Código debe servir además
para Excel97, pues el PC que lo tiene está un poco "Viejito". (Tecnología
MMX y memoria Simm)


"Héctor Miguel" escribió en el mensaje
news:
hola, Oscar !

La siguiente formula porque no me funciona ni en OffXP ni en Off97?
[...]



debido a que los 'casos Or'... NO estan siendo 'operacionales' [no se
estan 'comparando' con nada] :(
prueba con una 'estructura' diferente [+/- como la siguiente]
[... otras lineas de tu codigo ...]
Dim Precio As Integer ' o... Long o... Single o... Double <='checate'
los tipos de datos
Select Case Cells(3, 5)
Case 4, 6, 8, 10: Precio = 15000
Case 12, 14: Precio = 18000
Case "S", "M": Precio = 20000
Case "L", "XL": Precio = 22000
End Select
Cells(3, 7) = Precio
[... otras lineas de tu codigo ...]

saludos,
hector.





Respuesta Responder a este mensaje
#7 KL
07/12/2004 - 15:46 | Informe spam
Oscar,

prueba esto:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Precio As Integer
Cells(3, 5) = UCase(Cells(3, 5))

'si quieres evaluar la fecha en una celda,
'entonces puedes poner estas dos lineas
'y suprimir la <<Select Case Year(Date)>>:
'If Not IsDate(Cells(3, 1)) Then Exit Sub
'Select Case Year(Cells(3, 1))

'si quieres evaluar la fecha vigente
Select Case Year(Date)
Case 2004
Select Case Cells(3, 5)
Case 4, 6, 8, 10: Precio = 15000
Case 12, 14: Precio = 18000
Case "S", "M": Precio = 20000
Case "L", "XL": Precio = 22000
End Select
Case 2005
Select Case Cells(3, 5)
Case 4, 6, 8, 10: Precio = 16000
Case 12, 14: Precio = 19000
Case "S", "M": Precio = 21000
Case "L", "XL": Precio = 23000
End Select
End Select
Cells(3, 7) = Precio
End Sub

Saludos,
KL


"Compumakro" wrote in message
news:
Hector:
Acabo de tropezarme con una situación no prevista.
Hay 2 precios: uno para los que pagan ahora en Diciembre o sea año "2004"
y otro precio para los que comprarán en Enero de 2005 o sea año "2005".
No sé cómo se condiciona una fecha si corresponde a un año (...2003, 2004,
2005) que esté dentro de una fecha; es decir que no se asigne una celda
exclusivamente para contener el año.
Todo esto para aplicarlo al Case.

Es decir algo así:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Precio As Integer
Select Case Cells(3, 5)
If year = 2004 then
Case 4, 6, 8, 10: Precio = 15000
End if
If year = 2005 then
Case 4, 6, 8, 10: Precio = 16000
End if
If year = 2004 then
Case 12, 14, 16: Precio = 18000
End if

If year = 2005 then
Case 12, 14, 16: Precio = 19000
End if

If year = 2004 then
Case "S", "M": Precio = 20000
End if

If year = 2005 then
Case "S", "M": Precio = 21000
End if

If year = 2004 then
Case "L": Precio = 22000

End if

If year = 2005 then
Case "L": Precio = 23000
End if
If year = 2004 then
Case "XL": Precio = 24000
End if
If year = 2005 then
Case "XL": Precio = 25000
End if
End Select
Cells(3, 7) = Precio
Cells(3, 5) = UCase(Cells(3, 5))

End Sub

Gracias
Oscar

PD: La pregunta acerca del Excel97 es que este Código debe servir además
para Excel97, pues el PC que lo tiene está un poco "Viejito". (Tecnología
MMX y memoria Simm)


"Héctor Miguel" escribió en el mensaje
news:
hola, Oscar !

La siguiente formula porque no me funciona ni en OffXP ni en Off97?
[...]



debido a que los 'casos Or'... NO estan siendo 'operacionales' [no se
estan 'comparando' con nada] :(
prueba con una 'estructura' diferente [+/- como la siguiente]
[... otras lineas de tu codigo ...]
Dim Precio As Integer ' o... Long o... Single o... Double <='checate'
los tipos de datos
Select Case Cells(3, 5)
Case 4, 6, 8, 10: Precio = 15000
Case 12, 14: Precio = 18000
Case "S", "M": Precio = 20000
Case "L", "XL": Precio = 22000
End Select
Cells(3, 7) = Precio
[... otras lineas de tu codigo ...]

saludos,
hector.





Respuesta Responder a este mensaje
#8 Héctor Miguel
08/12/2004 - 08:04 | Informe spam
hola, Oscar !

... cuando escribo numeros (Celda "E3") y > Enter > la Celda ... "G3", toma el numero que le corresponde tomar.
... S, M, L, XL me reporta 0 (cero) y solo cuando regreso a ... "E3" ... "G3" toma el numero que le corresponde tomar.
... cambie de Selection_Change a Change y se me bloqueo.
El resto del codigo tiene: Cells(3, 5) = UCase(Cells(3, 5)) ¿Como se resuelve?



[para esta parte del 'problema'] es 'probable' que en otras partes del codigo sigan las 'antiguas' sentencias 'If' [?]
o que una parte 'repetitiva' busque comparar valores numericos y... esta 'encontrando' valores texto [habria que revisar]

PD: En Excel97: Cells(3, 2) = Application.Proper(Cells(3, 2))... y Cells(3, 5) = UCase(Cells(3, 5)) funcionan?
Me salen error y resaltadas en Amarillo



si estas teniendo 'problemas' con las funciones 'integradas' de vba [como ucase, strconv, etc.]...
es probable que existan referenicas 'perdidas' a librerias como 'Visual Basic for Applications'
=>revisa en el editor de vba... en [menu] herramientas / referenicas... si alguna 'dice' FALTA [o MISSING]

¿comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#9 Fernando Arroyo
08/12/2004 - 16:49 | Informe spam
Tienes que cambiar el tipo de la variable Precio. El problema que tienes se debe a que está declarada como integer (entero), pero en varias líneas del código se le intenta asignar un valor superior a 32767, que es el máximo para este tipo de variables. Si en el código sustituyes Integer por Long (si el precio no va a tener nunca decimales) o Double (si pudiera tenerlos), tendrás resuelto el problema.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Compumakro" escribió en el mensaje news:
KL:
No estoy fortalecido en VBA, por eso generalmente hago las preguntas a
medias, para forzar el cerebro a pensar y a razonar. Ya he avanzado mucho en
esto, gracias a todo el grupo. Tengo que hacerle un reconocimiento a Hector
Miguel y a Fernando Arroyo. (Hay 2 o 3 que se me escapan).
Antes de preguntar busco en los "Hilos" lo que necesito saber para no
sobrecargar a los maestros del Excel. Sin embargo, a veces termino haciendo
lo que estoy evitando. Y ese es el caso de ahora:
Tengo Problemas con: "J3", "M3", "P3" y "S3" = Me marca un precio sin razón
aparente $32.000.

Tengo un problema con Cells(3, 8) ,,,Cells(3, 10) = Precio: "Error de
Desbordamiento.".

Adjunto el Archivo con datos de prueba para su ensayo.

Muchas gracias

Oscar



Respuesta Responder a este mensaje
#10 Compumakro
08/12/2004 - 19:47 | Informe spam
Gracias Hector
Lo revisaré mañana en donde está el PC viejo con Of97. Hoy 8 de Diciembre es
festivo.
Gracias
Oscar

"Héctor Miguel" escribió en el mensaje
news:
hola, Oscar !

... cuando escribo numeros (Celda "E3") y > Enter > la Celda ... "G3",
toma el numero que le corresponde tomar.
... S, M, L, XL me reporta 0 (cero) y solo cuando regreso a ... "E3" ...
"G3" toma el numero que le corresponde tomar.
... cambie de Selection_Change a Change y se me bloqueo.
El resto del codigo tiene: Cells(3, 5) = UCase(Cells(3, 5)) ¿Como se
resuelve?



[para esta parte del 'problema'] es 'probable' que en otras partes del
codigo sigan las 'antiguas' sentencias 'If' [?]
o que una parte 'repetitiva' busque comparar valores numericos y... esta
'encontrando' valores texto [habria que revisar]

PD: En Excel97: Cells(3, 2) = Application.Proper(Cells(3, 2))... y
Cells(3, 5) = UCase(Cells(3, 5)) funcionan?
Me salen error y resaltadas en Amarillo



si estas teniendo 'problemas' con las funciones 'integradas' de vba [como
ucase, strconv, etc.]...
es probable que existan referenicas 'perdidas' a librerias como 'Visual
Basic for Applications'
=>revisa en el editor de vba... en [menu] herramientas / referenicas... si
alguna 'dice' FALTA [o MISSING]

¿comentas?
saludos,
hector.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida