Excel 使用VBA创建具有已定义变量的命名单元格

Excel 使用VBA创建具有已定义变量的命名单元格,excel,vba,Excel,Vba,我试图通过VBA使用名称管理器命名公式中引用的单元格。我让VBA在图纸上找到正确的单元格(其位置会有所不同),并将其定义为变量: s3form = Range(prog_beg3).Offset(0, 3) 然后,我使用名称管理器功能命名单元格,使单元格的地址为's3form',但行是可变的。因此,如果's3form=B5',则命名单元的地址将为'$B5' ActiveWorkbook.Names.Add Name:=s3_form, RefersTo:=s3form 但是,该公式不能将s3

我试图通过VBA使用名称管理器命名公式中引用的单元格。我让VBA在图纸上找到正确的单元格(其位置会有所不同),并将其定义为变量:

s3form = Range(prog_beg3).Offset(0, 3)
然后,我使用名称管理器功能命名单元格,使单元格的地址为's3form',但行是可变的。因此,如果's3form=B5',则命名单元的地址将为'$B5'

ActiveWorkbook.Names.Add Name:=s3_form, RefersTo:=s3form
但是,该公式不能将s3form识别为单元格。它似乎只在's3form=$B$5'时识别单元格

有人有可能的解决办法吗

谢谢

这是如何做到的:

activeworkbook.Names.Add "Testing",[s3form]
现在“测试”将添加到工作簿中的名称中,参考s3form。关于您的代码,如果您在
s3form
周围使用
[]
,它可能会起作用

通常,这些
[]
是引用命名范围的好方法。您甚至可以引用这样的地址-
[A1]

这是如何做到的:

activeworkbook.Names.Add "Testing",[s3form]
现在“测试”将添加到工作簿中的名称中,参考s3form。关于您的代码,如果您在
s3form
周围使用
[]
,它可能会起作用


通常,这些
[]
是引用命名范围的好方法。您甚至可以引用这样的地址-
[A1]

使用
Set
Set s3form=Range(prog_beg3)。偏移量(0,3)
当然
s3form
必须声明为一个范围。然后,当我尝试ActiveWorkbook.Names.Add Name:=sform,referesto:=s3form.Address时,引用:=s3form.Address@ScottCraner。我需要运行时错误'424'对象请显示更多代码。变量是如何声明和赋值的?
Range(prog_end2).Offset(4,0).选择prog_beg3=Selection.Address(RowAbsolute:=False,ColumnAbsolute:=False)
s3form=Sheets(“testmode”).Range(prog_beg3).Offset(0,3).Address(RowAbsolute:=False,ColumnAbsolute:=True)
ActiveWorkbook.Names.Add Name:=sform,参考:=s3form.Address
使用
Set
Set s3form=Range(prog_beg3)。偏移量(0,3)
当然
s3form
必须声明为一个范围。然后,当我尝试ActiveWorkbook.Names.Add Name:=sform,referesto:=s3form.Address时,引用:=s3form.Address@ScottCraner。我需要运行时错误'424'对象请显示更多代码。变量是如何声明和赋值的?
Range(prog_end2).Offset(4,0).选择prog_beg3=Selection.Address(RowAbsolute:=False,ColumnAbsolute:=False)
s3form=Sheets(“testmode”).Range(prog_beg3).Offset(0,3).Address(RowAbsolute:=False,ColumnAbsolute:=True)
ActiveWorkbook.Names.Add Name:=sform,referesto:=s3form.Address
我尝试了这个方法,但公式仍然无法识别单元格。在名称管理器中,它表示名称引用$I31,这是正确的,但表示值也是$I31。可能该值需要为空才能让公式识别它?@A.Nelson-我缺少一些信息,但在将
s3form
声明为命名范围后,尝试以下->操作,以便用一些值填充它,如下所示:
[s3form]=range(prog_beg3).Offset(0,3)
我尝试了这个方法,但公式仍然无法识别单元格。在名称管理器中,它表示名称引用$I31,这是正确的,但表示值也是$I31。也许该值需要为空才能被公式识别?@A.Nelson-我缺少一些信息,但在将
s3form
声明为命名范围后,请尝试以下->将其填充为某个值,如下所示:
[s3form]=range(prog_beg3).Offset(0,3)