使用文本而不是值创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