............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

SE PUEDE OPTIMIZAR ESTA MACRO?

Ver el tema anterior Ver el tema siguiente Ir abajo

SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por Deivid el Vie Nov 13, 2009 2:39 pm

Hola amigos tengo una hoja con cuatro columnas (A, B, C y N). En las 3 primeras introduzco datos numéricos y en "N" se genera el promedio de estas 3 últimas. En la primera Hoja del libro tengo esta macro:

Private Sub Worksheet_Change(ByVal Target As Range)

Casilla = Target.Address(ColumnAbsolute:=False)

Borrado = InStrRev(Casilla, "$")

Linea = Mid(Casilla, Borrado + 1)


If (Target.Address = "$A$" & Linea) Or (Target.Address = "$B$" & Linea) Or (Target.Address = "$C$" & Linea) Then
If Range("A" & Linea).Value <> "" And Range("B" & Linea).Value <> "" And Range("C" & Linea).Value <> "" And _
Range("N" & Linea).Value >= 0.2 Then
OJO.Show
End If
End If
End Sub


Mi pregunta es si ¿Hay alguna forma de dejar esta macro de forma más "elegante" ó correcta,u optimizada, como uds. prefieran. Me refiero, por ejemplo a la declaraciòn de variables, bucles...etc.
Un saludo foreros.

Deivid

Cantidad de envíos : 32
Fecha de inscripción : 20/02/2008

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por P@li el Vie Nov 13, 2009 3:37 pm

Código:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Linea As Long
    Linea = Target.Row
    'Casilla = Target.Address(ColumnAbsolute:=False)
    'Borrado = InStrRev(Casilla, "$")
    'Linea = Mid(Casilla, Borrado + 1)
    If Target.Column = 1 Or Target.Column = 2 Or Target.Column = 3 Then
    'If (Target.Address = "$A$" & Linea) Or (Target.Address = "$B$" & Linea) Or (Target.Address = "$C$" & Linea) Then
        If Cells(Linea, 1).Value <> "" And Cells(Linea, 2).Value <> "" And Cells(Linea, 3).Value <> "" And Cells(Linea, 14).Value >= 0.2 Then
        'If Range("A" & Linea).Value <> "" And Range("B" & Linea).Value <> "" And Range("C" & Linea).Value <> "" And Range("N" & Linea).Value >= 0.2 Then
            OJO.Show
        End If
    End If
End Sub

P@li
Admin

Masculino Cantidad de envíos : 243
Edad : 33
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por sailepaty el Vie Nov 13, 2009 4:16 pm

Sin probar pero puede que funcione.

Código:
Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Column > 3 Then Exit Sub
        If Cells(.Row, 1) = "" Or Cells(.Row, 2) = "" Or Cells(.Row, 3) = "" Or _
        Cells(.Row, 14) < 0.2 Then Exit Sub
        OJO.Show
    End With
End Sub

Saludos
avatar
sailepaty
Moderador
Moderador

Masculino Cantidad de envíos : 135
Edad : 54
Ciudad - Pais : Dallas, TX
Version de Excel : 2007 y 2010
Fecha de inscripción : 04/03/2008

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por Deivid el Dom Nov 15, 2009 3:58 pm

P@li escribió:
Código:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Linea As Long
    Linea = Target.Row
    'Casilla = Target.Address(ColumnAbsolute:=False)
    'Borrado = InStrRev(Casilla, "$")
    'Linea = Mid(Casilla, Borrado + 1)
    If Target.Column = 1 Or Target.Column = 2 Or Target.Column = 3 Then
    'If (Target.Address = "$A$" & Linea) Or (Target.Address = "$B$" & Linea) Or (Target.Address = "$C$" & Linea) Then
If Cells(Linea, 1).Value <> "" And Cells(Linea, 2).Value <> "" And Cells(Linea, 3).Value <> "" And Cells(Linea, 14).Value >= 0.2
Código:
Then
        'If Range("A" & Linea).Value <> "" And Range("B" & Linea).Value <> "" And Range("C" & Linea).Value <> "" And Range("N" & Linea).Value >= 0.2 Then
            OJO.Show
        End If
    End If
End Sub

Cuando introduzco por primera vez datos en celda (1,1) o un valor en una línea nueva me aparece el OJO userform y me da un error 13 y me indica el fallo en la parte del código que aquí he puest en rojo. Hay algo que falla amigos...

Deivid

Cantidad de envíos : 32
Fecha de inscripción : 20/02/2008

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por P@li el Dom Nov 15, 2009 4:24 pm

Podrías intentar con esta línea:

If Cells(Linea, 1).Value <> "" And Cells(Linea, 2).Value <> "" And Cells(Linea, 3).Value <> "" And val(Cells(Linea, 14).Value) >= 0.2 Then

P@li
Admin

Masculino Cantidad de envíos : 243
Edad : 33
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por GalileoGali el Dom Nov 15, 2009 4:28 pm

antes de continuar: pregunto el codigo que aporto sailepaty te merece algun comentario?????

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por Deivid el Dom Nov 15, 2009 5:11 pm

Sin ánimo de ofender pero en mi caso El ej. de sailepaty no me valdría en mi hoja porque no son columnas seguidas, lo probé en otro ejercicio y funciona ok.
Voy a probar con la instrucción nueva y les comento...

Deivid

Cantidad de envíos : 32
Fecha de inscripción : 20/02/2008

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por P@li el Dom Nov 15, 2009 5:13 pm

Deivid,
Que significa "en otro ejercicio"?

P@li
Admin

Masculino Cantidad de envíos : 243
Edad : 33
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por Deivid el Dom Nov 15, 2009 5:25 pm

Pues que esta macro es para hacerme una idea de como aplicarlo a otra hoja, que por motivos laborales no puedo exponer aquí tal cual, por eso les pedí ayuda con este sencillo ej. en el que las columnas están seguidas. En el ejercicio principal, las columnas no son seguidas.Pero su este ej. funciona lo podré aplicar en la hoja principal. Acabo de probar el código aneterior y ocurre lo mismo p@li. Sale error13, no coinciden los tipos...

Deivid

Cantidad de envíos : 32
Fecha de inscripción : 20/02/2008

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por sailepaty el Dom Nov 15, 2009 5:36 pm

Deivid escribió:En el ejercicio principal, las columnas no son seguidas.
En tal caso si estudiaras la propuesta te darías cuenta que es muy fácil de adaptarla.

If .Column<>1 And .Column<>2 And .Column<>3 Then Exit Sub
If Cells(.Row, 1) = "" Or Cells(.Row, 2) = "" Or Cells(.Row, 3) = "" Or _
Cells(.Row, 14) < 0.2 Then Exit Sub

Solo tienes que cambiar los #'s de columna.

Saludos
avatar
sailepaty
Moderador
Moderador

Masculino Cantidad de envíos : 135
Edad : 54
Ciudad - Pais : Dallas, TX
Version de Excel : 2007 y 2010
Fecha de inscripción : 04/03/2008

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por Deivid el Lun Nov 16, 2009 6:29 pm

sailepaty escribió:
Deivid escribió:En el ejercicio principal, las columnas no son seguidas.
En tal caso si estudiaras la propuesta te darías cuenta que es muy fácil de adaptarla.

If .Column<>1 And .Column<>2 And .Column<>3 Then Exit Sub
If Cells(.Row, 1) = "" Or Cells(.Row, 2) = "" Or Cells(.Row, 3) = "" Or _
Cells(.Row, 14) < 0.2 Then Exit Sub

Solo tienes que cambiar los #'s de columna.

Saludos

Ya lo he probado y no funciona. Sigue dando el error 13: No coinciden los tipos.. NUevas propuestas???

Deivid

Cantidad de envíos : 32
Fecha de inscripción : 20/02/2008

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por GalileoGali el Lun Nov 16, 2009 6:36 pm

Probaste esto???
val(Cells(.Row, 14).Value) < 0.2 ????

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por Deivid el Lun Nov 16, 2009 8:12 pm

Sí, pero tampoco funciona. El primer método que puse sí que funciona, pero no es mío, es de un compañero que no suele utilizar los caminos habituales que aquí me están enseñando.(él no declara variables, utiliza los bucles While...End While en lugar de For...next, ect...) en fin, que es una persona que le funciona lo que hace pero es un poco tosco a la hora de programar, la cuestión es que le funciona. Por eso preguntaba si había alguna manera más correcta de traducir este código, aunque hasta ahora no ha funcionado nada amigos...

Deivid

Cantidad de envíos : 32
Fecha de inscripción : 20/02/2008

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por GalileoGali el Lun Nov 16, 2009 8:21 pm

Creo que la unica posibilidad que nos queda para no seguir perdiendo nuestro tiempo, seria que envies un archivo (pequeño y ficticio (datos), donde podamos comprobar qué es lo que no funciona, de lo contrario invito gentilemente a mis colegas a NO SEGUIR PERDIENDO EL TIEMPO

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por Deivid el Lun Nov 16, 2009 9:17 pm

como puedo subir el archivo de excel?

Deivid

Cantidad de envíos : 32
Fecha de inscripción : 20/02/2008

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por GalileoGali el Lun Nov 16, 2009 9:42 pm

Lo cuelgas en un hosting: el mejor y gratuito es skydrive (hay que tener una direccion de hotmail) despues pegas el vinculo aca en el cuerpo de tu mensaje

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por Deivid el Lun Nov 16, 2009 10:47 pm

Acabo de encontrar el fallo... La cuestión era que el evento que dispara la macro NO es Private Sub Worksheet_Selection_Change(...) como yo ponía, SINO Private Sub Worksheet_Change(....) como indicaban ustedes. My god, que fallo de más grande. Por lo tanto el ejemplo de Sailepaty es Válido y el de P@li también amigos. Siento haberles traido quebraderos de cabeza, de verás. Muchas gracias Gali.

Deivid

Cantidad de envíos : 32
Fecha de inscripción : 20/02/2008

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por GalileoGali el Mar Nov 17, 2009 6:53 am

Lamentablemente el problema no son los quebraderos de cabeza, que nadie los tuvo, te aseguro, sino soportar perder el tiempo de forma estéril y caprichosa a lo que se agrego el desparpajo de comentarios que veladamente, rozaron cierta descalificacion.....
"HAGAMOS DE CUENTA que AQUI no HA PASADO NADA""""

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por Deivid el Mar Nov 17, 2009 7:47 am

Siento si en algún momento di esa sensación y pido disculpas, pero mi capacidad de expresión, a veces, se asemeja más a la descalificación que a la incomprensión. Gracias de todos modos.

Deivid

Cantidad de envíos : 32
Fecha de inscripción : 20/02/2008

Volver arriba Ir abajo

Re: SE PUEDE OPTIMIZAR ESTA MACRO?

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.