我想通过操作的结果来移动命名范围的行引用,例如:
Sheets("Data").Range("Range1").Offset(a-b, 0)
我必须使用什么语法来成功更改: Range1 = $ A $ 100到Range1 = $ A $(100+(a-b))?
感谢任何帮助
编辑: 当然,斯科特,我正在尝试将名为range的RowMarker重设回其原始值,但是语法不正确:
在此子上方,我有这个:
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之间的结果成为偏移量。
谢谢你们
答案 0 :(得分:1)
这可以做到:
ActiveWorkbook.Names.Item("Range1").RefersTo = "=Data!" & Range("Range1").Offset(a - b, 0).Address
答案 1 :(得分:1)
我总是发现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