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のロジックでEXCEL上にShape図形があるかないかをチェック
Excel(エクセル)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
Excel(VBA)
Excel(エクセル)
-
-
4
VBA Shapes コピーと名前
Excel(エクセル)
-
5
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
6
コマンドボタンがあるかどうかを取得するには?
PowerPoint(パワーポイント)
-
7
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
8
Excelの任意セル上に図形がのっているかどうか?
Excel(エクセル)
-
9
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
10
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
11
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
12
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
13
マウスで選択した図形のみVBAで移動したい。
Visual Basic(VBA)
-
14
Excel VBAでセル内の画像を選択したい
Excel(エクセル)
-
15
エクセルVBA 図形の選択法は?
Visual Basic(VBA)
-
16
パワーポイントのVBAでテキストボックスに値を変更させたいです
Visual Basic(VBA)
-
17
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
18
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
19
excel/vbaにてオートシェイプに名前の定義づけ
Excel(エクセル)
-
20
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
マクロで、次のコードへ行く前...
-
特定の名前のオートシェイプの...
-
Word VBA。各マクロの間に待ち...
-
シグナル 6(SIGABRT)とは?
-
バッチファイルでのエラー処理...
-
vbaのエラー対応(実行時エラー...
-
どう増強すべきか
-
【C#】Page_Loadさせない方法に...
-
特定のファイルを他のプロセス...
-
どうやってもFor文を抜けてしま...
-
Excel VBA セルの名前があるか...
-
複数個のTextBoxでいずれかの内...
-
エクセル VBAで複数セル選択時...
-
シートモジュールを複数作成す...
-
【VBA】エラー処理で別プロシー...
-
順番に処理させたい
-
ASP.netにて質問です。
-
“try/catch”と“if/else”
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
IF文に時間(何時から何時ま...
-
private subモジュールを他のモ...
-
シグナル 6(SIGABRT)とは?
-
Functionで戻り値を複数返す方法
-
特定の名前のオートシェイプの...
-
ExcelのVBAで、選択したファイ...
-
マクロで、次のコードへ行く前...
-
どう増強すべきか
-
VBA 複数の行を高速で削除する...
-
Excel VBA セルの名前があるか...
-
特定のファイルを他のプロセス...
-
Word VBA。各マクロの間に待ち...
-
どうやってもFor文を抜けてしま...
-
【VBA】エラー処理で別プロシー...
-
エクセル VBAで複数セル選択時...
-
シェルスクリプトでファイル内...
-
【Vb.net】プリンタジョブの取得
-
vbaのエラー対応(実行時エラー...
-
VBAでBook読み込み時の非表示方...
おすすめ情報