Excelマクロで指定したシート内にある"直線の全削除"又は"円形の全削除"をする関数を以下のようにしているのですが、
直線を削除しようとしても直線、円の両方の図形が削除されてしまいます(円で削除しようとしても同様)。
msgBoxでAutoShapeTypeのmsoShapeOvalとmsoLineの値を表示させると、両方とも値が「9」で同じになっているため、直線と円形が判定できない状態になっています。
AutoShapeTypeで図形の種別が判断できるものと思っていましたが、判別する方法はあるでしょうか。
'----------------------------------------------------------
' Input : sheetNo:ート番号
' shType :msoShapeOval:円
' msoLine :直線
' Output : None
' Return : None
' Note : 指定したシートにある指定した図形を削除
'----------------------------------------------------------
Private Sub figureDel(ByVal sheetNo As Integer, ByVal shType As Integer)
Dim shData As Shape
For Each shData In Worksheets(SheetName(sheetNo)).Shapes
If shData.AutoShapeType = shType Then
shData.Delete
End If
Next
方法1:
sub macro1()
activesheet.lines.delete
activesheet.ovals.delete
end sub
方法2:
sub macro2()
dim s as shape
for each s in activesheet.shapes
if s.autoshapetype = 9 or s.autoshapetype = -2 then
s.delete
end if
next
end sub
実際に幾つなのか調べてマクロに利用する:
sub 参考()
dim s as shape
for each s in activesheet.shapes
deug.print s.name, s.autoshapetype
next
end sub
お礼
ありがとうございます。 上記のDebug.printで出力しました結果、直線「-2」、円「9」、ボタン「-2」で出力されましたため、方法1の削除方法を用いて作成致しました。