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

#1 Héctor Miguel
07/12/2004 - 06:08 | Informe spam
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
#2 KL
07/12/2004 - 12:01 | Informe spam
Oscar,

Es preferible en estos casos la estructura q te propone Hector Miguel, pero
para mejor aclarar lo q ha dicho HM: <<debido a que los 'casos Or'... NO
estan siendo 'operacionales'>> tambien te pongo mas abajo tu codigo
corregido en dos versiones:

1) Funciona, pero tiene muchas lineas 'End If' redundantes

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

2) Mejor, pero al igual q en tu codigo se tiene q repetir 'Cells(3, 5)'
demasiadas veces

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

3) La version de HM (V. mas abajo) es la idonea para este caso.

Saludos,
KL


"Héctor Miguel" wrote in message
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
#3 Compumakro
07/12/2004 - 12:54 | Informe spam
Hector Gracias
Solo que cuando escribo números (Celda "E3") y > Enter > la Celda
"Vinculada" "G3", toma el número que le corresponde tomar.
Cuando escribo las Letras S, M, L ,XL me reporta 0 (cero) y solo cuando
regreso a la celda "E3" es cuando "G3" toma el número que le corresponde
tomar.
Le cambié de Selection_Change a Change y se me bloqueó.
El resto del código tiene: Cells(3, 5) = UCase(Cells(3, 5))
¿Cómo se resuelve?
Gracias
Oscar

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


"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
#4 Compumakro
07/12/2004 - 14:57 | Informe spam
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
#5 KL
07/12/2004 - 15:24 | Informe spam
Oscar,

- Si lo pones asi deberia funcionar en XL97 (a mi me funciona):

Cells(3, 2) = Application.WorksheetFunction.Proper(Cells(3, 2))
'o bien Cells(3, 2) = WorksheetFunction.Proper(Cells(3, 2))

Cells(3, 5) = UCase(Cells(3, 5))

- A mi me funcionan las dos macros de abajo perfectamente:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Dim Precio
Cells(3, 5) = UCase(Cells(3, 5))
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
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Precio
Cells(3, 5) = UCase(Cells(3, 5))
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
End Sub

Saludos,
KL

"Compumakro" wrote in message
news:%
Hector Gracias
Solo que cuando escribo números (Celda "E3") y > Enter > la Celda
"Vinculada" "G3", toma el número que le corresponde tomar.
Cuando escribo las Letras S, M, L ,XL me reporta 0 (cero) y solo cuando
regreso a la celda "E3" es cuando "G3" toma el número que le corresponde
tomar.
Le cambié de Selection_Change a Change y se me bloqueó.
El resto del código tiene: Cells(3, 5) = UCase(Cells(3, 5))
¿Cómo se resuelve?
Gracias
Oscar

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


"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
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida