Excel VBA在一个具有dynamic范围的行中的每个单元上运行一个函数

我想在一行中的每个单元格上运行一个名为ToNum的函数,并将一个单元格内容转换为一个string。 这里是我的代码如下,但我得到一个编译错误,任何人都可以协助,让我知道我在做什么错了?

Sub ConvRows() Dim rng As Range Dim cell As Variant Set rng = Range("A8:A" & Range("A" & Rows.Count).End(xlUp).Row).Select For Each cell In rng cell.Value = ToNum(cell.Value) Next End Sub Function ToNum(X As Variant) As String Dim A As String A = Trim(Str(X)) ToNum = A End Function 

考虑:

 Function ToNum(X As Variant) As String Dim A As String A = Trim(Str(X)) ToNum = "'" & A End Function 

我会添加这个作为评论,但我没有足够的声望点评论。 为了避免单元格中已经包含string的types不匹配错误,你可以把你的调用ToNum放在子程序中的if语句中,如下所示:

 If IsNumeric(cell.Value) Then cell.Value = ToNum(cell.Value) End If 

这应该保持子程序不接触已经是string的单元格。