【问题标题】:Assign cell values based on Range variable根据 Range 变量分配单元格值
【发布时间】:2019-09-11 23:27:24
【问题描述】:

我目前有从多个范围复制值并将这些值粘贴到其他范围的代码。这个项目的范围是不断变化的,所以每次添加行或列时都需要在我的 VBA 代码中更改范围。我试图通过创建全局范围变量来存储范围位置来简化这一点,并让我的复制/粘贴代码引用这些变量。

Public test As Range
Public def1 As Range

Public Sub initializeGlobalVars()

'Assign values to the global variables

Set def1 = Sheets("Defaults").Range("B10:D14")

Set test = Sheets("Defaults").Range("B32:D36")
test = def1

End Sub

我知道我在这里遗漏了一些行或错误地接近它,但我希望能够通过引用变量“test”来更改变量“test”中实际单元格的值“test”而不是单元格的位置,因为它在不断变化。这可能吗?

感谢您的帮助!

【问题讨论】:

  • 如果您不知道这些范围是如何变化的,那么就无法实现自动化。这些变化背后有什么逻辑吗?你能提供一个真实的例子来说明发生的事情和预期的结果吗?

标签: excel vba variables range


【解决方案1】:

因为Range 接受一个字符串变量,所以您可以执行以下操作:

Dim strRangeToUse as String
strRangeToUse = "B10:D14"

Set test = Sheets("Defaults").Range(strRangeToUse)

如果您想使用测试范围设置另一个范围 (strRangeToFill),您可以执行以下操作:

Sheets("Defaults").Range(strRangeToFill).Value = test.Value

【讨论】:

  • 感谢您的帮助。但我认为我的问题并不明确;假设我有一个范围变量,其中包含我要粘贴到的位置。称它为 x。然后我有另一个范围变量 (y),其中包含我要粘贴的值。有没有办法让 x 的单元格中的值等于 y 中的范围值?
  • @AlexD 我在上面调整了我的答案。如果这回答了邮件,您能否修改原始问题以包括您的澄清?
【解决方案2】:

您可以使用 TABLES 或 NAMED RANGES

1- 表格有一个名字,可以用来确定一些动态的范围! 这样你就可以使用 ActiveSheet.ListObjects("table").range()

2- 你可以创建一个命名范围

这样你就可以使用了

Range("RAGEDNUMBERONE") 

【讨论】:

    猜你喜欢
    • 2014-05-07
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多