Líneas en macro Excel Comentar estas líneas

¿Podrías darme el gusto de tener estas líneas comentadas?

Yo lo hice pero, quiero tenerlas comentadas como es y cual su trabajo ejecutivo

'Capta la linea completa de la celda B seleccionada manualmente en columna B desde donde comienza a pegar lineas
            Rows(b).Select
'Pega la line anterior Seleccionada
            Selection.EntireRow.Insert
'Copia los formatos de la linea anterior seleccionada
            Rows(b - 1).Copy
'Pega formatos y formatos en las líneas insertadas
            Rows(b).PasteSpecial Paste:=xlPasteFormats
'Pega las formulas en la líneas insertadas
            Rows(b).PasteSpecial Paste:=xlPasteFormulas
'desactivar la selección
            Application.CutCopyMode = False  'COSA QUE NO LO ESTA HACIENDO

Como ves yo trate y espero ganarme un excelente pero, me queda la duda si o no están bien y si alguna palabra no es la correcta, favor corregir. No quiero quedar con la duda si están o no bien, por eso recurro a ti.

1 Respuesta

Respuesta
1

H o l a:

Primero, supongo que en la variable tienes un número.

'Selecciona toda la fila, según lo que tiene la variable b
            Rows(b).Select
'Inserta una fila
            Selection.EntireRow.Insert
'Copia la fila anterior
            Rows(b - 1).Copy
'Pega formatos en la fila recién insertada
            Rows(b).PasteSpecial Paste:=xlPasteFormats
'Pega las formulas en la línea insertada
            Rows(b).PasteSpecial Paste:=xlPasteFormulas
'desactivar la selección
            Application.CutCopyMode = False  

s a l u d o s

Esta instrucción:

Application.CutCopyMode = False  

No desactiva la selección.

Lo que desactiva son las celdas que aparecen con líneas punteadas cuando las copias.

Para desactivar la selección, tienes que seleccionar otra celda, por ejemplo:

'Selecciona toda la fila, según lo que tiene la variable b
            Rows(b).Select
'Inserta una fila
            Selection.EntireRow.Insert
'Copia la fila anterior
            Rows(b - 1).Copy
'Pega formatos en la fila recién insertada
            Rows(b).PasteSpecial Paste:=xlPasteFormats
'Pega las formulas en la línea insertada
            Rows(b).PasteSpecial Paste:=xlPasteFormulas
'desactivar la selección
            Application.CutCopyMode = False
            Range("A1").Select

s a l u d o s

Esta la macro completa. En B nada contiene (columna vacía), una celda determinada en la B es la que tengo que seleccionar para insertar líneas. Ejemplo.

Si solo tengo 3 líneas vacías y necesito muchas más, voy insertando de a 10, 5, 15, 20, lo que me convenga, entonces, tengo llenas hasta la fila C123, pero 2+ vacías hasta 125 (124 y 125), tengo que seleccionar la B125 y insertar cuantas líneas yo quiera.

Porque hasta la 125 contienen algunas celdas con fórmulas y formatos.

La 125 es la ultima, a partir de ahí en adelante existen otros datos, por ello tengo que tener aunque sea 2 líneas vacías para seleccionar la B125 y insertar.

La macro copia de la 124 (vacía) y pega en las líneas insertadas, las fórmulas y los formatos que la 124 tenga siempre corriendo las fórmulas (números de cldas etc)

Sub inserta_Lineas()
'Insertar lineas y tambien formas y fomatos de linea B selecionada, en todas las celdas que contengan formatos y formulas desde _
la celda selecionada en B al la cantidad insertada en el ImputBox
        Application.ScreenUpdating = False
        On Error GoTo Jota
'    With Sheets("Cobra_Gastos")
        a = InputBox("Ingrese el Número de Lineas a Insertar", "Número de Lineas", 1) 'si inserta 0 sale de la macro sin insertar linea)
        If a <= 0 Then Exit Sub
''Para Sustitui linea On Error GoTo Jota
    'If a = "" Then
    '    MsgBox "Proceso cancelado", vbInformation, "AVISO"
    '    Exit Sub
    'End If
        b = ActiveCell.Row
        For i = 1 To a
'            .Select
'Capta la linea completa de la celda B seleccionada manualmente en columna B desde donde comienza a pegar lineas
            Rows(b).Select
'Inserta la linea anterior seleccionada
            Selection.EntireRow.Insert
'Copia los formatos de la linea anterior a la seleccionada o seleccionada
            Rows(b - 1).Copy
'Pega los formatos copiados, en las líneas insertadas
            Rows(b).PasteSpecial Paste:=xlPasteFormats
'Copia la fórmulas de celda anterior de la columna I
            Range("I" & b - 1).Copy
'Pega los formulas de celdas I
            Range("I" & b).PasteSpecial Paste:=xlPasteFormulas
'Desactivar seleccion
            Application.CutCopyMode = False
        Next i
 '   End With
    'Range("D12").Select
Jota:
        Application.ScreenUpdating = True
End Sub

Será que está bien comentada?

Ya te envié mis comentarios con los ajustes.

Tú pusiste esto:

'Capta la linea completa de la celda B seleccionada manualmente en columna B desde donde comienza a pegar lineas
Rows(b).Select

Y esta instrucción Select, no "capta", lo que hace es seleccionar. Así es lo que puse en mis comentarios:

'Selecciona toda la fila, según lo que tiene la variable b
            Rows(b).Select

Pero son explicaciones, si tú lo entiendes de otra forma, entonces también son válidos tus comentarios.

Claro claro amigo DAM, solo que quise decirte que en B no hay nada, columna vacía por completo.

Te doy las gracias y te dejo mi saludo de amigo

B es una columna

Pero en esta instrucción:

Rows(b)

No estás hablando de una columna, estás hablando de una variable, esa variable de contener un número, y ese número representa un número de fila.

Bien DAM pero sabes como es, seguro no te estoy dando la explicación que requieres y la explicación como es.

Ya la pregunta esta contestada pero, si prefieres te envío el libro con esa parte para que veas tu mismo de que se trata, repito, ya la pregunta esta contestada y también si me dices que te lo envíe, pues abriré nueva pregunta.

La ejecución de esa macro; 

1º tengo que seleccionar la celda en columna B. Esta celda es como referencia para insertar la(s) línea(s) y tomar las formas y formatos de la celda anterior a la seleccionada. A partir de la celda seleccionada, inserta la(s) línea(s).

No se si te interesa ver la macro en el libro origen

No es necesario, como te dije, lo importante es que tú le entiendas.

Para aclarar el punto, en esta instrucción de la macro, le estás diciendo que b (la variable) tome el número de la fila de la celda activa:

b = ActiveCell.Row

Puedes pararte en la columna "Z" y en b obtendrás el número de fila, no necesariamente tienes que estar en una celda de la columna "B", me explico?

Lo demás ya lo comenté.

S a l u d o s 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas