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

Macro funciona cuando cambia celda en hoja, como puedo cambiarla a un boton

Ver el tema anterior Ver el tema siguiente Ir abajo

Macro funciona cuando cambia celda en hoja, como puedo cambiarla a un boton

Mensaje por jkehmas el Vie Mar 13, 2015 4:35 am

Código:

Private Sub worksheet_change(ByVal target As Range)
    If Not Intersect(target, Range("C82")) Is Nothing Then
        largo = Len(target.Value)
        Application.EnableEvents = False
        target = target.Value
        var1 = Hoja1.Range("C6")
        With target.Characters(Start:=103, Length:=var1).Font
            .Underline = xlSingle
        End With
        var1 = 103 + var1
        With target.Characters(Start:=103, Length:=var1).Font
            .FontStyle = "Negrita"
        End With
        var2 = var1 + 11
        With target.Characters(Start:=var1, Length:=var2).Font
            .FontStyle = "Normal"
        End With
        With target.Characters(Start:=var2, Length:=Hoja1.Range("C7")).Font
            .Underline = xlSingle
        End With
        With target.Characters(Start:=var2, Length:=Hoja1.Range("C7")).Font
            .FontStyle = "Negrita"
        End With
        var2 = var2 + Hoja1.Range("C7") + 84
        With target.Characters(Start:=var2, Length:=Hoja1.Range("C16")).Font
            .Underline = xlSingle
        End With
        With target.Characters(Start:=var2, Length:=Hoja1.Range("C16")).Font
            .FontStyle = "Negrita"
        End With
        var2 = var2 + Hoja1.Range("C16") + 10
        With target.Characters(Start:=var2, Length:=Hoja1.Range("C17")).Font
            .Underline = xlSingle
        End With
        With target.Characters(Start:=var2, Length:=Hoja1.Range("C17")).Font
            .FontStyle = "Negrita"
        End With
        var2 = var2 + Hoja1.Range("C17") + 21
        With target.Characters(Start:=var2, Length:=Hoja1.Range("C14")).Font
            .Underline = xlSingle
        End With
        With target.Characters(Start:=var2, Length:=Hoja1.Range("C14")).Font
            .FontStyle = "Negrita"
        End With
        var2 = var2 + Hoja1.Range("C14") + 48
        With target.Characters(Start:=var2, Length:=Hoja1.Range("C10")).Font
            .Underline = xlSingle
        End With
        With target.Characters(Start:=var2, Length:=Hoja1.Range("C10")).Font
            .FontStyle = "Negrita"
        End With
        var2 = var2 + Hoja1.Range("C10") + 35
        With target.Characters(Start:=var2, Length:=Hoja1.Range("C9")).Font
            .Underline = xlSingle
        End With
        With target.Characters(Start:=var2, Length:=Hoja1.Range("C9")).Font
            .FontStyle = "Negrita"
        End With
        Application.EnableEvents = True
    End If
End Sub

En la celda C82 tengo un texto que hice concatenando diferentes celdas, al momento de precionar la tecla F2 sobre dicha celda y dar enter me corre el macro, lo que quiero es que esta macro me quede en un boton, cosa que no logro hacer, alguien me daria una ayuda con esto, voy empezando a conocer esto de las macros y fue la unica forma que se me ocurrio hacer esto

Nota: en la hoja 1 tomo los datos para concatenarlos en la celda C82 de la hoja 2 y al momento de enecutar el macro me borra la formula de concatenacion y me deja el puro texto y pone negritas y subrayado en los lugares que pongo en la macro, y asi fue como se me ocurrio hacer esto XD

Muchas gracias por la ayuda que me puedan brindar!!!

jkehmas

Masculino Cantidad de envíos : 6
Edad : 37
Ciudad - Pais : Mexico
Version de Excel : Excel 2010
Fecha de inscripción : 13/03/2015

Volver arriba Ir abajo

Re: Macro funciona cuando cambia celda en hoja, como puedo cambiarla a un boton

Mensaje por moises melgar el Vie Mar 13, 2015 1:06 pm

Buenos dias
Primero crea tu boton de comando  pestaña programador / Insertar / Controles Activex /boton de comando

luego entras al modo diseño (boton alado del boton "insertar") para poder agregarle el codigo al boton de comando

aqui copias tu codigo y comenzamos las adapataciones:

editado:
copiar codigo existente entre  "Private Sub worksheet_change(ByVal target As Range)" y "End Sub" ya que Private Sub worksheet_change se usan para ejecutar codigos al momento de hacer cambios en la hoja
fin editado

Sustituye:
Código:
If Not Intersect(target, Range("C82")) Is Nothing then
"si no , lainterseccion de la celda enfocada con el rango C82 es nada entonces"

por:
Código:
If ActiveCell.Address = "$C$82" Then
"Si la direccion de la celda Activa es igual a C82 entonces"

como el rango target no la usamos sustituimos:
target por ActiveCell


en vez de
Código:
target.Characters(....

colocar
Código:
ActiveCell.Characters

tambien aplica:
Código:
Range("C82").Characters
ya que la celda con la que correria la macro se condiciona en el if a que sea C82

Ojala estos pequeños datos te sean de utilidad en tu codigo

saludos
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 550
Edad : 28
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Macro funciona cuando cambia celda en hoja, como puedo cambiarla a un boton

Mensaje por jkehmas el Vie Mar 13, 2015 5:25 pm

moises melgar escribió:Buenos dias
Primero crea tu boton de comando  pestaña programador / Insertar / Controles Activex /boton de comando

luego entras al modo diseño (boton alado del boton "insertar") para poder agregarle el codigo al boton de comando

aqui copias tu codigo y comenzamos las adapataciones:

editado:
copiar codigo existente entre  "Private Sub worksheet_change(ByVal target As Range)" y "End Sub" ya que Private Sub worksheet_change se usan para ejecutar codigos al momento de hacer cambios en la hoja
fin editado

Sustituye:
Código:
If Not Intersect(target, Range("C82")) Is Nothing then
"si no , lainterseccion de la celda enfocada con el rango C82 es nada entonces"

por:
Código:
If ActiveCell.Address = "$C$82" Then
"Si la direccion de la celda Activa es igual a C82 entonces"

como el rango target no la usamos sustituimos:
target por ActiveCell


en vez de
Código:
target.Characters(....

colocar
Código:
ActiveCell.Characters

tambien aplica:
Código:
Range("C82").Characters
ya que la celda con la que correria la macro se condiciona en el if a que sea C82

Ojala estos pequeños datos te sean de utilidad en tu codigo

saludos

Muchas gracias me sirvió mucho, y si me funciono pero hay un error el cual no le encuentro la solución, y es en esta parte

Código:
var1 = Hoja1.Range("C10")

pienso que el error se debe a que yo estoy trabajando en la hoja 2 para dar el formato al texto, y me traigo el valor de la celda C10 pero esta en la hoja 1, cuando uso esta línea me la esta trayendo vacía, por consiguiente me subraya y pone en negritas todo el texto hasta el final, tendrás alguna solución?

Nota:

otra cosa en la que me había atorado era que puse mal o tal vez no entendí pero me quedo así:

donde tenia:
Código:
largo = Len(target.Value)

yo puse:
Código:
largo = Len(ActiveCell.Characters.Value)

y debe de ser:
Código:
largo = Len(ActiveCell.Value)

también en esta línea me marcaba error fue esta:

donde yo tenia:
Código:
target = target.Value

yo puse:
Código:
ActiveCell.Characters = ActiveCell.Characters.Value

y debe ser:
Código:
ActiveCell = ActiveCell.Value

otra cosa que me di cuenta es que todo lo puedo poner dentro del with y end with me quedo asi

yo tenia:
Código:
        With target.Characters(Start:=17, Length:=var1).Font
            .Underline = xlSingle
        End With
        var1 = 17 + var1
        With target.Characters(Start:=17, Length:=var1).Font
            .FontStyle = "Negrita"
        End With

y ahora lo cambie por:
Código:
        With ActiveCell.Characters(Start:=17, Length:=var1).Font
            .Name = "Calibri"
            .FontStyle = "Negrita"
            .Size = 10.5
            .Underline = xlUnderlineStyleSingle
        End With

todo esto por si a alguien se le atora la carreta igual que a mi

jkehmas

Masculino Cantidad de envíos : 6
Edad : 37
Ciudad - Pais : Mexico
Version de Excel : Excel 2010
Fecha de inscripción : 13/03/2015

Volver arriba Ir abajo

Re: Macro funciona cuando cambia celda en hoja, como puedo cambiarla a un boton

Mensaje por moises melgar el Vie Mar 13, 2015 5:39 pm

Le agregaste el value?


var1 = Hoja1.Range("C10")

var1 = Hoja1.Range("C10").value
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 550
Edad : 28
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Macro funciona cuando cambia celda en hoja, como puedo cambiarla a un boton

Mensaje por jkehmas el Vie Mar 13, 2015 5:51 pm

moises melgar escribió:Le agregaste el value?


var1 = Hoja1.Range("C10")

var1 = Hoja1.Range("C10").value

No se me había ocurrido poner el value, se lo acabo de poner y ya me quedo bien, eso era lo que me faltaba, muchas gracias por tu ayuda

jkehmas

Masculino Cantidad de envíos : 6
Edad : 37
Ciudad - Pais : Mexico
Version de Excel : Excel 2010
Fecha de inscripción : 13/03/2015

Volver arriba Ir abajo

Re: Macro funciona cuando cambia celda en hoja, como puedo cambiarla a un boton

Mensaje por moises melgar el Vie Mar 13, 2015 10:17 pm

tus anotaciones son muy ciertas

asi igual empece con las macros
probando con la grabadora de macros y practicando por las noches
pero al igual que todos aun seguimos aprendiendo ya que no he llegado a nivel de personas que he llegado a conocer en este foro (gali, pali, saliepaty, avalencia ....etc)

gracias por los comentarios saludos
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 550
Edad : 28
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Macro funciona cuando cambia celda en hoja, como puedo cambiarla a un boton

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.