excel2003
結合されたセルを列方向に検索したい
Bセルで同じ文字列が入っているセルをダブルクリックすると、順繰りに検索する。
下記が、マクロの内容です。
-------------------------------------------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On Err GoTo Myerr:
Dim MyRange As Range
Dim FirstRow As Integer
Application.EnableEvents = False
If Target.Column = 2 And Target.Value <> "" Then
If Target.Row = Range("B" & Rows.Count).End(xlUp).Row Then
FirstRow = 1
Else
FirstRow = Target.Row
End If
With Range("B" & FirstRow & ":B" & Range("B" & Rows.Count).End(xlUp).Row)
Set MyRange = .Find(Target.Value, LookIn:=xlValues, After:=ActiveCell)
If FirstRow = Target.Row Then
Set MyRange = Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row).Find(Target.Value, LookIn:=xlValues, After:=ActiveCell)
MyRange.Select
Else
MyRange.Select
End If
End With
End If
Application.EnableEvents = True
Myerr:
Application.EnableEvents = True
End Sub
-------------------------------------------------------------------------
上記内容で、単独セルであれば動作するのですが、
行方向に結合されている(B1とB2が結合されている)セルをダブルクリックすると
実行時エラー’13’:
型が一致しません。
というエラーが発生します。
上記マクロでどこを修正したらよいのか、教えていただきたく。
B列は、結合されたセル、単独のセルが混在しています。
>上記マクロでどこを修正したらよいのか、教えていただきたく。
-----------------------
最後の、
Application.EnableEvents = True
は二重ですから、
Myerr: の上の行のApplication... はいりません。
しかし、本来は、このイベントにエラートラップは不要のはずです。
その代わり、どこかに、Cancel = True を入れます。DoubleClickイベントは、セルを開いてしまうので、入力待ち状態になり、マクロが停止してしまいます。
>型が一致しません。
結合セルは、戻り値が配列構造になっているからです。
If Target.Column = 2 And Target.Cells(1).Value <> "" Then
本来は、除外項目にしたほうが安全です。結合セル対策は、Target.Cells(1).Value にしてみました。
--------------------------
マクロは最近はほとんど書いたことがないのですが、あまり自信がありませんが、自分なりのものをつくってみました。正しく出来るか分かりません。
'//
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim c As Range
Cancel = True
If Target.Column <> 2 Then Exit Sub
If Target.Cells(1).Value = "" Then Exit Sub
With Range(Cells(Target.Row, 2), Cells(Rows.Count, 2).End(xlUp))
Set c = .Find(Target.Cells(1).Value, LookIn:=xlValues, After:=ActiveCell)
If c.Row <> Target.Row Then
c.Select
Else
MsgBox "これ以降に、" & Target.Cells(1).Value & " は見つかりません。", vbInformation
End If
End With
End Sub
'//
質問者
お礼
回答ありがとうございました。参考になりました。本来の検索は、繰り返し検索(最終行に行ったら先頭の検索文字に返る)仕様なので、
If Target.Column = 2 And Target.Cells(1).Value <> "" Then
の部分を
If Target.Column <> 2 Then Exit Sub
If Target.Cells(1).Value = "" Then Exit Sub
に変更して無事動作しました。
お礼
回答ありがとうございました。参考になりました。本来の検索は、繰り返し検索(最終行に行ったら先頭の検索文字に返る)仕様なので、 If Target.Column = 2 And Target.Cells(1).Value <> "" Then の部分を If Target.Column <> 2 Then Exit Sub If Target.Cells(1).Value = "" Then Exit Sub に変更して無事動作しました。