Error en Macro

21/11/2006 - 23:18 por Grupos de Noticias | Informe spam
Saludos.
Hago mis primeros pinitos en VBA para Excel.
Quisiera saber cuál es el error en la Tercera Condición?

Sub Condicional4Condiciones()

If ActiveSheet.Range("D15").Value > ActiveSheet.Range("D16").Value Then
ActiveSheet.Range("E15").Value = ActiveSheet.Range("D15") +
ActiveSheet.Range("D16")
Else
ActiveSheet.Range("E15").Value = 0

If ActiveSheet.Range("D15").Value < ActiveSheet.Range("D16").Value Then
ActiveSheet.Range("E16").Value = ActiveSheet.Range("D15") *
ActiveSheet.Range("D16")
Else
ActiveSheet.Range("E16").Value = AciveSheet.Range("D15") /
ActiveSheet.Range("D16")

If ActiveSheet.Range("D16").Value > ActiveSheet.Range("D17").Value Then
ActiveSheet.Range("E17").Value = ActiveSheet.Range("D16") /
ActiveSheet.Range("D17")
Else
ActiveSheet.Range("E17").Value = AciveSheet.Range("D16") *
ActiveSheet.Range("D17")

End If
End If
End If
End Sub

Gracias.
Cordialmente
xxxprogramasxxxenxxxcomputadorxx@xxgmail.xxcom
Para qué tantas x?

Preguntas similare

Leer las respuestas

#1 zz
21/11/2006 - 23:30 | Informe spam
Mmm!

Me parece que es porque estas tratando de dividir/sumar/multiplicar objetos
de tipo "range" en lugar de los valores contenidos en estos "objetos"


sustituye " activesheet.range("XX")*activesheet.range("YY")"

por "activesheet.range("XX").value*activesheet.range("YY").value"

donde "XX" y "YY" son las celdas que contienen los valores que quieres
procesar.


pruebalo y nos comentas.

espero que te sirva

zz [MX]
cuasi-musico,semi-poeta y loco


"Grupos de Noticias" wrote in message
news:
Saludos.
Hago mis primeros pinitos en VBA para Excel.
Quisiera saber cuál es el error en la Tercera Condición?

Sub Condicional4Condiciones()

If ActiveSheet.Range("D15").Value > ActiveSheet.Range("D16").Value Then
ActiveSheet.Range("E15").Value = ActiveSheet.Range("D15") +
ActiveSheet.Range("D16")
Else
ActiveSheet.Range("E15").Value = 0

If ActiveSheet.Range("D15").Value < ActiveSheet.Range("D16").Value Then
ActiveSheet.Range("E16").Value = ActiveSheet.Range("D15") *
ActiveSheet.Range("D16")
Else
ActiveSheet.Range("E16").Value = AciveSheet.Range("D15") /
ActiveSheet.Range("D16")

If ActiveSheet.Range("D16").Value > ActiveSheet.Range("D17").Value Then
ActiveSheet.Range("E17").Value = ActiveSheet.Range("D16") /
ActiveSheet.Range("D17")
Else
ActiveSheet.Range("E17").Value = AciveSheet.Range("D16") *
ActiveSheet.Range("D17")

End If
End If
End If
End Sub

Gracias.
Cordialmente

Para qué tantas x?

Respuesta Responder a este mensaje
#2 zz
21/11/2006 - 23:38 | Informe spam
Que pena.. mil disculpas.

, ya encontre el error!!!!


If ActiveSheet.Range("D15").Value < ActiveSheet.Range("D16").Value Then
ActiveSheet.Range("E16").Value = ActiveSheet.Range("D15") *
ActiveSheet.Range("D16")
Else
ActiveSheet.Range("E16").Value




****esta linea deberia ser activesheet en lugar de

AciveSheet.Range("D15") /



ActiveSheet.Range("D16")







:=(

zz [MX]
cuasi-musico,semi-poeta y loco

"zz" wrote in message
news:
Mmm!

Me parece que es porque estas tratando de dividir/sumar/multiplicar
objetos de tipo "range" en lugar de los valores contenidos en estos
"objetos"


sustituye " activesheet.range("XX")*activesheet.range("YY")"

por "activesheet.range("XX").value*activesheet.range("YY").value"

donde "XX" y "YY" son las celdas que contienen los valores que quieres
procesar.


pruebalo y nos comentas.

espero que te sirva

zz [MX]
cuasi-musico,semi-poeta y loco


"Grupos de Noticias" wrote in message
news:
Saludos.
Hago mis primeros pinitos en VBA para Excel.
Quisiera saber cuál es el error en la Tercera Condición?

Sub Condicional4Condiciones()

If ActiveSheet.Range("D15").Value > ActiveSheet.Range("D16").Value Then
ActiveSheet.Range("E15").Value = ActiveSheet.Range("D15") +
ActiveSheet.Range("D16")
Else
ActiveSheet.Range("E15").Value = 0

If ActiveSheet.Range("D15").Value < ActiveSheet.Range("D16").Value Then
ActiveSheet.Range("E16").Value = ActiveSheet.Range("D15") *
ActiveSheet.Range("D16")
Else
ActiveSheet.Range("E16").Value = AciveSheet.Range("D15") /
ActiveSheet.Range("D16")

If ActiveSheet.Range("D16").Value > ActiveSheet.Range("D17").Value Then
ActiveSheet.Range("E17").Value = ActiveSheet.Range("D16") /
ActiveSheet.Range("D17")
Else
ActiveSheet.Range("E17").Value = AciveSheet.Range("D16") *
ActiveSheet.Range("D17")

End If
End If
End If
End Sub

Gracias.
Cordialmente

Para qué tantas x?





Respuesta Responder a este mensaje
#3 Ivan
22/11/2006 - 00:16 | Informe spam
hola 'Grupos de Noticias '

no estoy muy seguro de si quieres que las condiciones sean
'independientes' o de si estan condicionadas escalonadamente, que es
como lo pones en el ejemplo. En cualquier caso creo que el error (si el
codigo lo has pegado tal cual lo tienes) esta en que has escrito mal
ActiveSheet en un par de sitios ( = AciveSheet.Range(" => 'Acive' -> te
has zampado la t)

de todas formas, el codigo que expones,la condicion3 esta muy, muy
condicionada. ten en cuenta que si se cumple la 1ª condicion (If
.Range("D15") > .Range("D16") Then) no se ejecuta/evalua ninguna mas.,
y si esta 1ª se incumple pero la 2ª si se cumple, la 3ª tampoco se
llega a evaluar

aparte puedes ahorrarte la 'repeticion' de activesheet con una
estructura 'With .End With'

en los siguientes ejs.

opcion1 -> el primero haria exactamente lo que tu codigo, condicionar
escalonadamente -> vas anidando condicionales

-> Mas o menos asi ->

'If ..Then .->.If ..Then ->> If Then <<<->>> End If <<- ..End
If ..<- ..End If'

las otras dos son iguales, solo varia la sintaxis, y se evalua cada
condicion independientemente del resultado de la anterior

-> Mas o menos asi ->

'If...Then <-> End if If ...Then <-> End If ...

Nota ->> Me he comido el 'Else', pero iria tras los If Then

espero te ayude en algo

un saludo y hasta pronto
Ivan

opcion1-cada condicion va condicionada a la
anterior-

Sub Condicional4Condiciones1()
With ActiveSheet
If .Range("D15") > .Range("D16") Then
.Range("E15") = .Range("D15") + .Range("D16")
Else
.Range("E15") = 0
If .Range("D15") < .Range("D16") Then
.Range("E16") = .Range("D15") * .Range("D16")
Else
.Range("E16") = .Range("D15") / .Range("D16")
If .Range("D16") > .Range("D17") Then
.Range("E17") = .Range("D16") / .Range("D17")
Else
.Range("E17") = .Range("D16") * .Range("D17")
End If
End If
End If
End With
End Sub

' opcion 2-- cada condicional es
independiente-

Sub Condicional4Condiciones2()
With ActiveSheet
If .Range("D15") > .Range("D16") Then
.Range("E15") = .Range("D15") + .Range("D16")
Else
.Range("E15") = 0
End If
If .Range("D15") < .Range("D16") Then
.Range("E16") = .Range("D15") * .Range("D16")
Else
.Range("E16") = .Range("D15") / .Range("D16")
End If
If .Range("D16") > .Range("D17") Then
.Range("E17") = .Range("D16") / .Range("D17")
Else
.Range("E17") = .Range("D16") * .Range("D17")
End If
End With
End Sub

'-opcion 3 (igual que la
anterior)

Sub Condicional4Condiciones3()
With ActiveSheet
If .Range("D15") > .Range("D16") Then _
.Range("E15") = .Range("D15") + .Range("D16") _
Else .Range("E15") = 0
If .Range("D15") < .Range("D16") Then _
.Range("E16") = .Range("D15") * .Range("D16") _
Else .Range("E16") = .Range("D15") / .Range("D16")
If .Range("D16") > .Range("D17") Then _
.Range("E17") = .Range("D16") / .Range("D17") _
Else .Range("E17") = .Range("D16") * .Range("D17")
End With
End Sub
Respuesta Responder a este mensaje
#4 Ivan
22/11/2006 - 00:32 | Informe spam
hola de nuevo,

solo otro par de apuntes por si te sirven de algo ->

si trabajas con la hoja activa ni siquiera te hace falta mencionarla,
si tu no especificas otra en concreto, el codigo asume que te refieres
a la activa. te pongo el ultimo ej. del otro mensaje adaptado a este
caso. Asi ves un poco mas la notacion 'With...End With', que puedes
buscar con F1

Sub Condicional4Condiciones5()
With Range("D16")
If Range("D15") > .Value Then _
Range("E15") = Range("D15") + .Value _
Else Range("E15") = 0
If Range("D15") < .Value Then _
Range("E16") = Range("D15") * .Value _
Else Range("E16") = Range("D15") / .Value
If .Value > Range("D17") Then _
Range("E17") = .Value / Range("D17") _
Else Range("E17") = .Value * Range("D17")
End With
End Sub

espero no haberte liado

un saludo
ivan
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida