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的单元格。