- ベストアンサー
結合されたセルを列方向に検索したい
- Excel2003で結合されたセルを列方向に検索するためのマクロの修正方法を教えてください。
- 結合されたセルをダブルクリックすると、実行時エラー'13'が発生する問題があります。
- 行方向に結合されたセルをダブルクリックするとエラーが発生するため、マクロの修正が必要です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>上記マクロでどこを修正したらよいのか、教えていただきたく。 ----------------------- 最後の、 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 '//
その他の回答 (1)
- itu1989
- ベストアンサー率44% (37/83)
「Target.Value」を使っている箇所に注意して下さい。結合されたセルが対象の時と結合されていないセルが対象の時とで入ってくる型が変わっています。 結合なし:Variant/Empty ※↑空セルを選択したので今回は右辺にEmptyが表示されている。 結合あり:Variant/Variant(1 to 2, 1 to 1) 同じVariant型ではありますが、結合時に来ているのは配列になっています。 なので配列と""を比較しようとして型不一致が起こっています。 「Target(1).Value」にする事で問題箇所は解決できます。 ただし、「MyRange.Select」でエラーになります。少し調べましたが結合されたセルは.Find時にうまく検索できないようです。 なので、「Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row).Find(Target(1).Value, LookIn:=xlValues, After:=ActiveCell)」の結果がNothingとなりNothing状態のMyRangeをSelectしようとしてエラーとなります。 解決策は・・・わかりません><
お礼
回答ありがとうございました。
お礼
回答ありがとうございました。参考になりました。本来の検索は、繰り返し検索(最終行に行ったら先頭の検索文字に返る)仕様なので、 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 に変更して無事動作しました。