gpt4 book ai didi

excel - WorksheetFunction.Transpose 更改数据类型

转载 作者:行者123 更新时间:2023-12-03 16:34:46 25 4
gpt4 key购买 nike

我正在使用 WorksheetFunction.Transpose在 VBA 中将混合日期/字符串的一维数组转换为二维数组以写入工作表。
将我的 Windows 区域设置设置为 DMY ,被写回的日期有月/日转换。

最佳答案

这个论坛已经提到了关于 Dates 通过 Strings 方法转换为 WorksheetFunction.Transpose 的问题。
我对此进行了更深入的研究。WorksheetFunction.Transpose 似乎转换了许多数据类型。转置后的结果将是 BooleanDoubleString在 VBA 中使用此方法时需要考虑到这一点。
这是一些演示该问题的代码:

Option Explicit
Option Base 1
Sub Tester()
Dim v, w, i As Long

v = Array(CBool(-1), CBool(0), CByte(9), CDbl(1234), CDec(1234), _
CInt(1234), CLng(1234), CLngPtr(1234), CSng(1234), _
CCur(123456), #5/1/2015#, "1234")

w = WorksheetFunction.Transpose(v)

For i = 1 To UBound(v)
Debug.Print v(i), TypeName(v(i)), w(i, 1), TypeName(w(i, 1))
Next i


End Sub
debug.print 输出
True          Boolean       True          Boolean
False Boolean False Boolean
9 Byte 9 Double
1234 Double 1234 Double
1234 Decimal 1234 Double
1234 Integer 1234 Double
1234 Long 1234 Double
1234 Long 1234 Double
1234 Single 1234 Double
123456 Currency $123,456.00 String
01-May-15 Date 01-05-2015 String
1234 String 1234 String

编辑 WorksheetFunction.Transpose 的另一个问题
  • 给定一维数组
  • 转置数组的第一维的上界将由公式Ubound(1D_array) mod 2^16
  • 给出
  • 只有 uBound(1D_array) mod 2^16 元素将返回到转置数组。
  • 因此,如果一维数组的 ubound 为 65537,则转置后的数组将仅包含单个项(原始数组中的第一项)
  • 不会返回任何错误信息。
  • 我相信缺少错误消息,并且这种行为始于 Excel 2013。我记得早期版本在这种情况下会返回错误消息。


  • 关于excel - WorksheetFunction.Transpose 更改数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62573975/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com