如何将2D数组附加到命名范围的末尾?

  • 本文关键字:范围 2D 数组 arrays excel vba
  • 更新时间 :
  • 英文 :


使用VBA,我需要不断向命名范围添加新值,rng_SplitWords_Word">。我的新数据收集在VBA成二维数组," dmpallar& quot;

当前,当我运行宏时,命名的范围单元格会被数组的新值覆盖。这是代码:

DmpAllArr = Application.WorksheetFunction.Transpose(DmpAllArr)
Range("rng_SplitWords_Word").Resize(UBound(DmpAllArr, 1)).Value = DmpAllArr

我的目标不是覆盖已命名的范围值,而是将数组值附加到现有的已命名范围。虽然我对如何在技术上实现这一点有一些想法,但我不知道如何使用VBA实现它们。它们如下:

  1. "rng_SplitWords_Word">中的现有数据保存为变体;使用"ReDim preserve";调整DmpAllArr的大小,并将该变量附加到DmpAllArr。然后清除"rng_SplitWords_Word">的所有数据,并写入DmpAllArr

  2. ,添加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

最新更新