[[20060811111442]] 『オブジェクトの削除について』(あねご) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『オブジェクトの削除について』(あねご)

データの中に、図形描画のテキストボックス(文字が入っているもの)とオブジェクト(文字が何もはいっていないもの)があります。

オブジェクトのみ削除したいのですが、何かいい方法はございますか?
いい方法があれば教えていただけますでしょうか?
よろしくお願いいたします。


 前回の質問のキリキさんのを参考につくってみました(リンカ勉強中)
 ↓
 [[20060802182703]]
『図形描画のテキストボックスのレ点をセルに反映させられますでしょうか?』(あねご) 

 Sub deleteBlankobj()
 Dim sp As Object
 Dim x As Long
    For Each sp In ActiveSheet.Shapes
        If Mid(sp.Name, 1, 8) = "Text Box" Then
            If Len(ActiveSheet.Shapes(sp.Name).TextFrame.Characters.Text) = 0 Then
                sp.Delete
            End If
        Else
            sp.Delete
        End If
    Next sp
 End Sub


リンカさん、いつもありがとうございます。

上記のマクロでオブジェクトは削除されました。で、文字が入っていないのに削除されてないものがあったので確認したら、テキストボックスなのに文字が何も入っていないものもありました。

テキストボックスに文字が入っている場合のみ残し、それ以外は削除したい場合はどうすればよいでしょうか??

再度教えていただけますでしょうか??


 あれ?
            If Len(ActiveSheet.Shapes(sp.Name).TextFrame.Characters.Text) = 0 Then
                sp.Delete
            End If

 これで、一応何も入ってないものはテキストボックスでも削除すると
 したのですが、消えないですか?
 私の所では何も入ってないテキストボックスは
 消されたのですが。。
 実はスペースが入ってたりとかしますか?(リンカ勉強中)


 もしスペースが入っているようでしたら
 以下ので試してください。(リンカ勉強中)

 Sub deleteBlankobj()
 Dim sp As Object
 Dim x As Long
    For Each sp In ActiveSheet.Shapes
        If Mid(sp.Name, 1, 8) = "Text Box" Then
            If Len(Trim(ActiveSheet.Shapes(sp.Name).TextFrame.Characters.Text)) = 0 Then
                sp.Delete
            End If
        Else
            sp.Delete
        End If
    Next sp
 End Sub

リンカさんできました!ありがとうございました。
またまた追加で質問なんですが、Z列にあるテキストボックスのみ削除することは可能でしょうか?
よろしくお願いします!

 以下でどうですか (リンカ)
 Sub deleteBlankobj()
 Dim sp As Object
 Dim x As Long
    For Each sp In ActiveSheet.Shapes

        If ActiveSheet.Shapes(sp.Name).TopLeftCell.Column = 26 Then
            If Mid(sp.Name, 1, 8) = "Text Box" Then
                If Len(Trim(ActiveSheet.Shapes(sp.Name).TextFrame.Characters.Text)) = 0 Then
                    sp.Delete
                End If
            Else
                sp.Delete
            End If
        End If
    Next sp
 End Sub


リンカさん、ありがとうございます。

上記のマクロを実行したところ、Z列のテキストボックスは削除できませんでした・・・
よろしくお願いします。


もしかして Z列より左のセルにテキストボックスがはみでてしまったりしています?(リンカ)

右のAA列にはみでています。。。

右にでている分には 図の開始位置がZ列であれば
消えるはずなんですが、、
上記の流れをうけて、文字がはいっていると消さないようにしています
(リンカ)

 上記の流れとは別に
 単に Z列にある テキストボックスを消したいのであれば
 以下を動かしてみてください (リンカ)

 Sub deleteZobj()
 Dim sp As Object
 Dim x As Long
    For Each sp In ActiveSheet.Shapes

        If ActiveSheet.Shapes(sp.Name).TopLeftCell.Column = 26 And Mid(sp.Name, 1, 8) = "Text Box" Then
                sp.Delete
        End If
    Next sp
 End Sub

リンカさん、ありがとうございます。
上記のマクロで削除できました。
ありがとうございました。本当に感謝です!
またよろしくお願いいたします。

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.