質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

2156閲覧

複製したブックの指定ボタンを削除したい

kktok

総合スコア23

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/09/11 04:51

マクロを含有したボタンを複数持つブックを複製する際、
一定のボタンだけを削除するマクロしようとしています。
指定ボタンかの判定はボタン内の文字を基準としました。

VBA

1Sub test() 2 3 Dim wbThis As Workbook, wbTo As Workbook 4 5 Set wbThis = ThisWorkbook 6 wbThis.SaveAs "原本のコピー" 7 Set wbTo = ActiveWorkbook 8 9 Call deleteShapes1(wbTo) 10 11End Sub 12 13 14Sub deleteShapes1(wb As Workbook) 15 16 Dim shape As Object 17 18 For Each shape In ActiveSheet.ShapeRange 19 20 Dim text As String 21 text = shape.TextFrame.Characters.text 22 23 If InStr(text, "ボタン1のテキスト") > 0 Then 24 25 shape.Delete 26 Exit For 27 28 End If 29 30 Next shape 31 32End Sub

deleteShapes1内、 for each shape In ActiveSheet.ShapeRangeの行で
以下のエラーが発生してしまいます。

実行時エラー'438'オブジェクトはこのプロパティまたはメソッドをサポートしていません。

**試してみたこと

複製する前のブックにて、テスト用のボタンを作成しそのボタンを対象としてファンクションを実行した際は
エラーの発生もなく削除することができました。

ブックの複製先では使えないプロパティという状況に遭遇したことがなく、
原因が分からないため解決方法を教えていただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

とりあえずWorkSheetオブジェクトにShapeRangeというプロパティはないようです。
Selectionオブジェクトにはあるようですが。

ActiveSheetで正しくシート選択できているのかも気になりますが、
ひとまずこれで実行時エラー'438'が出ることはなくなるはずです。

VBA

1 For Each shape In ActiveSheet.Shapes 2 3 Dim text As String 4 text = shape.TextFrame.Characters.text 5 6 If InStr(text, "ボタン1のテキスト") > 0 Then 7 8 shape.Delete 9 Exit For 10 11 End If 12 13 Next shape

投稿2020/09/11 05:20

yureighost

総合スコア2183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kktok

2020/09/11 05:26

ご回答してくださりありがとうございます。 ご指摘いただいたように、シート選択を確実に行うために 対象シートをアクティベートしたのち実行するよう修正しようと思います。
ttyp03

2020/09/11 05:48

> 対象シートをアクティベートしたのち実行するよう修正しようと思います。 アクティブ前提の作りは破綻しやすいので、きちんとオブジェクト経由で指定すべきです。 折角ワークブックを渡しているのだから利用しましょう。 For Each shape In wb.Worksheets(1).Shapes
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問