如何使用VBA将单元格格式更改为文本

Cod*_*gry 52 excel vba excel-vba

我在Excel工作表中有一个"持续时间"列.它的单元格格式总是会改变 - 我希望将持续时间从几分钟转换为秒,但由于单元格格式化,它总是给我不同的答案.

我在想,在进行转换之前,我可以将该单元格格式转换为文本,以便将其视为文本值而不是尝试自动格式化.

目前我正在将所有数据复制到记事本中,然后将其保存回Excel工作表以删除所有以前的格式.有没有办法使用VBA自动将单元格的格式设置为文本?

Jus*_*elf 89

要回答您的直接问题,它是:

Range("A1").NumberFormat = "@"
Run Code Online (Sandbox Code Playgroud)

要么

Cells(1,1).NumberFormat = "@"
Run Code Online (Sandbox Code Playgroud)

但是,我建议将格式更改为您实际想要显示的内容.这允许您在单元格中保留数据类型,并轻松使用单元格公式来操作数据.


Jon*_*Jon 6

那么这应该将您的格式更改为文本.

Worksheets("Sheetname").Activate
Worksheets("SheetName").Columns(1).Select 'or Worksheets("SheetName").Range("A:A").Select
Selection.NumberFormat = "@"
Run Code Online (Sandbox Code Playgroud)

  • 在更改NumberFormat之前无需激活或选择 - 只需使用Sheets(1).Columns(1).NumberFormat ="@"之类的东西. (22认同)

小智 5

一点:在将值加载到单元格之前,必须设置NumberFormat属性.在加载单元格后设置NumberFormat时,我有一个九位数仍然显示为9.14E + 08.在加载值之前设置属性使得数字显示为我想要的,作为直文

要么:

你能先尝试自动调试吗?
Excel_Obj.Columns( "A:V")EntireColumn.AutoFit.