Excel VBA函数在尝试在Excel公式中使用时给出#值错误

Excel VBA函数在尝试在Excel公式中使用时给出#值错误,excel,function,vba,Excel,Function,Vba,我正在使用下面的代码从文本中删除元音,当我使用VBA运行它时,效果很好。 但当我在Excel中使用相同的公式=RMV(Text)时,它会给我一个错误值。 下面是代码,请帮忙 函数RMV(文本)作为字符串 'RMV=去掉元音 我想我会坚持多久 Dim J尽可能长 将Ws设置为工作表 暗淡单元格作为范围 设置Ws=ActiveWorkbook.Sheets(“sheet1”) I=2 J=1 Lastrow=Ws.Cells(Rows.Count,1).End(xlUp).Row 对于I=2到最后

我正在使用下面的代码从文本中删除元音,当我使用VBA运行它时,效果很好。 但当我在Excel中使用相同的公式=RMV(Text)时,它会给我一个错误值。 下面是代码,请帮忙


函数RMV(文本)作为字符串
'RMV=去掉元音
我想我会坚持多久
Dim J尽可能长
将Ws设置为工作表
暗淡单元格作为范围
设置Ws=ActiveWorkbook.Sheets(“sheet1”)
I=2
J=1
Lastrow=Ws.Cells(Rows.Count,1).End(xlUp).Row
对于I=2到最后一行“”,循环将覆盖范围内的所有单元格
RMV=“”
如果Ws.Cells(I,1)”,则“如果条件为选择每个单元格
Text=Ws.Cells(I,1)“将单元格值分配给变量Text”
对于J=1到Len(文本)''For loop To go扫描文本中的每个字母
如果不是像“[AEIOU]”这样的UCase(Mid(Text,J,1)),那么
RMV=RMV&Mid(文本,J,1)
如果结束
下一个J
Lastrow1=Ws.Cells(Rows.Count,2).End(xlUp).Row
单元(I,2)=RMV
如果结束
接下来我
端函数

单元格(I,2)=RMV
是您的问题。在执行函数期间,不能直接写回工作表(否则计算过程将中断)


您唯一能做的就是将
RMV
设置为调整后的字符串。这将返回到工作表。

感谢您的帮助,我是VBA宏新手,您能帮助我如何将RMV设置为调整后的字符串吗。
Function RMV(Text) As String
'RMV = RemoveVowels
Dim I As Long
Dim J As Long
Dim Ws As Worksheet
Dim Cell As Range

Set Ws = ActiveWorkbook.Sheets("sheet1")
I = 2
J = 1
Lastrow = Ws.Cells(Rows.Count, 1).End(xlUp).Row

For I = 2 To Lastrow  '' For Loop to cover all the cells in the range
    RMV = ""
    If Ws.Cells(I, 1) <> "" Then ''If condition to select each cell
        Text = Ws.Cells(I, 1)  '' Assigning the cell Value to variable Text
        For J = 1 To Len(Text) '' FOR loop to go scan each letter in the Text
            If Not UCase(Mid(Text, J, 1)) Like "[AEIOU]" Then 
                RMV = RMV & Mid(Text, J, 1) 
            End If
        Next J
            Lastrow1 = Ws.Cells(Rows.Count, 2).End(xlUp).Row 
            Cells(I, 2) = RMV 
    End If
Next I

End Function