システムメンテナンスのお知らせ

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     う

gooドクター

A 回答 (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

でいかがでしょう
    • good
    • 0
この回答へのお礼

返答が遅くなりまして申し訳ありません。
回答ありがとうございます。

他にもいただいたアドバイスなども含めて、参考にさせていただきたいと思います。
ありがとうございます!

お礼日時:2009/09/24 11:11

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

参考程度に
    • good
    • 0
この回答へのお礼

返答が遅くなりまして申し訳ありません。
回答ありがとうございます。

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

お礼日時:2009/09/24 11:08

#3の補足


うっかりしていましたが、取り消し線の書式がない場合は、エラーが返ることがあるかもしれません。

On Error Resume Next
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
On Error Goto 0

と加えてあげれば、エラーは出ません。
    • good
    • 0

こんばんは。



マクロなら、このようにすればよいと思います。
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

'-------------------------------------------
    • good
    • 0
この回答へのお礼

返答が遅くなりまして申し訳ありません。
回答ありがとうございます。

細かなご説明ありがとうございます。
他にもアドバイスを頂きましたので、色々と試したいと思います。

お礼日時:2009/09/24 11:10

マクロを使わなくても一機に削除可能です。



(1)D列を選択して、Ctrl+Fで「検索と置換」を表示します。
(2)「検索と置換」画面で「オプション」を開きます。
(3)「書式」ボタンで「書式の検索」を開き、「フォント」タブの「文字飾り」で「取り消し線」にチェックします。
(4)「すべて検索」を実行して、下にリストされた検索結果をCtrl+Aで全選択します。
(5)「編集」-「削除」で「行全体」を選択し、削除します。

以上です。
なお、どうしてもマクロで行う場合は、"下の行から"削除した方がいいでしょう。
    • good
    • 0
この回答へのお礼

返答が遅くなりまして申し訳ありません。
回答ありがとうございます。

今回は、マクロでひっぱりだしてきたものから、取り消し線の入った行を
トルツメしてシートを完成させるということをボタン一発でやりたいという
目的がありましたので、マクロにて検討しております。

ただ、マクロを使わない方法も知らなかったので、大変勉強になりました。
ありがとうございます。

お礼日時:2009/09/24 11:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング