Quiero mover la referencia de fila de un rango con nombre por el resultado de una operación, por ejemplo: Sheets("Data").Range("Range1").Offset(a-b, 0)

¿Cuál es la sintaxis que debo utilizar para cambiar correctamente: Range1 = $ A $ 100 a Range1 = $ A $ (100+ (a-b))?

Agradezco cualquier ayuda

Editar: Claro Scott, estoy tratando de restablecer un RowMarker llamado rango a su valor original, pero no puedo obtener la sintaxis correcta:

Por encima de este sub, tengo esto:

Public lngRowData As Long

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngData As Range
Set rngData = ThisWorkbook.Names("RowMarker").RefersToRange
If lngRowData = 0 Then
lngRowData = rngData.Row
    Exit Sub
End If
If rngData.Row = lngRowData Then Exit Sub
If rngData.Row < lngRowData Then
    MsgBox lngRowData - rngData.Row & " rows removed, repairing formulas"
Else
    MsgBox rngData.Row - lngRowData & " rows added, repairing formulas"
End If
lngRowData = rngData.Row

End Sub

Lo insertaré en las instrucciones if a continuación para que el resultado entre lngRowData y rngData.row se convierta en el desplazamiento.

Gracias chicos

0
Dergyll 16 oct. 2018 a las 18:24

2 respuestas

La mejor respuesta

Esto lo haría:

ActiveWorkbook.Names.Item("Range1").RefersTo = "=Data!" & Range("Range1").Offset(a - b, 0).Address
1
CLR 16 oct. 2018 a las 15:41

Siempre he encontrado a RefersToRange bastante faff, así que aquí hay otro enfoque.

Sub x()

Dim a As Long, b As Long

a = 50
b = 10

With Sheets("Data")
    .Range("A100").Name = "Range1"
    Debug.Print Range("Range1").Address 'A100
    .Range("Range1").Offset(a - b, 0).Name = "Range1"
    Debug.Print Range("Range1").Address 'A140
End With

End Sub
1
SJR 16 oct. 2018 a las 16:21