使用文本而不是值创build变体数组

在excel-vba中,你可以像下面这样创build一个variables数组:

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 

问:我可以保留使用此方法的格式,而不必先parsing/循环数组中的每个值?

不是很优雅,我不确定这将大量工作,但它避免了一个循环。 你可以把最后的输出放到一个string中并replace:

 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