首页 > 解决方案 > 使用单元格中的文本值定义范围点

问题描述

在 WS2 的单元格 B2 中,我有公式=CONCATENATE("B3:B", 'ABC'!N4)。它显示文本“B3:B24”。我想将此定义为 VBA 上的一个范围,它将复制到 A 列中的最后一行数据。或者,我在 WS2 单元格 C4 中也有值 24。我已经尝试了多种方法,但我无法让它发挥作用

Sub Sample()
Dim rng1 As Range
Dim rng2 As Range
Dim rngX As Range
Dim CellRangeDefine As Variant
Dim CellRange As Range
Dim WS1 As Worksheet
Dim WS2 As Worksheet

Set WS1 = Worksheets("ABC")
Set WS2 = Worksheets("123")

numFiles = WS2.Range("C4").Value

CellRange = Range("B3", Range("B" & numFiles.Value))

CellRange.Copy Destination:=WS2.Range("A" & _
                                 WS2.Range("A" & WS2.Rows.Count).End(xlUp).Row + 1)

标签: vbaexcel

解决方案


一种选择是:

Set CellRange = WS2.Range(WS2.Range("B2").Value)

这没有任何错误检查,因此假定它B2包含一个有效的范围地址。请记住,Set否则CellRange它只会将右侧的值放入CellRange(范围的默认行为/方法)。

另外 -始终Option Explicit在模块顶部使用。这将发现错误numfiles,尤其是在将单元格的值传递给它之后,您尝试使用numfiles.value的方式是没有意义的!


推荐阅读