電子書籍の厳選無料作品が豊富!

いつもお世話になってます。
また困っています。Excel2013VBAで下記コードを実行するとだいたいいいのですが、場合によっては思っている位置と違う所を選択しています。
C4:C5が結合セルで、以下C6:C7,・・・C18:C19と2つの結合セルが続いています。
その結合セルに○か×が入力されていて、○の時にOffset(85, -1)の位置を選択するようにしたいと思っています。セルでいうと、B89~B104までで、こちらも同じようにB89:B90が結合されており、同じく・・・B103:B104まで2つずつ結合されています。オフセットの範囲内では以上の場所以外は結合セルはありません。
下記コードを実行すると、だいたいは思い通りに取得できるのですが、例えばC4:C5が○、次が×、その次はまた○と交互に入れた時、選択されるセルはB89:B92,B95:B96,B99:B100というように一つ飛ばしにならず、ずれてしまいます。
おそらく、結合セルがあるためにずれているのが条件によってうまくいったように見える時があるんだろうと思いますが、どのように修正すれば正確に取得できるでしょうか?
Sub TEST()
Dim c As Range, Target As Range, r As Range

For Each c In Range("C4:C19")

If c.Value = "○" Then
If Target Is Nothing Then
Set Target = c.MergeArea
Else
Set Target = Union(Target, c)
End If
End If

Next c

If Not Target Is Nothing Then Target.Offset(85, -1).Select
End Sub

A 回答 (1件)

For Each c In Range("C4:C19")


If c.value = "○" Then
If Target Is Nothing Then
Set Target = c.MergeArea.Offset(85, -1)
Else
Set Target = Union(Target, c.MergeArea.Offset(85, -1))
End If
End If
Next c
If Not Target Is Nothing Then Target.Select
    • good
    • 0
この回答へのお礼

こんにちは。
やってみました。何パターンかで試しましたが、前と違って思い通りの位置が取得できているようです。どうもありがとうございました。

お礼日時:2015/02/08 10:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!