Excel 计算函数中范围内的特殊字符数

Excel 计算函数中范围内的特殊字符数,excel,vba,Excel,Vba,此函数应统计选定范围内的所有特殊隐藏字符 我犯了个错误StrIn=C.Text不起作用 Function hiddencount(Rng As Range) Dim C As Range Dim cnt As Integer Dim iCh As Integer Dim StrIn As String cnt = 0 For Each C In Rng.Cells C.Value = StrIn If Not C.HasFormula Then For iC

此函数应统计选定范围内的所有特殊隐藏字符

我犯了个错误<代码>StrIn=C.Text不起作用

Function hiddencount(Rng As Range)

Dim C As Range
Dim cnt As Integer
Dim iCh As Integer
Dim StrIn As String
cnt = 0

For Each C In Rng.Cells
    C.Value = StrIn

    If Not C.HasFormula Then
        For iCh = 1 To Len(StrIn)
            If Asc(Mid(StrIn, iCh, 1)) < 32 Then
                cnt = cnt + 1
            End If
        Next iCh
    Else
    End If
Next C

hiddencount = cnt

End Function
函数隐藏计数(Rng作为范围)
调光范围
作为整数的Dim cnt
作为整数的Dim iCh
像细绳一样模糊的条纹
cnt=0
对于每个C In Rng.单元格
C.值=StrIn
如果不是C.has公式,那么
对于iCh=1至Len(StrIn)
如果Asc(Mid(StrIn,iCh,1))小于32,则
cnt=cnt+1
如果结束
下一个iCh
其他的
如果结束
下一个C
hiddencount=cnt
端函数

简而言之,将
C.Value=StrIn
更改为
StrIn=C.Text


不过,您确实不需要这个变量。它只是创建了更多代码供以后阅读。为什么不直接使用
C.Text
,这样就可以清楚地知道正在分析什么?此外,如果您不打算对
Else
语句执行操作,您可以将其删除

Function hiddencount(Rng As Range)

Dim C As Range, cnt As Integer, iCh As Integer

For Each C In Rng.Cells
    If Not C.HasFormula Then
        For iCh = 1 To Len(C.Text)
            If Asc(Mid(C.Text, iCh, 1)) < 32 Then cnt = cnt + 1
        Next iCh
    End If
Next C

hiddencount = cnt

End Function
函数隐藏计数(Rng作为范围)
尺寸C作为范围,cnt作为整数,iCh作为整数
对于每个C In Rng.单元格
如果不是C.has公式,那么
对于iCh=1至Len(C.Text)
如果Asc(Mid(C.Text,iCh,1))<32,则cnt=cnt+1
下一个iCh
如果结束
下一个C
hiddencount=cnt
端函数

你能解释一下你的函数应该做什么吗。难道不应该反转吗<代码>StrIn=C.值。否则,您将
C
设置为nothing
C.Value=StrIn
应为
StrIn=C。Text
函数应计算选定范围内的所有特殊隐藏字符。但我还是有错误。我很抱歉,它现在起作用了。你是对的…只是需要颠倒过来。塔库guys@MartinLauf,将鼠标悬停在答案分数下,然后单击复选标记以确认此答案。