我有一个由多个用户提交的内容列,通常是从多个来源粘贴到工作表中。此列的数字应始终格式化为文本。 事实上,无论如何做到这一点,总会有一些项目从未在左下角显示警告,这些项目被格式化为文本(我们希望在所有情况下都能看到)
检查单个单元格时,它确实显示为格式化文本,但实际上在导入到数据表中时,如果指示符丢失,则数据类型将作为数字导入。 单击数字并按Enter键将指示符更改为文本。
我怎样才能在VBA中这样做?我不想访问每个单元格,单击内容的结尾并按Enter键。切割和粘贴特殊的无组合可靠地修复这些。
excel看到了什么,它使用这些文本格式警告指示符来解决格式问题,但是当您查看单元格格式属性时似乎没有做到这一点?
Excel 2003,但在更高版本中也遇到了同样的问题。
答案 0 :(得分:2)
对我有用的是检查错误指示符,它似乎比单元格格式本身更可靠。这会查找缺少指示符的任何内容并强制它成为文本。
除非有人知道为什么不应该这样做,否则它会解决我的问题。
Sub check4textformat()
For Each cell In Range("E2:E15000")
If cell.Errors.Item(xlNumberAsText).Value = False Then cell.Formula = cell.Text
Next
End Sub
答案 1 :(得分:1)
由于你的主要目标不是访问每个单元格,我建议比VBA更简单(实际上,它可能是最简单的方法)。
完成。列中的所有数字现在都应存储为文本。
答案 2 :(得分:0)
你真的只需要在每个数字之前添加文本指示符“'”。假设您的值在第一列中,在前120行中,您可以这样做:
For i = 1 To 120
Me.Cells(i, 1).Value = "'" & Me.Cells(i, 1).Value
Next i
如果单元格已有文本值,则忽略前置。复制时(以及在VBA中获取值时),“'”完全被忽略,因为它只表示单元格内容的“类型”。