在excel-vba中,您可以从如下范围创建变体数组:
Dim x As Variant
x = Range("A1:Z1").Value
这显然会将.Value
属性放入数组中。我正在尝试做同样的事情但是得到了单元格的.Text
属性,但我不认为这是可能的。
Dim x As Variant
x = Range("A1:Z1").Text '// <~~ type mismatch
原因如下,我有一行数据如下:
|------A------|------B------|------C------|
1| 01-Jan-2003 27-Feb-2005 15-Sep-2015
我想将行输出到带有分隔符的文本文件,目前我正在使用它:
With WorksheetFunction
x = .Transpose(.Transpose(Cells(1, 1).Resize(1, 3).Value))
End With
Print #1, Join(x, "|")
哪个有效,但它得到的.Value
格式为dd / mm / yyyy,所以输出如下:
01/01/2003|27/02/2005|15/09/2015
问: 我是否可以使用此方法保留格式,而无需先解析/循环数组中的每个值?
答案 0 :(得分:2)
不是很优雅,我不确定它在批量上有多好,但它避免了循环。您可以将最终输出放入字符串并替换:
Dim x As Variant, y As String
x = Range("A1:Z1")
With WorksheetFunction
x = .Transpose(.Transpose(ActiveSheet.Cells(1, 1).Resize(1, 5).Value))
End With
y = Join(x, "|")
y = Replace(y, "/01/", "-Jan-")
y = Replace(y, "/02/", "-Feb-")
y = Replace(y, "/03/", "-Mar-")
y = Replace(y, "/04/", "-Apr-")
y = Replace(y, "/05/", "-May-")
y = Replace(y, "/06/", "-Jun-")
y = Replace(y, "/07/", "-Jul-")
y = Replace(y, "/08/", "-Aug-")
y = Replace(y, "/09/", "-Sep-")
y = Replace(y, "/10/", "-Oct-")
y = Replace(y, "/11/", "-Nov-")
y = Replace(y, "/12/", "-Dec-")
Debug.print y