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も見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
Excel(VBA)
Excel(エクセル)
-
VBAのロジックでEXCEL上にShape図形があるかないかをチェック
Excel(エクセル)
-
VBA Shapes コピーと名前
Excel(エクセル)
-
-
4
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
5
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
6
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
7
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
8
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
9
コマンドボタンがあるかどうかを取得するには?
PowerPoint(パワーポイント)
-
10
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
11
UserForm1.Showでエラーになります。
工学
-
12
コントロールの存在確認
Visual Basic(VBA)
-
13
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
14
VBA グラフの存在の判定について
Visual Basic(VBA)
-
15
Excel VBAでセル内の画像を選択したい
Excel(エクセル)
-
16
Excelで、図形内の文字をセルに抽出したいです
Excel(エクセル)
-
17
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
18
Excelで特定のオートシェイプのみカウントする方法はありますか?
Excel(エクセル)
-
19
VBA Shapesの座標からセル位置取得について教えてください
Visual Basic(VBA)
-
20
VBA 同じ名前のオブジェクトを選択したいのですが
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
IF文に時間(何時から何時ま...
-
private subモジュールを他のモ...
-
どうやってもFor文を抜けてしま...
-
VB6にてネットワーク上にある共...
-
特定の名前のオートシェイプの...
-
vbaのエラー対応(実行時エラー...
-
【C#】Page_Loadさせない方法に...
-
途中で処理を中断させたい (ア...
-
フォルダのアクセス権確認について
-
【Vb.net】プリンタジョブの取得
-
エクセル 複数の文字を同時に検...
-
シグナル 6(SIGABRT)とは?
-
Functionで戻り値を複数返す方法
-
エクセル VBAで複数セル選択時...
-
ソケットで通信できない
-
VBA For Each 〜 複数条件について
-
VBA Vlookup #N/A表示させない方法
-
UWSCのTHREADについて
-
VBAでBook読み込み時の非表示方...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
IF文に時間(何時から何時ま...
-
vbaのエラー対応(実行時エラー...
-
private subモジュールを他のモ...
-
マクロで、次のコードへ行く前...
-
どう増強すべきか
-
特定の名前のオートシェイプの...
-
シグナル 6(SIGABRT)とは?
-
Excel VBA セルの名前があるか...
-
ExcelのVBAで、選択したファイ...
-
どうやってもFor文を抜けてしま...
-
シェルスクリプトでファイル内...
-
ドリブン??
-
特定のファイルを他のプロセス...
-
VB6にてネットワーク上にある共...
-
【VBA】エラー処理で別プロシー...
-
Functionで戻り値を複数返す方法
-
Word VBA。各マクロの間に待ち...
-
エクセル VBAで複数セル選択時...
-
VBA 複数の行を高速で削除する...
おすすめ情報