I want to :
H
(starting from H4
), and I'm getting runtime error ***invalid use of property***
on Call Isletter
.
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
function has non optional argument (MyCell As String)
so you must always pass this argument and must be string.
If IsLetter(MyCell.Value) = True Then
'do something
Else
'do something else
End If
The code below
Thos line Range("H4:H" & Cells(Rows.Count, "H").End(xlUp).Row).Value2 = X
writes the changed array back to the range.
code
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
The "Call isletter" shouldn't be there That part of the code should look like this instead
For Each MyCell In Rng
If Isletter(MyCell.Value) = True Then
'do nothing
else
MyCell.Value = "-"
End If
Next MyCell
Your "IsLetter" function is going to cause trouble. ASCII 127 is "delete"
Also, only ASCII 65-90 and 97 - 122 are letters. Is this supposed to include numeric and special characters?
if not, then it should look more like this
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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.