使用VBA,我需要不断向命名范围添加新值,rng_SplitWords_Word">。我的新数据收集在VBA成二维数组," dmpallar& quot;。
当前,当我运行宏时,命名的范围单元格会被数组的新值覆盖。这是代码:
DmpAllArr = Application.WorksheetFunction.Transpose(DmpAllArr)
Range("rng_SplitWords_Word").Resize(UBound(DmpAllArr, 1)).Value = DmpAllArr
我的目标不是覆盖已命名的范围值,而是将数组值附加到现有的已命名范围。虽然我对如何在技术上实现这一点有一些想法,但我不知道如何使用VBA实现它们。它们如下:
将"rng_SplitWords_Word">中的现有数据保存为变体;使用"ReDim preserve";调整DmpAllArr的大小,并将该变量附加到DmpAllArr。然后清除"rng_SplitWords_Word">的所有数据,并写入DmpAllArr。
,添加DmpAllArr到"rng_SplitWords_Word">
自"附加,"连接";和";join"如果不能处理二维数组,我不知道如何继续。
我尝试使用。end (xlUp)将数组写入"rng_SplitWords_Word">的最后一行,但没有工作。
有什么建议吗?
这将添加值并调整命名范围的大小。
DmpAllArr = Application.WorksheetFunction.Transpose(DmpAllArr)
With Range("rng_SplitWords_Word")
.Offset(.Rows.Count).Resize(UBound(DmpAllArr, 1)).Value = DmpAllArr
.Resize(UBound(DmpAllArr, 1) + .Rows.Count).Name = "rng_SplitWords_Word"
End With
追加数组
- 假设
rng_SplitWords_Word
为一列范围,DmpAllArr
为二维一基一列数组。
Sub AppendToNamedRange()
Const RangeName As String = "rng_SplitWords_Word"
Dim DmpAllArr As Variant: DmpAllArr = Array("A", "B", "C", "D")
DmpAllArr = Application.WorksheetFunction.Transpose(DmpAllArr)
Dim rCount As Long: rCount = UBound(DmpAllArr, 1)
Dim ws As Worksheet
Set ws = ThisWorkbook.Names(RangeName).RefersToRange.Worksheet
With ws.Range(RangeName)
Dim lCell As Range: Set lCell = .Find("*", , xlFormulas, , , xlPrevious)
If lCell Is Nothing Then
Set lCell = .Cells(1)
Else
Set lCell = lCell.Offset(1)
End If
lCell.Resize(rCount).Value = DmpAllArr
.Resize(lCell.Row - .Row + rCount).Name = RangeName
End With
MsgBox "New Range Address: " & ws.Range(RangeName) _
.Address(0, 0), vbInformation
End Sub