¿Cómo puedo hacer para una cadena de macros en excel?

Tengo una lista con códigos que va de la C12 a la C70 los cuales quisiera que al darle click sobre ellos este valor se copie en la celda D4 de otra hoja del mismo libro llamada "Consulta" como una especie de hipervínculo que al darle click este me direcciones a la hoja y se pegue el valor al que le di click, el otro problema que tengo es que no se si existe una forma de hacer una cadena de macros para no tener que crear muchos botones para cada celda, sino arrastrar o alguna forma más sencilla de abarcar toda la columna de códigos

Muchas gracias

Respuesta

Para que se ejecuten varias macros en cadena solo basta con que desde una llames a la otra.

Es decir, al final del código de la primer macro (antes del End Sub) ingresa el nombre de la siguiente macro y listo.

Ejemplo:

Sub Macro1()
MsgBox "primera macro"
Macro2
End Sub

Sub Macro2()
MsgBox "segunda macro"
End Sub

2 respuestas más de otros expertos

Respuesta
2

Pon el siguiente código en los eventos de tu hoja.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Por.DAM
    If Not Intersect(Target, Range("C2:C70")) Is Nothing Then
        Target.Copy Sheets("Consulta").Range("D4")
        Sheets("Consulta").Select
        Sheets("Consulta").Range("D4").Select
    End If
End Sub

Sigue las Instrucciones para poner la macro en worksheet

1. Abre tu libro de excel

2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11

3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)

4. Del lado derecho copia la macro

Para el otro tema, no entiendo bien a qué te refieres con "cadena de macros" puedes explicarlo con algunos ejemplos.

Para la cadena de macros, se puede hacer una rutina, a esa rutina le puedes pasar un parámetro, por ejemplo le puedes pasar el número de fila que está activa, entonces cada vez que ejecutes la macro solamente trabajará con la celda o con la fila que le indicaste, por ejemplo:

Sub Macro1()
'Por.DAM
    'aquí le indicamos con cuál fila debe trabajar
    fila = ActiveCell.Row
    'con lo siguiente, por ejemplo le decimos que
    'ponga la celda según la fila y la columna "D"
    'de color azul
    Cells(fila, "D").Interior.ColorIndex = 5
End Sub
Respuesta

También puede hacerse por el método Call.

Ejemplo:

Sub Macros_en_cadena()
Call Macro_1 'Primera macro
Call Macro_2 'Segunda macro
Call Macro_n 'Siguientes macros
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas