いつもお世話になります
今、入力データチェックのため与えられたデータで構造図をシート上に描いています
構造図のデータは□、▽、△の形とそれぞれ高さ、幅、位置を与えていて
形のデータは入力規則からドロップダウンリストで□、▽、△を選ぶようになっています
構造図を描くときは、前に処理したデータの図を消して新たな図を描いていきますが
そこで問題が起きました
6行有った前のデータを消して5行のデータの構造図を描くために残っていた図を消しに
行ったとき、なぜかActivesheet.Shapes.Countのカウントがひとつ増えていて、下記の
ステーメントの最後のループでエラーになってしまいます
Top1 = Cells(40, 1).Top
Top2 = Cells(61, 1).Top
For Each PicObj In ActiveSheet.Shapes
TheTop = PicObj.Top
If TheTop >= Top1 And TheTop <= Top2 Then
PicObj.Delete
End If
Next PicObj
明らかに、ドロップダウンリスト"□"の図を消した時に起きてるのですが、対処法が分かりません
尚、図を消す前にブレークし実行をやり直すとCountがもとに戻り正常になります
一時的にShapeのカウントに入るみたいです
以上、対処法が分かりましたら教えてください
お願いいたします
尚、サンプルの6番目のデータ、デバッグのために適当に入れています
No.1ベストアンサー
- 回答日時:
入力規則のドロップダウンもShapeなんですよね
Sub test()
Dim s As Shape
With ActiveSheet
For Each s In .Shapes
Debug.Print s.Name, s.AutoShapeType
Next
Debug.Print .Shapes.Count, .DrawingObjects.Count, .Rectangles.Count
End With
End Sub
このようなテストコードで確認できます
現状のままShapesをループするなら、まずAutoShapeTypeで判定して処理する事で回避できます
もし上記の DrawingObjects や Rectangles のCount で正常にカウントできる状況なら
Dim d As Object
For Each d In ActiveSheet.DrawingObjects
:
ともできますが、DrawingObjectsなどは隠しオブジェクトなので推奨されないかもですね
いつもお世話になります
返信、ありがとうございます
参考になります
図の処理に関していろいろ有りますね
また、いろいろ勉強させてください
AutoShapeTypeも検討しみましたが
今回はOn Error Gotoで逃げました
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください 6 2022/04/26 23:13
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) 追記する列を増やしたい 2つのデータを検索・照合して元データにないデータを下記マクロで商品名を追記し 9 2022/10/05 10:50
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Excel(エクセル) Excel ドロップダウンリスト(入力規則)に関してです データの入力規則で元データ79000行のド 3 2023/07/17 10:06
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
多量のSUMIF式を軽くしたい
-
配列でデータが入っている要素...
-
モジュラス103の算出方法について
-
VBA 空白セルを削除ではない方...
-
この行は既に別のテーブルに属...
-
メモ帳(テキストデータ)をExc...
-
ユーザーフォームのテキストボ...
-
アクセス2000で画像データ...
-
GridViewの行の一部を複数行にする
-
VBA 判定文で理解できない結果...
-
Excelのマクロでワードのテキス...
-
エクセルVBAでもっと早く転記
-
VBAで「"」[']をエスケープする...
-
ページ数を求めたい
-
[VBA] CountIfに変数を使いたい
-
C言語について
-
VBAを使ってOutlookメール本文...
-
ブレーカー落ちで壊れたりしな...
-
S9タイプからXタイプにデータ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
配列でデータが入っている要素...
-
多量のSUMIF式を軽くしたい
-
エクセルで2つの時系列のデー...
-
Excelのマクロでワードのテキス...
-
メモ帳(テキストデータ)をExc...
-
VBA 空白セルを削除ではない方...
-
VBAを使ってOutlookメール本文...
-
Accessで該当データにフラグを...
-
合計3TBのデータのハッシュ値を...
-
シーケンサにパソコンからアク...
-
S9タイプからXタイプにデータ...
-
カンマからスラッシュに
-
VBAでシートからコンボボックス...
-
VBA 毎日取得するデータを順番...
-
ビットシフトについて
-
ユーザーフォームのテキストボ...
-
EXCELVBAでSQLserverからデータ...
-
特定のデータの抽出方法を教え...
おすすめ情報