Excel VBA質問箱 IV

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

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


45004 / 76735 ←次へ | 前へ→

【36738】Re:複数の長方形における干渉をチェック...
発言  ハト  - 06/4/11(火) 16:01 -

引用なし
パスワード
   みなさん
こんにちは。

>
>コードにしてみたんですけど、
>正直、合ってるのか間違ってるのかわからないので、
>検証をお願いします。

>  
>  'まずは、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
この比較ですとBの四角形の中にAの四角形が内包されるケースがひっかかりません
以下の様にしてみたらどうでしょうか?
  ’Bの上がAの下よりも下にあるかBの下がAの上よりも上にあれば重ならない
  If rectB(3) < rectA(4) Or rectB(4) > rectA(3) Then
    f = False
  Else
    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
比較については上の記述したのと同様です。
それとこの記述の場合、Bの左右共にAの左右内にある場合、2度メッセージが出る事になりますので、1回目のメッセージ出力後に Exit Sub の記述をした方がよいと思われます。

0 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 回答

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