[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『検索用のマクロについて』(マクロ勉強中)
「マクロ初心者です。今、検索用のマクロを作っています」(あえて編集の中の検索を使わずに)。
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.