
Excel VBA で、オートシェイプを扱おうとしています。
たとえば、
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 10, 10, 50, 50).Name = "TestShape1"
のようにして、それぞれ名前を付けているのですが、プログラム中、特定のオートシェイプを削除したり、再び同じ名前で作ったり、ということを行っています。
前者の場合、すでに当該オートシェイプが削除されている場合、目的のオートシェイプが存在していないためか、エラーが発生します。また後者の場合も、オートシェイプを重ねて作成することになってしまうケースにエラーが発生します。
On Error Resume Next で回避することも考えられるでしょうが、もっと直接的に、ある名前のオートシェイプが存在する/しない、をチェックしたうえで各処理を行うようにしたいのです。
どのような方法があるでしょうか?
No.1ベストアンサー
- 回答日時:
Dim objShp As Shape
For Each objShp In ActiveSheet.Shapes
If objShp.Name = "TestShape1" Then
処理Y '該当オートシェイプありの場合の処理
Else
処理N '該当オートシェイプなしの場合の処理
End If
Next
結局、いちいち名前を確認してやるしかないのですかね。
オートシェイプの数も少ないので、これでやることにします。
ありがとうございました。
No.2
- 回答日時:
先の回答は間違いでした。
(Dim 行はそのまま)
該当オートシェイプありで処理したい場合
For Each objShp In ActiveSheet.Shapes
If objShp.Name = "TestShape1" Then
処理 '該当オートシェイプありの場合の処理
End If
Next
----
該当オートシェイプなしで処理したい場合はたとえば(必要に応じて工夫してください)
For Each objShp In ActiveSheet.Shapes
If objShp.Name = "TestShape1" Then
MsgBox "該当オートシェイプあり"
Exit Sub 'あればマクロを終了
End If
Next
処理 '該当オートシェイプなしの場合の処理
----
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ExcelVBAで自動調整できますか? 3 2023/08/25 22:59
- Excel(エクセル) excelのオートシェイプを使って 1 2023/01/03 16:54
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- 画像編集・動画編集・音楽編集 medibang での文字の整列の仕方 1 2023/06/02 06:38
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Excel(エクセル) Excelを開くとエラーが出る 2 2022/10/03 16:13
- Google Drive Googleドライブで削除できないファイルがある。 5 2023/05/11 09:39
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA 同じ名前のオブジェクトを選択したいのですが
Visual Basic(VBA)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
UserForm1.Showでエラーになります。
工学
-
-
4
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
5
Excel(VBA)
Excel(エクセル)
-
6
コントロールの存在確認
Visual Basic(VBA)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
9
【EXCEL VBA】オートシェイプをクリックした時にそのオートシェイプの名前を取得したい
Visual Basic(VBA)
-
10
Excelの任意セル上に図形がのっているかどうか?
Excel(エクセル)
-
11
VBAのロジックでEXCEL上にShape図形があるかないかをチェック
Excel(エクセル)
-
12
コマンドボタンがあるかどうかを取得するには?
PowerPoint(パワーポイント)
-
13
2画面表示でのVBAのボタン押下後のform表示の位置
Excel(エクセル)
-
14
マクロで選択した図形の選択状態を解除するには
Excel(エクセル)
-
15
エクセルで、オブジェクトの選択を禁止する方法。
Excel(エクセル)
-
16
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
17
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
18
ユーザーフォームで動的(Me.Controls.Add)に作成したコントロールの削除
Visual Basic(VBA)
-
19
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
20
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
vbaのエラー対応(実行時エラー...
-
private subモジュールを他のモ...
-
どうやってもFor文を抜けてしま...
-
シグナル 6(SIGABRT)とは?
-
IF文に時間(何時から何時ま...
-
マクロで、次のコードへ行く前...
-
エクセル画面のちらつきなくす...
-
エクセルVBAでロックをかけたい
-
特定のファイルを他のプロセス...
-
ListViewから選択中の文字列を取得
-
途中で処理を中断させたい (ア...
-
入力した値が不正というよりイ...
-
どう増強すべきか
-
StatusStripの表示が更新されな...
-
Functionで戻り値を複数返す方法
-
winsockの非同期処理について
-
Excel VBA セルの名前があるか...
-
シートモジュールを複数作成す...
-
ASP.NETで特定のページだけ文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
vbaのエラー対応(実行時エラー...
-
private subモジュールを他のモ...
-
マクロで、次のコードへ行く前...
-
シグナル 6(SIGABRT)とは?
-
特定の名前のオートシェイプの...
-
IF文に時間(何時から何時ま...
-
どう増強すべきか
-
特定のファイルを他のプロセス...
-
Word VBA。各マクロの間に待ち...
-
どうやってもFor文を抜けてしま...
-
Excel VBA セルの名前があるか...
-
ExcelのVBAで、選択したファイ...
-
【C#】Page_Loadさせない方法に...
-
StatusStripの表示が更新されな...
-
途中で処理を中断させたい (ア...
-
エクセル VBAで複数セル選択時...
-
Functionで戻り値を複数返す方法
-
VBAでBook読み込み時の非表示方...
-
VBA 複数の行を高速で削除する...
おすすめ情報