Excel VBA:通过代码将名称分配给单元,相对于另一个命名的单元

我有一段代码,在给定的单元(在下面的例子中命名为cell_22c)之后添加了一定数量的单元(向下)。 (每个部分添加11个单元格 – nbDR是部分的数量)。 每插入11个单元格后,我希望我的代码将单元格命名为“cell_22c_j”,其中j也是依赖于nbDR的“for”循环中的一个数字。 我研究了名称function,并尝试使用录制的macros,但我没有设法引用现有的单元格! 码:

Dim nbDR as integer Dim i as integer Dim j as integer For j = 1 to nbDR For i = 1 To 11 Range("cell_22c")(7).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Next i ActiveWorkbook.Worksheets("Overview").Names.Add Name:="cell_22c_" & j, _ RefersToR1C1:="=Overview!R45C38" next j 

它应该插入11行,然后在该部分中命名一个单元格。 再插入11个,并在新的部分命名一个单元格等。

我相信我的代码是好的,除了RefersTo部分,显然,这是我需要帮助(我认为)的一部分。 任何帮助是极大的赞赏!

理解你的代码试图完成的一些事情被你的项目的超级秘密性质所阻碍,但我相信它基本上归结为以下内容。

 Dim nbDR As Long, j As Long With ActiveWorkbook.Worksheets("Overview") .Range("cell_22c")(7).Resize(11 * nbDR, 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove For j = 1 To nbDR .Range("cell_22c")(7 + j * 11).Name = "cell_22c_" & j Next j End With 

没有必要循环插入行。 只需一次插入所有这些,然后循环,并尽可能以最短的方式分配名称。

这是你正在尝试? 我已经评论了代码,但是如果您有任何问题,请告诉我

 Sub Sample() Dim nbDR As Long, i As Long, j As Long Dim rw As Long, col As Long Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Overview") '~~> Change this to whatever you want nbDR = 5 With ws '~~> Get the current row and coloumn of the named range rw = .Range("cell_22c").Row col = .Range("cell_22c").Column For j = 1 To nbDR For i = 1 To 11 '~~> Insert 1 cell below .Range("cell_22c").Offset(1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Next i ws.Names.Add Name:="cell_22c_" & j, _ RefersToR1C1:="=" & ws.Name & "!R" & rw + 11 & "C" & col '~~> the below is only for testing purpose 'Range("cell_22c_" & j).Value = "cell_22c_" & j Next j End With End Sub 

编辑 :如果范围(“cell_22c”)有多个行/列,则例如相应地更改rw/col的值

 rw = .Range("cell_22c").Row + .Range("cell_22c").Rows 

接着

 .Range("cell_22c").Offset(1) 

 .Range("cell_22c").Offset(rw+1) 

同样,如果需要,也可以处理col