• ベストアンサー

VBAで打ち消し線の入った文字を特定する方法

Excel VBAに関する質問です。 指定したセル範囲の中で、打ち消し線の入った文字が記入されているセルを見つけ、 そのセルの行を削除、上詰めにしたいと考えています。 方法をご教授いただけませんでしょうか。 ※空いているセルはどのように使用してもOKです。 イメージとしては下のようになります。(打:打消し線の入った文字) D列を検索し、打ち消し線の入ったセルを特定 特定したセルの属する行(2、4、5、6)ごと削除し、上詰めにする。  A B C D E F G 1     あ 2     打      …削除、上詰 3     い 4 え   打      …削除、上詰 5  お  打      …削除、上詰 6     打 か    …削除、上詰 7     う マクロ実行後↓↓↓  A B C D E F G 1     あ 2     い 3     う

質問者が選んだベストアンサー

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

Sub test() For i = 1 To Range("D" & Rows.Count).End(xlUp).Row If Range("D" & i).Font.Strikethrough = True Then Rows(i & ":" & i).Delete Shift:=xlUp i = i - 1 End If Next i End Sub でいかがでしょう

ssshaider
質問者

お礼

返答が遅くなりまして申し訳ありません。 回答ありがとうございます。 他にもいただいたアドバイスなども含めて、参考にさせていただきたいと思います。 ありがとうございます!

その他の回答 (4)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.5

Sub Macro1() Dim i As Long For i = Range("d65536").End(xlUp).Row To 1 Step -1 If Cells(i, 4).Font.Strikethrough = True Then Cells(i, 4).EntireRow.Delete Next i End Sub 参考程度に

ssshaider
質問者

お礼

返答が遅くなりまして申し訳ありません。 回答ありがとうございます。 いくつかアドバイスを頂きましたので、試してみたいと思います。 まずはお礼をば。ありがとうございます。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

#3の補足 うっかりしていましたが、取り消し線の書式がない場合は、エラーが返ることがあるかもしれません。 On Error Resume Next .SpecialCells(xlCellTypeBlanks).EntireRow.Delete On Error Goto 0 と加えてあげれば、エラーは出ません。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 マクロなら、このようにすればよいと思います。 Alt + F11 --> 挿入--> 標準モジュール で貼り付けます。 ワークシートに戻り、Alt +F8 --FindFormatTest1 を選択し、クリック '------------------------------------------- Sub FindFormatTest1()   With Application     .FindFormat.Font.Strikethrough = True   End With   With ActiveSheet.Columns(4) '4列目=D列     .Replace What:="", Replacement:="", SearchFormat:=True     .SpecialCells(xlCellTypeBlanks).EntireRow.Delete   End With End Sub '-------------------------------------------

ssshaider
質問者

お礼

返答が遅くなりまして申し訳ありません。 回答ありがとうございます。 細かなご説明ありがとうございます。 他にもアドバイスを頂きましたので、色々と試したいと思います。

回答No.2

マクロを使わなくても一機に削除可能です。 (1)D列を選択して、Ctrl+Fで「検索と置換」を表示します。 (2)「検索と置換」画面で「オプション」を開きます。 (3)「書式」ボタンで「書式の検索」を開き、「フォント」タブの「文字飾り」で「取り消し線」にチェックします。 (4)「すべて検索」を実行して、下にリストされた検索結果をCtrl+Aで全選択します。 (5)「編集」-「削除」で「行全体」を選択し、削除します。 以上です。 なお、どうしてもマクロで行う場合は、"下の行から"削除した方がいいでしょう。

ssshaider
質問者

お礼

返答が遅くなりまして申し訳ありません。 回答ありがとうございます。 今回は、マクロでひっぱりだしてきたものから、取り消し線の入った行を トルツメしてシートを完成させるということをボタン一発でやりたいという 目的がありましたので、マクロにて検討しております。 ただ、マクロを使わない方法も知らなかったので、大変勉強になりました。 ありがとうございます。

関連するQ&A