如何将单元格的格式更改为文本,同时保持所有数据与我用眼睛看到的完全一样 - 所见即所得

Dav*_*vid -1 excel wysiwyg vba excel-vba

我想创建一个宏,将我wb中的所有单元格更改为文本格式.在我的下面的代码中它将所有单元格更改为文本格式,但该代码的问题在于它并不总是"你看到的就是你得到的",我的意思是当excel改变单元格的格式时有时也会改变单元格内的数据.例如:如果我将单元格格式从数字(小数位:4)更改为文本,"1.200"将采用文本格式"1.2"等...是否有任何棘手的方法将所有单元格更改为文本格式,同时保留所有单元格数据与任何用户看到的一样,无论他看到什么?(使用vba)

VBA:

  Cells.Select
  Selection.NumberFormat = "@"
Run Code Online (Sandbox Code Playgroud)

Tim*_*ams 6

你可以尝试这样的事情:

Sub Test()

    Dim c, v

    For Each c In Selection.Cells
        v = c.Text
        c.NumberFormat = "@"
        c.Value = v
    Next c
End Sub
Run Code Online (Sandbox Code Playgroud)

...假设所有的内容都是可见的(即没有列太窄,导致值显示为"########"),不过话说回来那是所见即所得...