我一直在学习VBA一段时间,但是我遇到过一个问题,直到知道我才能解决这个问题。
我希望能够使用VBA命名列,因此我可以稍后将其用作其他单元格/列中的参考列(使用INDEX函数)。
我知道如何命名固定的列。但这不是我想要的。
我的问题示例:
本月我将列D
命名为TotalAmount
。
VBA代码可以是:
ActiveWorkbook.Names.Add Name:="TotalAmount", RefersToR1C1:="=Sheet1!C4"
我将使用INDEX函数在其他单元格中引用该列。
但是,下个月我将在专栏D
之前添加一个新专栏(比如上个月的销售额)。因此,我希望下个月命名为TotalAmount
的新列将是E
列,而不是D
。
我知道在添加新列时不应更改列命名,而列E
将自动成为TotalAmount
列。但是,我不能依赖它,因为excel表是由不同的人访问的,每个人都在做自己的计算。
所以我也尝试了这个(我确定它很愚蠢,但是我仍然是一个菜鸟)但它不起作用:(
Sub Macro4()
Range("D1").Select
'(I can select the desired cell each month using the search function)
Dim i As Integer
i = ActiveCell.Column
ActiveWorkbook.Names.Add Name:="TotalAmount", RefersToR1C1:="=Sheet1!Ci"
End sub
如果有人能帮助我或指导我这个问题,我将非常感激。
答案 0 :(得分:0)
'i'是一个变量,所以你不能在引号中使用它。在引号中,它只是'我'并且没有价值。试试ActiveWorkbook.Names.Add Name:="TotalAmount", RefersToR1C1:="=Sheet1!C" & i
不确定这是否可以解决您的问题
答案 1 :(得分:0)
您可以让VBA为您找到该单元格:
import
代码在Sub SetNamedRange()
Dim rng As Range
Set rng = ThisWorkbook.Worksheets("Sheet1").Range("A1:Z1").Find("TotalAmount")
ThisWorkbook.Names.Add Name:="TotalAmount", RefersToR1C1:=rng
End Sub
中搜索文本A1:Z1
并将命名范围设置为该单元格