Corrección o aprobación de líneas de código

Elsa, mis respectos y saludos.

Quiero preguntarte si de la macro que gentilmente me facilitaste, estas líneas están bien formadas.

Pregunto porque estas mismas líneas, las hiciste con un fin de usar la columna F en un rango de 14 a 23, en este caso las F14:F23.

Adapte la misma macro en otr oproyecto igual o similar pero este tiene fórmulas en las C, DE, y E además de la F.

Para abarcar las DE, C, e y F hice lo que estas viendo en las líneas inferiores.

Quiero tu aprobación si así es correcto o algo seria mejor aun. Te diré que como hice me funciona bien pero, omo dije y repito quiero tu aprobación o mejoramiento en las líneas para saber si como yo tengo, solo capta de la línea 22 hacia la 23 insertada y no usa ninguna otra.

Gracias

Tu macro que uso perfectamente bien
Private Sub btnElimiLinea_Click()
'x Elsamatilde

'se elimina el registro segun la seleccion en col B desde B14 a B23
If Intersect(ActiveCell, Range("B14:B23")) Is Nothing Then
MsgBox "Para eliminar un registro debes seleccionarlo en celda de la col B.", , "ERROR"
Exit Sub
End If
If Selection.Count > 1 Then ' Si seleccionamas que 1 producto
MsgBox "Solo puedes eliminar 1 registro por vez.", , "ERROR"
Exit Sub
End If
Application.ScreenUpdating = False
'selecciona el rango col B:F
Range("B" & ActiveCell.Row & ":F" & ActiveCell.Row).Select
Selection.Delete Shift:=xlUp
'se inserta 1 fila al final
Range("B23:F23").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
'se copia el formato de bordes
Range("B22:E22").Select
Selection.Copy
Range("B23").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
'se completa en la col F con la formula
Range("F22:F22").Select 'Selecciona desde C a F
Selection.AutoFill Destination:=Range("F22:F23"), Type:=xlFillDefault 'copia formulas a F
'se posiciona en alguna celda
Range("B14").Select
End Sub

Mis lineas en proyecto que contien formulas en dichas celdas de columnas
'se completa en las col C,D,E y F con la formula
Range("C22:F22").Select 'Selecciona desde C a F
Selection.AutoFill Destination:=Range("C22:F23"), Type:=xlFillDefault 'copia formulas desde C a F

Respuestas sugeridas:

Esta bien así

Mejor asi (composicion) --->>

1 respuesta

Respuesta
1

Como la col E no tiene fórmulas sino una cantidad que ingresas manualmente, esta columna no la debes arrastrar.

Por lo que en la macro original, solo habría que agregar las 2 col C y D, quedándote así a partir del comentario 'se completa...

'se completa en la col F con la formula
Range("F22:F22").Select 
Selection.AutoFill Destination:=Range("F22:F23"), Type:=xlFillDefault 'copia formulas a F
'se completan las col C:D con sus fórmulas
Range("C22:D22").Select 'Selecciona desde C a D
Selection.AutoFill Destination:=Range("C22:D23"), Type:=xlFillDefault 'copia formulas
'se posiciona en alguna celda
Range("B14").Select
End Sub

Esta diferencia la notarás cuando tengas completas las filas y tengas que eliminar alguna... si lo haces con el rango completo te llevarás la cantidad de la fila anterior y no creo que eso sea la idea.

Tené presente de que las fórmulas que coloques en C:D contemplen la posibilidad de que devuelva vacía como en F para evitar el error N/A.

Sdos

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas