Как изменить ссылку на именованный диапазон? - PullRequest
0 голосов
/ 16 октября 2018

Я хочу переместить ссылку на строку именованного диапазона в результате операции, например: Sheets("Data").Range("Range1").Offset(a-b, 0)

Какой синтаксис я должен использовать для успешного изменения: Range1 = $ A $ 100, чтобыRange1 = $ A $ (100+ (ab))?

Цените любую помощь

Редактировать: Конечно, Скотт, я пытаюсь сбросить именованный диапазон RowMarker обратно к его первоначальному значению, но могу 't получить правильный синтаксис:

Над этим подпунктом у меня есть это:

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

Я вставлю его в операторы if ниже, чтобырезультат между lngRowData и rngData.row становится смещением.

Спасибо, ребята

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Я всегда находил RefersToRange скорее недоработку, так что вот другой подход.

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
0 голосов
/ 16 октября 2018

Это будет сделано:

ActiveWorkbook.Names.Item("Range1").RefersTo = "=Data!" & Range("Range1").Offset(a - b, 0).Address
...