Macros en Excel.

Iniciado por S@l0o, 17 Julio 2013, 17:33 PM

0 Miembros y 1 Visitante están viendo este tema.

S@l0o

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.

The_Saint

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 !
<< Si piensas que eres demasiado pequeño para tener impacto.
Prueba a irte a la cama con un mosquito>>

S@l0o

#2
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.

The_Saint

Necesito que me detalles mas que es lo que te gustaria hacer y te copio el codigo...
:silbar:
<< Si piensas que eres demasiado pequeño para tener impacto.
Prueba a irte a la cama con un mosquito>>