Excel VBA質問箱 IV

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

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


47924 / 76732 ←次へ | 前へ→

【33753】Re:オブジェクトの選択方法
回答  小僧  - 06/1/19(木) 21:43 -

引用なし
パスワード
   ▼nn さん:
こんばんは。

nn さんのコードを生かす形ですと、このようになるかと思われます。

Sub test2()
Dim numShapes As Long
Dim autoShpArray() As String
Dim numAutoShapes As Long
Dim i As Long
Dim MyShape As Shape
Dim lngRow As Long

  lngRow = 28

  With ActiveSheet.Shapes
    numShapes = .Count 'Shape数
    If numShapes > 1 Then  '1以上あるなら
      numAutoShapes = 1
      ReDim autoShpArray(1 To numShapes) 'すべてのオートシェイプを含む配列を作成
      For i = 1 To numShapes
        If .Item(i).Type = msoShapeRectangle Then '四角なら
          autoShpArray(numAutoShapes) = .Item(i).Name
          numAutoShapes = numAutoShapes + 1
        End If
      Next
    End If
  End With


  For i = 1 To numAutoShapes - 1
    Set MyShape = ActiveSheet.Shapes.Item(autoShpArray(i))
    If MyShape.Top - (Range("H" & lngRow).Top + 4) >= -0.25 And _
      MyShape.Top - (Range("H" & lngRow).Top + 4) <= 0.25 Then
      MsgBox "対象の四角形は" & MyShape.Name & "かも"
    End If
  Next
    Set MyShape = Nothing
End Sub


当方もコードを書きたての頃はなかなか理解できなかったのですが、
MyShape はオブジェクト型の変数となりますので、
値を代入するには Set ステートメントが必要になります。

Set ステートメントで変数:MyShape に Shapeオブジェクトを代入するので、
Shapeオブジェクト に存在する Topプロパティ などを使用できる様になります。
3 hits

【33723】オブジェクトの選択方法 nn 06/1/19(木) 11:38 質問
【33727】Re:オブジェクトの選択方法 小僧 06/1/19(木) 14:17 回答
【33730】Re:オブジェクトの選択方法 nn 06/1/19(木) 15:21 質問
【33733】Re:オブジェクトの選択方法 小僧 06/1/19(木) 16:22 回答
【33744】Re:オブジェクトの選択方法 nn 06/1/19(木) 19:47 質問
【33753】Re:オブジェクトの選択方法 小僧 06/1/19(木) 21:43 回答
【33779】Re:オブジェクトの選択方法 nn 06/1/20(金) 11:58 お礼

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