[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『検索用のマクロについて』(マクロ勉強中)
「マクロ初心者です。今、検索用のマクロを作っています」(あえて編集の中の検索を使わずに)。
Sub 検索()
Sheets("住所録").Select
Range("A1:B1").Select MOJI = InputBox("検索文字入力") Cells.Find(What:=MOJI, After:=ActiveCell, LookIn:=xlValues, LookAt:= _ xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext,_ MatchCase:=False , MatchByte:=False, SearchFormat:=False).Activate ActiveCell.Font.ColorIndex = 3 RESPONSE = MsgBox("次を検索しますか?", vbYesNo + vbQuestion, "検索続行") Do While RESPONSE = vbYes ActiveCell.Font.ColorIndex = xlAutomatic Cells.FindNext(After:=ActiveCell).Activate ActiveCell.Font.ColorIndex = 3 RESPONSE = MsgBox("次を検索しますか?", vbYesNo + vbQuestion, "検索続行") Loop MsgBox ("検索を終了しました") ActiveCell.Font.ColorIndex = xlAutomatic End Sub
上のマクロでは該当しない文字を入れると「実行時エラー'91': オブジェクト変数またはWithブロック変数が設定されていません」と出てデバッグするよう要求されますがエラーの内容がHELPを見ても判りません。該当するものが無い場合「該当するものがありません」のようなMsgが出て終了させていのですがどのように訂正すればよろしいでしょうか。ご教示お願いいたします。
こんな感じでどうでしょうか? Option Explicit Sub 検索() Dim C As Range Dim MOJI As String Dim RESPONSE As VbMsgBoxResult With Worksheets("住所録") MOJI = InputBox("検索文字入力") If MOJI <> "" Then Set C = .Cells.Find(MOJI, , xlValues, xlWhole, xlByRows, xlNext, True) If Not C Is Nothing Then C.Font.ColorIndex = 3 RESPONSE = MsgBox("次を検索しますか?", vbYesNo + vbQuestion, "検索続行") Do While RESPONSE = vbYes C.Font.ColorIndex = xlAutomatic Set C = .Cells.FindNext(C) C.Font.ColorIndex = 3 RESPONSE = MsgBox("次を検索しますか?", vbYesNo + vbQuestion, "検索続行") Loop MsgBox ("検索を終了しました") C.Font.ColorIndex = xlAutomatic Else MsgBox MOJI & "は、ありません。。" End If End If End With End Sub (SoulMan)
ヒットした後に C.Select を追加してみてはどうでしょうか? (SoulMan)
> ヒットした後に なので If Not C Is Nothing Then の次。
>使っているうちに「FontクラスのColorIndexのプロパティを設定できません」とでます。 どの行で? (INA)
衝突しました。以下衝突前の文章です。。。 ありゃ、「ご教示」ってほどのもんじゃないですよ。 色を付けるのはわかるでしょ? 色を付けたらSelect つまり選択すればいいんじゃないの?? でも、一番大切なことは応用が出来る様になること、、、 そうしなと、いけないわね(;^_^A あせあせ・・・ ではでは、頑張ってねv(=∩_∩=)v Option Explicit Sub 検索() Dim C As Range Dim MOJI As String Dim RESPONSE As VbMsgBoxResult With Worksheets("住所録") MOJI = InputBox("検索文字入力") If MOJI <> "" Then Set C = .Cells.Find(MOJI, , xlValues, xlWhole, xlByRows, xlNext, True) If Not C Is Nothing Then C.Font.ColorIndex = 3 C.Select 'ここ RESPONSE = MsgBox("次を検索しますか?", vbYesNo + vbQuestion, "検索続行") Do While RESPONSE = vbYes C.Font.ColorIndex = xlAutomatic Set C = .Cells.FindNext(C) C.Font.ColorIndex = 3 C.Select 'ここ RESPONSE = MsgBox("次を検索しますか?", vbYesNo + vbQuestion, "検索続行") Loop MsgBox ("検索を終了しました") C.Font.ColorIndex = xlAutomatic Else MsgBox MOJI & "は、ありません。。" End If End If End With End Sub INAさん、フォローありがとうございます。m(._.)m ペコッ (SoulMan)
どの行でエラーになりますか? ↓これを C.Font.ColorIndex = xlAutomatic ↓これに C.Font.ColorIndex = 0 かえるとどうなりますか? (SoulMan)
変えても同じでデバッグをクリックすると If Not C Is Nothing Then → C.Font.ColorIndex = 3 ここが黄色でハイライトされます。 よろしくお願いいたします。
うぅ〜〜んっと、保護がかかってますか? (SoulMan)
msgbox c.address(0,0) C.Font.ColorIndex = 0 にして、セルの場所を確認してみては? (INA)
SoulManさん INAさん すみません。保護がかかっていました。できました(でも何故だか分かりません)。いろいろ勉強できました。ありがとうございました。
(マクロ勉強中)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.