在 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
问:我可以使用此方法保留格式,而不必先解析/循环数组中的每个值吗?
最佳答案
不太优雅,我不确定这在批量工作中效果如何,但它避免了循环。您可以将最终输出放入字符串中并替换:
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
关于vba - 使用文本而不是值创建变体数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35504931/