Excel VBA在具有动态范围的行中的每个单元格上运行函数

时间:2014-09-02 15:35:35

标签: excel vba excel-vba

我想在一行中的每个单元格上运行一个名为ToNum的函数,其值将将单元格内容转换为字符串。以下是我的代码,但是我收到了编译错误,有人可以协助并让我知道我做错了吗?

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

2 个答案:

答案 0 :(得分:2)

考虑:

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

答案 1 :(得分:2)

我会将此添加为评论,但我没有足够的声誉评论。为了避免已经包含字符串的单元格上的类型不匹配错误,您可以将ToNum的调用放在子例程中的if语句中,如下所示:

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

这应该防止子程序接触已经是字符串的单元格。