Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1862 / 13645 ツリー ←次へ | 前へ→

【71436】セレクトしたオートシェイプの数 tanokun 12/3/2(金) 21:16 質問[未読]
【71437】Re:セレクトしたオートシェイプの数 ichinose 12/3/2(金) 22:18 発言[未読]
【71443】Re:セレクトしたオートシェイプの数 UO3 12/3/3(土) 15:55 発言[未読]
【71444】Re:セレクトしたオートシェイプの数 UO3 12/3/3(土) 15:56 発言[未読]
【71445】Re:セレクトしたオートシェイプの数 tanokun 12/3/4(日) 9:27 お礼[未読]

【71436】セレクトしたオートシェイプの数
質問  tanokun  - 12/3/2(金) 21:16 -

引用なし
パスワード
   Sub test()
MsgBox Selection.Count
End Sub

というコードを用意して、
オートシェイプを1個選択した状態で実行すると
実行時エラー'438':
オブジェクトは、このプロパティまたはメソッドをサポートしていません。
というエラーが出ます。

オートシェイプを1個選択した状態で実行すると
エラーはでないで、"2"になってくれます。

1個ではなぜエラーになるのでしょうか?
簡単な回避方法はないでしょうか?
なぜこんなつまらないところで悩まされるのでしょうか?

助けてください。

【71437】Re:セレクトしたオートシェイプの数
発言  ichinose  - 12/3/2(金) 22:18 -

引用なし
パスワード
   こんばんは。


>Sub test()
MsgBox typename(Selection)
>End Sub
これで表示される情報が
一つ選択した場合と複数選択した場合と違うことを確認して下さい。
エラーの原因は、その違いです。


Sub test()
  On Error Resume Next
  Dim shpr As ShapeRange
  Set shpr = Selection.ShapeRange
  If Err.Number = 0 Then
    MsgBox shpr.Count
  End If
  On Error GoTo 0
End Sub

【71443】Re:セレクトしたオートシェイプの数
発言  UO3  - 12/3/3(土) 15:55 -

引用なし
パスワード
   ▼tanokun さん:

横から失礼します。
ichinoseさんからエラー配慮したコードがアップされていますが
Selection.ShapeRange をつかえば、エラーバイパスは不要では?

Sub test()
  MsgBox Selection.ShapeRange.Count
End Sub

【71444】Re:セレクトしたオートシェイプの数
発言  UO3  - 12/3/3(土) 15:56 -

引用なし
パスワード
   ↑ あぁ、もしかしたら 選択がシェープ以外(たとえばセル)の時のエラー回避配慮だったでしょうか?
であれば、私のレスは無視してください。

【71445】Re:セレクトしたオートシェイプの数
お礼  tanokun  - 12/3/4(日) 9:27 -

引用なし
パスワード
   助かりました。
ありがとうございました。

1862 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free