Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: S@l0o en 17 Julio 2013, 17:33 PM

Título: Macros en Excel.
Publicado por: S@l0o en 17 Julio 2013, 17:33 PM
Hola!, buen día! Desearia que alguien me ayudara con un problema que tengo al ejecutar una macro en Excel.

Lo que deseo es ejecutar una macro desde un celda activa, no desde donde inicialmente programe la macro. El codigo es el siguiente.

Código (vb) [Seleccionar]
[color=blue]Sub Macro1()
'
' Macro1 Macro
' lkjbugvy
'
' Acceso directo: CTRL+h
'
    Range(ActiveCell).Select
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    Selection.UnMerge
    Range("A1:E1").Select
    Selection.Copy
    Application.CutCopyMode = False
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Range("A1:E1").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("A2:E5").Select
    ActiveSheet.Paste
    Range("H7").Select
End Sub
[/color]


Tengo entendido que para ejecutar lo que deseo se debe escribir el comando Activecell despues de Range, pero cuando hago eso no se puede ejecutar la macro ya que detecta un error.

Cabe destacar que el resto del codigo lo que hace es que selecciona un rango de celdas y las descombina para que asi los datos que esten en una celda se queden en una sola y no se combinen con otras.

Saludos, y espero su pronta respuesta.
Título: Re: Macros en Excel.
Publicado por: The_Saint en 30 Julio 2013, 09:42 AM
Entiendo que lo que quieres es:

Ejecutar una macro al selecionar una celda:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$A$1" Then ActiveSheet.Range("C4").Value = "TU CODIGO"
End Sub


O ejecutar la macro a partir de una celda con lo que tendrias que jugar con guardar en una variable la direccion de la celda seleccionada y despues seleccionar la celda.

Var = ActiveCell.Address
Range(Var).Select


Saludos !
Título: Re: Macros en Excel.
Publicado por: S@l0o en 30 Julio 2013, 16:36 PM
Hola! Que tal? Gracias por tu ayuda! Ahora lo que no se es donde insertar ese codigo, ya que no tengo conocimientos de VBA, si podras reescribir el codigo te lo agradeceria mucho. De hecho hace rato probe con el codigo que pusiste pero me sigue marcando error de compilacion. De ante mano, gracias.
Título: Re: Macros en Excel.
Publicado por: The_Saint en 31 Julio 2013, 12:13 PM
Necesito que me detalles mas que es lo que te gustaria hacer y te copio el codigo...
:silbar: