将命名范围设置为整数

问题描述 投票:0回答:1

我对VBA还是比较陌生,我目前正在尝试通过引用命名范围而不是特定单元格来简化生活(我仍在研究整个工作簿,并且我不想继续每次单元格移动时更改参考)。据我所知,使用命名范围而不是单元格地址应该不是一个大问题?

下面的代码是我正在处理的较大代码的特定部分。它只是将值从一个单元格(在工作表中包含一个公式)输入到其上方的单元格。我可以使用代码“ wsi.Cells(19,10).Value = Cells(20,10).Value”来实现这一点,但是我不能使用设置为整数的命名范围来使其工作。

我已经尝试了几种变体,但我不断遇到错误,因此任何建议都将是不错的选择!

编辑:删除了与该帖子无关的几行代码。

Sub Test1()

Application.CutCopyMode = False

Dim wsi         As Worksheet
Dim StartA      As Integer
Dim StartB      As Integer

Set wsi = Worksheets("Input")

StartA = wsi.Range("In_StartA")
StartB = wsi.Range("In_StartB")

StartA = StartB

End Sub
excel vba integer named-ranges
1个回答
2
投票

您需要将它们定义为Range而不是Integer

以下两行相同。

StartA = wsi.Range("In_StartA")
StartA = wsi.Range("In_StartA").Value

如果省略.Value,它仍然是默认值。但是在第二行中,您可以清楚地看到发生了什么:范围In_StartAvalue被写入变量StartA(没有链接到该范围,因为StartA是数值Integer,并且不是范围对象)。

但是如果您将变量声明为范围...

Dim StartA      As Range
Dim StartB      As Range

…并将变量设置为范围…

Set StartA = wsi.Range("In_StartA")
Set StartB = wsi.Range("In_StartB")

…然后下一行将更改单元格In_StartA…]中的值

StartA = StartB 

…因为它实际上与]相同>

StartA.Value = StartB.Value

…,您可以清楚地看到两个变量都是范围对象。

© www.soinside.com 2019 - 2024. All rights reserved.