gpt4 book ai didi

excel - 如何读取 Excel 中单元格的格式化文本表示形式

转载 作者:行者123 更新时间:2023-12-02 14:55:43 24 4
gpt4 key购买 nike

我正在使用 Excel 的 COM 接口(interface),我希望获取单元格的格式化文本表示形式,而不是真正的基础值。

例如,假设单元格包含数字1.23456,并且用户指定了保留 1 位小数的数字格式。然后我希望能够读取字符串 "1.2"。我知道我可以使用 Range.Text,但这在几个重要方面会失败。 Range.Text 返回用户在工作 TableView 中看到的内容,因此如果单元格被隐藏,则返回空字符串。如果单元格的宽度较小,则返回截断的字符串。 Range.Text 也会下降,因为它限制为 1024 个字符。

另一个用例是当单元格计算出错误时,例如#DIV/0!#NAME?#REF! 等。我知道我可以读取 Range.Value 并测试变量是否为 varError 类型(我使用的是 Delphi,在 VBA 中它将是 vbError)。我不知道如何获取文本表示 #DIV/0! 等。再次 Range.Text 返回此值,但如果单元格是隐藏或太窄。

编辑

我认为 Range.Text 的限制实际上是 255 个字符。

最佳答案

基于 Steven 的回答:尝试这个 VBA 代码。
由于排队要求,它无法正确处理会计格式,但无论如何也不清楚在这种情况下您想要做什么。

    Sub testing()
Dim oRng As Range
Dim var As Variant
Set oRng = Range("a3")
If IsError(oRng) Then
var = cstrError(oRng.Value)
Else
var = oRng.Value2
If IsNumeric(var) Then var = Format(var, oRng.NumberFormatLocal)
End If
MsgBox Len(var) & " " & var
End Sub
Function cstrError(vError As Variant) As String
Select Case CLng(vError)
Case xlErrDiv0
cstrError = "#DIV/0!"
Case xlErrNA
cstrError = "#N/A"
Case xlErrName
cstrError = "#NAME?"
Case xlErrNull
cstrError = "#NULL!"
Case xlErrNum
cstrError = "#NUM!"
Case xlErrValue
cstrError = "#VALUE!"
Case xlErrRef
cstrError = "#REF!"
Case Else
cstrError = "#N/A"
End Select
End Function

关于excel - 如何读取 Excel 中单元格的格式化文本表示形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4164044/

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