【问题标题】:Style "Comma" doesn't work unless edited manually除非手动编辑,否则样式“逗号”不起作用
【发布时间】:2017-09-15 08:10:15
【问题描述】:

我有一个宏,可以打开一些工作簿并将一些数据放入其中,在将一条数据放入单元格后,它会将其样式编辑为.Style = "Comma"(在数字之间设置空格分隔符)。

但是,当我打开该文件时,我只看到一些具有“逗号”样式的单元格,而其他单元格根本没有分隔符。如果我选择一个没有可见分隔符的单元格,但将鼠标光标放在公式区域并单击 Enter,则样式会更改为“逗号”。

我尝试用.Cells(i, j).Calculate模仿它,但无济于事。

为什么某些单元格的样式没有改变,如何在宏内部改变?

PS 我已经在设置中进行了自动计算。手动将样式更改为“逗号”(单击 000 图标也不起作用 - 仅在我将光标放在单元格的公式中并单击 Enter 后才起作用)。

编辑:我将文件保存为xlsx。代码没那么重要。它由Application.Open(filePath)resultWorkbook.Worksheets("sheet 1").Cells(i, j).Value = someValue 组成。

【问题讨论】:

  • 你能发布更多你的代码吗?你将文件保存为什么(.csv,.xlsx)?
  • 听起来他们在里面是文本。重新输入它们将导致 Excel 计算回一个数值,该数值采用格式/样式。
  • 尝试用CDec(someValue) 甚至CDec(Application.WorksheetFunction.Trim(someValue)) 替换someValue 以确保完全确定
  • 选择错误的单元格之一。扩大宽度。确保它没有左对齐、右对齐或居中。如果数字自动左对齐,则它是文本而不是数字,这将导致问题。

标签: vba excel


【解决方案1】:

您的一些“数字”被存储为文本。数字格式和样式(例如“逗号”)不适用于文本。

以下内容会将所有数字(和公式!)转换为可以格式化/设置样式的数字量。您可能希望进一步限制范围,以免影响包含公式的区域:

With Worksheets("sheet 1")
    .UsedRange.Value = .UsedRange.Value
End With

【讨论】:

  • 谢谢。我将大量数字存储为Variant。它会影响它吗?我认为我最好将它们存储为Double,因为它们具有相同的范围,对吗?之后的造型就不会有问题了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-10
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
  • 1970-01-01
相关资源
最近更新 更多