【问题标题】:VBA Excel. Edit a range based on an offset from a named cellVBA Excel。根据与命名单元格的偏移量编辑范围
【发布时间】:2018-10-01 09:27:30
【问题描述】:

我不知道这是否可能,但感觉应该是。

我有一个已定义名称的单元格:“Data_A”(它是单个单元格,即 1x1 范围)。

我想将一个数组 (N x M) 写入它附近的单元格(即,跨 i 列,向下 j 行)。

如果数组的维度相同,我知道如何将数组写入命名范围,并且我知道如何偏移范围。

在这种情况下,我会执行以下操作:

'"Data_A" refers to a named range of cells that is 2x3 in size.
'"wks_datainput" is the worksheet that Data_A sits in.
Dim Outputs() as Double: Redim Outputs(1 to 2, 1 to 3)
wks_datainput.Range("Data_A").Offset(6,7).value = Outputs

我的问题是:如果“Data_A”指的是 1x1 的命名范围怎么办?如果“Data_A”的尺寸与“Outputs”的尺寸不匹配,如何写入附近的单元格?

第二个问题 - 如何清除这些单元格(不使用循环)?

 wks_datainput.Range("Data_A").Offset(6,7).ClearContents

【问题讨论】:

  • 不确定你的意思,但也许看看Resize 方法。您的意思是您的命名范围是一个包含另一个 1x1 命名范围名称的单元格?
  • 不 - 我的意思是我的命名范围“是”单个单元格。

标签: excel range offset named-ranges vba


【解决方案1】:

我认为是这样的。 Resize 很有用。

Dim Outputs() As Double: ReDim Outputs(2, 3)
Range("Data_A").Offset(6, 7).Resize(UBound(Outputs, 1), UBound(Outputs, 2)).Value = Outputs

【讨论】:

  • 领先我几分钟。不过有一件事 - 如果Data_A 是一个命名范围,我相信你不需要工作表参考。例如 Worksheets("Sheet 2").Range("Data_A") 如果 Data_A 未在工作表 2 上定义,则会引发错误。
  • @DarrenBartrup-Cook - 是的,我假设范围在该表上,但你是对的,你不需要指定它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
  • 2020-11-04
  • 2018-02-05
相关资源
最近更新 更多