
No.4ベストアンサー
- 回答日時:
#03です。
先のマクロを少しスリムにしましたので再掲しますSub Macro1()
Const trg As String = "A1"
Dim res
Dim psw As Boolean
Dim idx As Integer
With ActiveSheet
For idx = 1 To .Shapes.Count
If .Shapes(idx).Type = msoLine Then
Set res = Intersect(.Range(trg), Range(.Shapes(idx).TopLeftCell, _
.Shapes(idx).BottomRightCell))
If Not res Is Nothing Then
psw = True
Exit For
End If
End If
Next idx
If psw Then
MsgBox "ラインが" & trg & "と重なっています"
Else
MsgBox "重なっていません"
End If
End With
End Sub
この回答への補足
ご回答ありがとうございます。
>>このラインにセルが引っかかっているかどうか
>どのライン? どのセルですか。
このライン = ライン(Shapeオブジェクト)
どのセル = 任意のセル
です。
要は両方とも任意です。
いただいたソースコードは非常に参考になります。
これを元にちょっと進めてみたいと思います。
ありがとうございました。
No.3
- 回答日時:
微妙に何をどうすればよいのかが分からない質問ですね。
>このラインにセルが引っかかっているかどうか
どのライン? どのセルですか。
セルとラインが特定できれば、以下のようにIntersect関数で範囲重複があるかないかを判定すればよいと思いますが、質問には一切書かれていないので想像で書かなければなりませんね。回答する側はurourojpさんのPC画面は見えませんので…
Intersect(.Range("A1"), Range(.Shapes(1).TopLeftCell, .Shapes(1).BottomRightCell))
以下のマクロは2行目で指定しているセルに、かかっているシェイプの「ライン」があるかないかを判定するサンプルです。質問には「ライン」と明記されていますので、「ライン」以外のシェイプは無視するようにしています。また色々余分に書き込みすぎていますが、基本は上に書いた通りです。部分的にでもご参考になれば…
Sub Macro1()
Const trg As String = "A1"
Dim res, act
Dim psw As Boolean
Dim idx As Integer
Set act = Selection
With ActiveSheet
Application.ScreenUpdating = False
For idx = 1 To .Shapes.Count
.Shapes(idx).Select
If TypeName(Selection) = "Line" Then
Set res = Intersect(.Range(trg), Range(.Shapes(idx).TopLeftCell, _
.Shapes(idx).BottomRightCell))
If Not res Is Nothing Then
psw = True
Exit For
End If
End If
Next idx
act.Select
Application.ScreenUpdating = True
If psw Then
MsgBox "ラインが" & trg & "と重なっています"
Else
MsgBox "重なっていません"
End If
End With
End Sub

No.2
- 回答日時:
それはつまり、Shapeがセルのラインをまたいでいるか=Shapeが2つ以上のセルに干渉しているかの判定ではないですか?
Shape.TopLeftCell プロパティ(オブジェクトの左上端にあるセルを取得)
Shape.BottomRightCell プロパティ(オブジェクトの右下端にあるセルを取得)
この2つのプロパティで取得した値(Rangeオブジェクト)を比較して、一致すればそのShapeは同一セル内に収まっているということです。
これではダメでしょうか??
Shape.TopLeftCellというプロパティーがあったんですね。
これを使って進めてみたいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel(VBA)
Excel(エクセル)
-
エクセルVBAでセル番地を指定してオブジェクト名取得
Excel(エクセル)
-
特定の名前のオートシェイプの有無を知りたい(エクセルVBA)
Excel(エクセル)
-
-
4
VBAのロジックでEXCEL上にShape図形があるかないかをチェック
Excel(エクセル)
-
5
EXCEL VBAでオートシェイプの重なりを検知するには?
Excel(エクセル)
-
6
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
7
VBAでセルを指定した画像のコピー&ペーストを繰り返したい
Excel(エクセル)
-
8
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
9
【VBA】写真の縦横比を変えずに貼り付ける
Visual Basic(VBA)
-
10
EXECLマクロでshapeがグルーフ゜化されてるかどうかを調べる方法は?
Visual Basic(VBA)
-
11
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
12
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
13
ExcelVBAで、シートに画像が貼り付けてあるかを判断したいのですが
Excel(エクセル)
-
14
マクロを実行すると画像がズレてしまいます
その他(Microsoft Office)
-
15
エクセルVBA「リストボックスで選択した値をテキストボックスで変更してシート上セルに反映したい」
Excel(エクセル)
-
16
エクセルVBA 画像を貼り付けるセル位置を指定する方法
Excel(エクセル)
-
17
Excel VBAでセル内の画像を選択したい
Excel(エクセル)
-
18
VBAによる図形位置判定
Visual Basic(VBA)
-
19
Excel VBAで、実行時にsheet上のコマンドボタンのCaptionを変更する。
Excel(エクセル)
-
20
エクセルVBA 作業後に選択範囲を解除する方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
車校 効果測定について 第一段...
-
普通の携番で電話中の時に、ラ...
-
既婚者同士で、毎日職場で会う...
-
夜9-10時にLINEを送って、既読...
-
職場の同僚女性のことです ほぼ...
-
メンタル的な理由で、ラインを...
-
メンタルの理由でLINEを返せな...
-
家のWifiでこれって早いですか?...
-
複数ページはpp. 複数行はll. ?
-
もう5ヶ月LINEを未読されている...
-
しつこいLINEがだるくてブロッ...
-
助けて!好きな人とのラインを...
-
お客さんに勘違いさせやがって...
-
250kbpsの通信速度ってどのくら...
-
ライン通話
-
普段携帯を見ない男性って仕事...
-
既婚者同士。ラインをやめるには
-
彼女と、LINEしていて先ほど3件...
-
彼女からもう丸一日以上返信が...
-
約束をすっぽかされたり、返事...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
車校 効果測定について 第一段...
-
既婚者同士で、毎日職場で会う...
-
夜9-10時にLINEを送って、既読...
-
普通の携番で電話中の時に、ラ...
-
仕事の先輩から「休んでいいよ...
-
職場の同僚女性のことです ほぼ...
-
彼氏にいつ電話をかけても通話...
-
女友達からのLINEが毎日あって...
-
ライン通話
-
メンタルの理由でLINEを返せな...
-
彼女と、LINEしていて先ほど3件...
-
飲み会でハメを外した人からの...
-
4ヶ月くらい毎日ラインしてた男...
-
家のWifiでこれって早いですか?...
-
普段携帯を見ない男性って仕事...
-
だいたい街で一人で歩いてると...
-
約束をすっぽかされたり、返事...
-
彼女からもう丸一日以上返信が...
-
ラインに既読をつけたくないけ...
-
メンタル的な理由で、ラインを...
おすすめ情報