[英]Function to check string for a-z
我想要 :
H
(从H4
开始),和 我收到运行时错误***invalid use of property***
在Call Isletter
上***invalid use of property***
。
Sub IfBlank()
Dim Rng As Range
Dim MyCell As Range
Dim Isletter As Range
Set Rng = Range("H4:H" & Cells(Rows.Count, "H").End(xlUp).Row)
For Each MyCell In Rng
Call Isletter
If Isletter(MyCell.Value) = True Then
'do nothing
End If
If Isletter(MyCell.Value) = False Then
MyCell.Value = "-"
End If
Next MyCell
End Sub
Public Function IsLetter(MyCell As String) As Boolean
Dim intPos As Integer
For intPos = 1 To Len(MyCell)
Select Case Asc(Mid(MyCell, intPos, 1))
Case 33 To 127
Isletter = True
Case Else
Isletter = False
Exit For
End Select
Next
End Function
IsLetter
函数具有非可选参数(MyCell As String)
因此您必须始终传递此参数,并且必须是字符串。
If IsLetter(MyCell.Value) = True Then
'do something
Else
'do something else
End If
下面的代码
Thos行Range("H4:H" & Cells(Rows.Count, "H").End(xlUp).Row).Value2 = X
将更改后的数组写回范围。
码
Sub IfBlank()
Dim rng1 As Range
Dim X
Dim lngCnt As Long
Dim objRegex As Object
X = Range("H4:H" & Cells(Rows.Count, "H").End(xlUp).Row).Value2
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.IgnoreCase = True
.Pattern = "[a-z]"
For lngCnt = 1 To UBound(X)
If .test(X(lngCnt, 1)) Then X(lngCnt, 1) = vbNullString
Next
End With
Range("H4:H" & Cells(Rows.Count, "H").End(xlUp).Row).Value2 = X
End Sub
不应该存在“Call isletter”那部分代码应该是这样的
For Each MyCell In Rng
If Isletter(MyCell.Value) = True Then
'do nothing
else
MyCell.Value = "-"
End If
Next MyCell
你的“IsLetter”功能会带来麻烦。 ASCII 127是“删除”
此外,只有ASCII 65-90和97 - 122是字母。 这应该包括数字和特殊字符吗?
如果没有,那么它应该看起来更像这样
Public Function IsLetter(MyCell As String) As Boolean
Dim intPos As Integer
For intPos = 1 To Len(MyCell)
Select Case Asc(Mid(Ucase(MyCell), intPos, 1))
Case 90 To 122
Isletter = True
Exit Function
Case Else
Isletter = False
Exit For
End Select
Next
End Function
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.