gpt4 book ai didi

excel - vbNewline 与 Chr(10) 作为 Windows 与 Mac OSX 中的换行分隔符

转载 作者:行者123 更新时间:2023-12-03 02:45:44 25 4
gpt4 key购买 nike

我有一个 Excel 子程序,它使用 Split() 函数将 CSV 数据从单元格拆分到数组中。但是,根据我使用的 Excel/OS 版本,用作换行符分隔符的字符会发生变化:

Excel 2011/Mac OSX:

 fullArray = Split(CSV, vbNewLine) 'successfully returns array

fullArray = Split(CSV, Chr(10)) 'fails and returns only a single cell

Excel 2007/Windows 7:

  fullArray = Split(CSV, Chr(10)) 'successfully returns array

fullArray = Split(CSV, vbNewLine) 'fails and returns only a single cell

还有其他人注意到这一点/有解释为什么会发生这种情况吗?

最佳答案

如果您需要支持多个操作系统(或同一操作系统上的不同版本),您可以查看条件编译语句。

您可以引用以下内置编译器常量列表:

http://www.utteraccess.com/wiki/index.php/Conditional_Compilation#Built_In_Compiler_Constants

将分隔符变量定义为字符串并将其分配给函数的结果。

Dim dlmt as String

dlmt = newLine()

fullArray = Split(CSV, dlmt)

该函数然后使用条件编译常量来检查操作系统:

Function newLine() As String

#If Win32 Or Win64 Then
ret = Chr(10)
#ElseIf Mac Then
ret = vbNewLine
#End If

newLine = ret

End Function

坦率地说,现在我这样做了,我记得在这里使用条件编译并不是绝对必要的,除非您有在某些版本中无法编译的方法/属性。您可以使用 Application.OperatingSystem 的更简单属性:

Function newLine() As String

Select Case Application.OperatingSystem
Case Like "Windows*"
ret = Chr(10)
Case Else
ret = vbNewLine
End Select

End Function

关于excel - vbNewline 与 Chr(10) 作为 Windows 与 Mac OSX 中的换行分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26599769/

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