【问题标题】:validate format string for numeric values in excel (dna)验证excel(dna)中数值的格式字符串
【发布时间】:2017-02-27 10:59:35
【问题描述】:

我正在使用 excel dna 来管理 excel 插件。在那里,我使用Range.NumberFormat = myformat; 将数字格式应用于单元格。我事先不知道字符串myFormat,它是在后端定义的。

在好的情况下 myFormat 类似于 "0.00;(0.00)" 或 "# ##0,00\ _€;[Red]-# ##0,00\ _€",在其他情况下类似于 "托托”。在最新的情况下,excel单元格中的显示是##########或没有意义的东西。

那么,在将格式应用于单元格之前,有没有办法检查字符串 myFormat 是否是 excel 的有效数字格式?

谢谢, 马里奥。

【问题讨论】:

  • 我很确定####### 只是表示单元格不够宽,无法显示该值。您的示例格式为我返回了值。
  • 是的,使用正确的格式示例,excel 显示的值格式正确,并且适​​合半个单元格。但是对于不正确的格式示例,excel有时会显示####,而有时会显示格式的值(例如“toto”)。
  • 什么是不正确格式的例子?如果您的格式是“toto”,那么是的,您将得到 0=toto、1=toto、-1= -toto。
  • 也许我没有正确解释自己。对不起。我想要的非常简单,我有一个字符串“myFormat”,我想将其作为数字格式应用到使用 excel dna 的单元格。但首先我想检查字符串“myFormat”是否是有效的数字格式。例如“0.00;(0.00)”是有效的,而“toto”不是。我事先不知道字符串“myFormat”,它们是在某个后端定义的。
  • 在这种情况下,也许您可​​以制作一个可接受格式的数组,并根据该数组中的每个元素检查您的字符串。 myarray = array("0.00;(0.00)", "# ##0,00\ €;[红色]-# ##0,00\ _€", "_(#.##);(#.##)", "#???/???").如果您的字符串不符合任何可接受的格式,则将其更改为符合要求的格式。

标签: excel excel-interop excel-dna vba


【解决方案1】:
Sub tester()
Dim rng1 As Range, rng2 As Range

Set rng1 = Range("F1")' Formatted with 2 decimal places
Set rng2 = Range("G1")' Formatted with 6 decimal places

If rng1.NumberFormat <> rng2.NumberFormat Then
Beep
End If

End Sub

【讨论】:

  • 这很好检查我们是否在两个范围内有两种不同的格式,但我想验证给定的字符串是否是适用于单元格的有效数字格式
  • 我只是给你你需要的逻辑。我不是想为你写代码马里奥。 if variable.numberformat = myformat 然后做点什么,否则;做点别的。
  • 是的,但我的问题非常不同。我想在应用格式之前检查 myformat 是否有效。如果我执行 rng1.NumberFormat="toto",excel 会显示一些没有意义的东西。所以,我想在实际进入 rng1.NumberFormat = myFormat 行之前检查 myFormat 是否有效
  • 我明白这一点。如您所知,将错误的数字格式放入单元格或列时不会出错。它只会给你乱码数据。据我所知,确保任何字符串包含有效数字格式的唯一方法是对照已知良好格式列表检查它。如果它与其中任何一个都不匹配,那么它不是一个好的数字。您从后端软件收到的错误格式字符串的数量是否有限制?也许编译那些错误格式字符串的列表并对照这些检查你的变量会更容易。
猜你喜欢
  • 2022-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多