- ベストアンサー
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 う
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
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 でいかがでしょう
その他の回答 (4)
- hige_082
- ベストアンサー率50% (379/747)
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 参考程度に
お礼
返答が遅くなりまして申し訳ありません。 回答ありがとうございます。 いくつかアドバイスを頂きましたので、試してみたいと思います。 まずはお礼をば。ありがとうございます。
- Wendy02
- ベストアンサー率57% (3570/6232)
#3の補足 うっかりしていましたが、取り消し線の書式がない場合は、エラーが返ることがあるかもしれません。 On Error Resume Next .SpecialCells(xlCellTypeBlanks).EntireRow.Delete On Error Goto 0 と加えてあげれば、エラーは出ません。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 マクロなら、このようにすればよいと思います。 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 '-------------------------------------------
お礼
返答が遅くなりまして申し訳ありません。 回答ありがとうございます。 細かなご説明ありがとうございます。 他にもアドバイスを頂きましたので、色々と試したいと思います。
- cistronezk
- ベストアンサー率38% (120/309)
マクロを使わなくても一機に削除可能です。 (1)D列を選択して、Ctrl+Fで「検索と置換」を表示します。 (2)「検索と置換」画面で「オプション」を開きます。 (3)「書式」ボタンで「書式の検索」を開き、「フォント」タブの「文字飾り」で「取り消し線」にチェックします。 (4)「すべて検索」を実行して、下にリストされた検索結果をCtrl+Aで全選択します。 (5)「編集」-「削除」で「行全体」を選択し、削除します。 以上です。 なお、どうしてもマクロで行う場合は、"下の行から"削除した方がいいでしょう。
お礼
返答が遅くなりまして申し訳ありません。 回答ありがとうございます。 今回は、マクロでひっぱりだしてきたものから、取り消し線の入った行を トルツメしてシートを完成させるということをボタン一発でやりたいという 目的がありましたので、マクロにて検討しております。 ただ、マクロを使わない方法も知らなかったので、大変勉強になりました。 ありがとうございます。
お礼
返答が遅くなりまして申し訳ありません。 回答ありがとうございます。 他にもいただいたアドバイスなども含めて、参考にさせていただきたいと思います。 ありがとうございます!