如何一次简单地将数组中的值写入整个ListObject列(仅限数据行,不包括标题)?我找到了一个解决方案,但我不认为它是漂亮的:
' needs: ActiveSheet with ListObject "Tabelle1",
' with second column heading "Spalte2" and 4 data rows
Sub WriteLoColumnTest()
Dim lo As ListObject
Set lo = ActiveSheet.ListObjects("Tabelle1")
Dim va(1 To 4, 1 To 1) As Variant
va(1, 1) = "a"
va(2, 1) = "b"
va(3, 1) = "c"
va(4, 1) = "d"
' here it comes:
lo.ListColumns("Spalte2") _
.Range _
.Resize(lo.ListRows.Count) _
.Offset(1) _
.Value2 = va
End Sub我需要.ListColumns和.Range来获取范围,需要.Resize和.Offset来跳过标题行。有没有更简单的方法?
发布于 2019-02-22 22:23:25
如果你只是在寻找一种更简单的方法,你可以使用下面的方法来实现同样的效果
Sub WriteLoColumnTest()
Dim lo As ListObject: Set lo = ActiveSheet.ListObjects("Tabelle1")
Dim va As Variant
va = Array("a", "b", "c", "d")
lo.ListColumns("Spalte2").DataBodyRange.Value2 = Application.Transpose(va)
End Sub为了进一步阅读,您可能希望熟悉listobject的不同部分
https://www.thespreadsheetguru.com/blog/2014/6/20/the-vba-guide-to-listobject-excel-tables
https://stackoverflow.com/questions/54828734
复制相似问题