首页 > 解决方案 > 尝试将 Excel 列更改为文本

问题描述

我正在尝试使用 TEXT 函数格式化从“A3”开始的所有 Excel 单元格。我可以做一个单元格(参见示例 1),但我在尝试做整个列时遇到问题,我不断收到不匹配错误(参见示例 2)。

Dim ws As Worksheet
Set ws = Worksheets("Sheet1")

Dim lastRow As Integer
LastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
ws.Range("H3") = Application.WorksheetFunction.Text(ws.Range("A3"), "00000.0000")
ws.Range("H3:H" & LastRow) = Application.WorksheetFunction.Text(ws.Range("A3:A" & LastRow), "00000.0000") 

错误:不匹配错误运行时错误13

标签: excelvba

解决方案


使用Application.Text,它是后期绑定的版本,WorksheetFunction.Text可以接受和返回一个数组。

还要更改IntegerLong以避免潜在的Overflow错误。Excel 的行数超出了Integer处理能力。

Dim ws As Worksheet
Set ws = Worksheets("Sheet1")

Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

With ws.Range("H3:H" & lastRow)
    .NumberFormat = "@"
    .Value = Application.Text(ws.Range("A3:A" & lastRow), "00000.0000")
End With

推荐阅读