Como hacer rangos variables con macros
Tengo la siguiente macro que he creado entre grabaciones de macros e investigaciones de Internet, pero como no se como programar realmente ya me quede perdido con los últimos retoques
Sub Prueba()
'
' Prueba Macro
'
'
Range("A7:A1000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.ScreenUpdating = True
Selection.End(xlUp).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.TextToColumns Destination:=Range("A7"), DataType:=xlDelimited, _
TextQualifier:=xlSingleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _
1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12 _
, 1), Array(13, 1), Array(14, 1), Array(15, 1)), TrailingMinusNumbers:=True
Columns("K:N").Select
Columns("K:N").EntireColumn.AutoFit
Range("H13").Select
ActiveWindow.DisplayGridlines = False
Range("A8").Select
Dim C As Range
Set C = Columns("a").Find("Value", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False)
Do Until C Is Nothing
With C
C.Offset(, 1). Resize(, .CurrentRegion.Columns.Count - 1). Cut Cells(.Row - 1, "ba").End(xlToLeft). Offset(, 1)
C.EntireRow.Delete
End With
Set C = Columns("a").FindNext
Loop
Range("G864").Select
Selection.Insert Shift:=xlToRight
Selection.Insert Shift:=xlToRight
Columns("N:N").Select
Selection.Insert Shift:=xlToRight
Selection.End(xlUp).Select
Range("N7").Select
ActiveCell.FormulaR1C1 = "Variance"
Range("N8").Select
ActiveCell.FormulaR1C1 = "=+RC[-2]-RC[-1]"
Range("N8").Select
Selection.AutoFill Destination:=Range("N8:N864")
Range("N8:N863").Select
Columns("N:N").EntireColumn.AutoFit
Range("M18").Select
Selection.End(xlDown).Select
Range("N864").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-856]C:R[-1]C)"
Columns("K:O").Select
Range("K825").Activate
Columns("K:O").EntireColumn.AutoFit
Range("N841").Select
Selection.End(xlUp).Select
Selection.End(xlToLeft).Select
Selection.End(xlToLeft).Select
Selection.End(xlToLeft).Select
ActiveWindow.SmallScroll Down:=-27
End Sub
Con esta primera parte de la macro:
"Range("A7:A1000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Range("A7:A1000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.ScreenUpdating = True"
Estoy diciendo que busque las líneas en blanco de A7:A1000 las elimine, pero como hago para que en lugar de eliminar las líneas en ese rango lo haga hasta la ultima línea donde haya un valor (cualquiera), otra cosa la macro solo se me ejecuta si empiezo posicionado en alguna fila de la columna A, ¿no se porque?
Después en esta parte de la macro yo estoy diciendo que haga una fórmula de suma y resta en la celda N8 y que auto complete la misma fórmula hasta la celda N863, misma pregunta que en la anterior, como hago para que en lugar de la fila 863 se ejecute hasta una fila antes de donde haya un valor, ¿y después como hago para realizar una autosuma de la columna N?
ActiveCell.FormulaR1C1 = "=+RC[-2]-RC[-1]"
Range("N8").Select
Selection.AutoFill Destination:=Range("N8:N863")
Range("N8:N863").Select