Excel VBA質問箱 IV

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

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


45006 / 76732 ←次へ | 前へ→

【36733】Re:複数の長方形における干渉をチェック...
発言  ちくたく  - 06/4/11(火) 11:57 -

引用なし
パスワード
   しろうと さん 、わいわい さん
こんにちは。

コードにしてみたんですけど、
正直、合ってるのか間違ってるのかわからないので、
検証をお願いします。
コメント入れてるので、なんとかわかって頂けたらと思います。
これが合ってたら、処理の速さは考えなければ、
ループを回すだけなんですけどね。

Sub test()

  Dim rectA(1 To 4) As Double, rectB(1 To 4) As Double
  Dim i As Integer, f As Boolean
  
  i = 17
  f = False
  
  'rectA、rectBを四角形とし、それぞれの上下左右の座標値を格納
  
  rectA(1) = Range("F" & i) + Range("I" & i) / 2 '右
  rectA(2) = Range("F" & i) - Range("I" & i) / 2 '左
  rectA(3) = Range("G" & i) + Range("J" & i) / 2 '上
  rectA(4) = Range("G" & i) - Range("J" & i) / 2 '下
  
  i = i + 1
  
  rectB(1) = Range("F" & i) + Range("I" & i) / 2 '右
  rectB(2) = Range("F" & i) - Range("I" & i) / 2 '左
  rectB(3) = Range("G" & i) + Range("J" & i) / 2 '上
  rectB(4) = Range("G" & i) - Range("J" & i) / 2 '下
  
  'rectAに対するrectBの位置を検査
  
  'きれいなコードではないけれど、If文でひとつずつ精査していくこととする。
  
  'まずは、rectAに対し、上が含まれる可能性があるか。
  'rectBの上がrectAの上よりも下であり、かつ、rectAの下よりも上であること
  If rectB(3) <= rectA(3) And rectB(3) >= rectA(4) Then
     f = True
  End If
  
  '次に、rectAに対し、下が含まれる可能性があるか。
  'rectBの下がrectAの下よりも上であり、かつ、rectAの上よりも下であること
  If rectB(4) <= rectA(4) And rectB(4) >= rectA(3) Then
     f = True
  End If
  
  'フラグに引っかかってたら、横についての検査。
  If f = True Then
    'まずは、rectAに対し、左が含まれる可能性があるか。
    'rectBの左がrectAの左よりも右であり、かつ、rectAの右よりも左であること。
    If rectB(2) >= rectA(2) And rectB(2) <= rectA(1) Then
      MsgBox ("交差しています")
    End If
    
    '次に、rectAに対し、右が含まれる可能性があるか。
    'rectBの右がrectAの右よりも左であり、かつ、rectAの左よりも右であること。
    If rectB(1) <= rectA(1) And rectB(1) >= rectA(2) Then
      MsgBox ("交差しています")
    End If
  End If
  
End Sub

6 hits

【36725】複数の長方形における干渉をチェックするマクロについて しとうと 06/4/10(月) 22:55 質問
【36728】Re:複数の長方形における干渉をチェックす... ちくたく 06/4/11(火) 10:22 発言
【36729】Re:複数の長方形における干渉をチェックす... しろうと 06/4/11(火) 10:51 発言
【36731】Re:複数の長方形における干渉をチェック... わいわい 06/4/11(火) 11:33 発言
【36733】Re:複数の長方形における干渉をチェック... ちくたく 06/4/11(火) 11:57 発言
【36738】Re:複数の長方形における干渉をチェック... ハト 06/4/11(火) 16:01 発言
【36739】Re:複数の長方形における干渉をチェック... ちくたく 06/4/11(火) 16:31 発言
【36740】Re:複数の長方形における干渉をチェック... ハト 06/4/11(火) 17:05 発言
【36747】Re:複数の長方形における干渉をチェック... ハト 06/4/12(水) 8:09 発言
【36741】Re:複数の長方形における干渉をチェック... こたつねこ 06/4/11(火) 17:41 発言
【36742】Re:複数の長方形における干渉をチェック... ハト 06/4/11(火) 18:06 発言
【36744】Re:複数の長方形における干渉をチェック... こたつねこ 06/4/11(火) 18:30 発言
【36736】Re:複数の長方形における干渉をチェックす... こたつねこ 06/4/11(火) 15:13 回答
【36745】Re:複数の長方形における干渉をチェックす... ichinose 06/4/11(火) 21:42 発言
【36746】Re:複数の長方形における干渉をチェックす... 平塚在住 06/4/11(火) 22:37 回答

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