[[20150930151429]] 『オートシェイプとハイパーリンクの削除』(あかり) ページの最後に飛ぶ

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

 

『オートシェイプとハイパーリンクの削除』(あかり)

お世話になります。

会社のデータで作表しているのですが、オートシェイプとハイパーリンクをアクティブシートの6行目以降一括削除したいのですがどの様にしたら良いのでしょうか?
お教え頂けると助かります。

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 たとえば

 Sub Sample()
    Dim sp As Shape
    Dim hp As Hyperlink
    For Each sp In ActiveSheet.Shapes
        If sp.Type = msoAutoShape Then
            If sp.TopLeftCell.Row >= 6 Then sp.Delete
        End If
    Next

    For Each hp In ActiveSheet.Hyperlinks
        If hp.Range.Row >= 6 Then hp.Delete
    Next

 End Sub

 シェープは左上隅が6行目以降かどうかで判断しています。

(β) 2015/09/30(水) 15:31


β様ありがとうございます。
いつも手作業で行っていました。
明日、会社でやって見ます。
本当にありがとうございました。
(あかり) 2015/09/30(水) 15:58

β様
早速、今日試してみましたがエラーが出てしまいました。

実行時エラー 1004
アプリケーション定義またはオブジェクト定義エラー と出ます。
If hp.Range.Row >= 6の所が黄色くなりました。
どの様に対処したら良いのでしょうか?
教えて頂けると助かります。
(あかり) 2015/10/01(木) 12:36


 横から失礼します。

 コードはそのままコピペしましたか?

 手入力してスペルが間違ってるとかはないですか?
(カリーニン) 2015/10/01(木) 13:03

 カリーニンさんからも指摘がありますが、基本的にこのコードでエラーになることはないと思います。
 実際に動かしてエラーになったコードを Sub から End Sub までコピペでアップしてもらえませんか。

(β) 2015/10/01(木) 13:08


β様 お手数をお掛け致します。
コピペしただけなので変更点はありません。

 Sub Sample()
    Dim sp As Shape
    Dim hp As Hyperlink
    For Each sp In ActiveSheet.Shapes
        If sp.Type = msoAutoShape Then
            If sp.TopLeftCell.row >= 6 Then sp.Delete
        End If
    Next

    For Each hp In ActiveSheet.Hyperlinks
        If hp.Range.row >= 6 Then hp.Delete
    Next

 End Sub
(あかり) 2015/10/01(木) 13:34

 >If hp.Range.row >= 6 Then hp.Delete

 「row」と先頭が小文字になってるのが気になりますね。

 Dim row As〜

 と変数宣言してませんか?
(カリーニン) 2015/10/01(木) 14:05

カリーニン様

β様の提示されましたコードでコピペしただけなのでエラーについては判りません。
また rowをRowに変えてやってみましたが変りませんでした。
(あかり) 2015/10/01(木) 14:23


β様、カリーニン様

先ほど他のサイトでオートシェイプの削除のコードを比べてみて
下記のように変更しましたらエラーも出ずに終了致しました。

 Sub Sample()
    Dim sp As Shape
    Dim hp As Hyperlink
    For Each sp In ActiveSheet.Shapes

            If sp.TopLeftCell.row >= 6 Then sp.Delete

    Next

    For Each hp In ActiveSheet.Hyperlinks
        If hp.Range.row >= 6 Then hp.Delete
    Next

 End Sub

お手数をお掛けしました。
(あかり) 2015/10/01(木) 14:54


 ↓の2015/09/29(火) 05:50のβさんの書き込みをご参照ください。

[[20150928224734]] 『テキストファイル書き込みに時間が掛かる。』(ブラック&ホワイト)
(カリーニン) 2015/10/01(木) 15:09


 カリーニンさんも示唆されていますが、そちらでうまくいったという、そのコードは

 If sp.Type = msoAutoShape Then の判定をやめ、すべてを無条件に削除としたものですよね。
 また、エラーは、シェープではなく If hp.Range.Row >= 6 つまり、今回そちらで変更したところとは異なり
 ハイパーリンクのところでしたよね??

 つじつまが合いません。

 エラー時、モジュールレベルの変数で row As なんたら というものがあったのではないですか?
 で、それを消して実行してうまくいったということでは??

(β) 2015/10/01(木) 16:21


コメント返信:

[ 一覧(最新更新順) ]


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