LoginSignup
3
2

More than 5 years have passed since last update.

取り消し線の文字列を削除

Posted at

取り消し線が設定された文字列を削除

むかし書き溜めた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
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2