取り消し線が設定された文字列を削除
むかし書き溜めたVBAのTips
取り消し線が部分的に設定された文字列があるセル範囲を選択して実行すると、取り消し線のある文字列を全部削除する。セル内の文字全部に取り消し線が設定されている場合は削除しない。セル範囲を選択するフォームと合わせて使うと便利。
' 取り消し線文字列削除
Sub StrikethroughStringDelete()
Dim i As Integer
Dim strTmp As String
Dim rngTarget As Range
Application.ScreenUpdating = False
For Each rngTarget In Selection
If IsNull(rngTarget.Font.Strikethrough) Then
' 256文字以内であれば書式を保持したまま削除可能
If Len(rngTarget) <= 256 Then
For i = Len(rngTarget) To 1 Step -1
With rngTarget.Characters(Start:=i, Length:=1)
If .Font.Strikethrough = True Then
.Delete
End If
End With
Next
' 256文字より多い場合は書式を破棄して削除
Else
strTmp = ""
For i = 1 To Len(rngTarget)
With rngTarget.Characters(Start:=i, Length:=1)
If .Font.Strikethrough = False Then
strTmp = strTmp & Mid(rngTarget.Value, i, 1)
End If
End With
Next
rngTarget.Value = strTmp
End If
End If
Next
Application.ScreenUpdating = True
MsgBox "完了♪"
End Sub