excel - 将命名范围设置为整数

标签 excel vba integer named-ranges

我对 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

最佳答案

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

以下2行相同。

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

如果省略 .Value它仍然是默认设置。但是在第二行中,您可以清楚地看到发生了什么:值(value) 范围 In_StartA写入变量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

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

所以以下应该工作:
Sub Test1()
    Application.CutCopyMode = False

    Dim wsi         As Worksheet
    Set wsi = ThisWorksheet.Worksheets("Input")

    Dim StartA      As Range
    Set StartA = wsi.Range("In_StartA")

    Dim StartB      As Range        
    Set StartB = wsi.Range("In_StartB")

    StartA.Value = StartB.Value
End Sub

关于excel - 将命名范围设置为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59826164/

相关文章:

string - VBA:如何在字符串中查找 "@"符号之后的值

vba - VBA 代码中的“选择性粘贴”不起作用

excel - 删除vlookup结果中的#N/A

vba - 从具有 Cells.Value 的单元格中获取数字时,在 VBA 中重新计算工作表 excel

excel - 每次在 Excel 中使用验证列表时激活宏

c# - 将两个整数映射到一个(有上限)

vba - Excel 在执行 vba 期间卡住

excel - 在 VBA For 循环中,大约 530 次迭代后停止执行

C整数和 float 除法输出

C++ 两个 n 大小的整数列表