【エクセルVBA】についての質問です。


以下のコードで、検索値(Range("T4").Value)見つからなかった場合の処理を追加したいです。
別のワークシート(変数:WS)の表(A4:F240)内B4:B240に検索するデータがあったら任意のVALUE値を書き込むというものです。

Dim Obj AS Object
Dim WS AS Worksheet

For Each Obj In WS.Range("B4:B240")
If Obj.Value Like Range("T4") Then
If WS.Cells(Obj.Row, 4).Value <> "" Then
MsgBox "既に登録されています"
Exit Sub
End If
WS.Cells(Obj.Row, 4).Value = Range("D2").Value
WS.Cells(Obj.Row, 5).Value = Range("D4").Value
WS.Cells(Obj.Row, 6).Value = Now
End If
Next Obj



よろしくお願いします。
コード自体にこだわり無いので、同じ処理で別の方法があればそれでも良いです。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2009/04/24 18:17:40
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:jccrh1 No.1

回答回数111ベストアンサー獲得回数19

ポイント60pt

見つかったか、見つからなかったかの変数を1つ用意すれば良いと思います。

例としてMatch という変数を使用しました。

Dim Obj   As Object
Dim WS    As Worksheet
Dim Match As Boolean      ' True:Match  False:UnMatch

For Each Obj In WS.Range("B4:B240")
  If Obj.Value Like Range("T4") Then
    Match = True
    If WS.Cells(Obj.Row, 4).Value <> "" Then
      MsgBox "既に登録されています"
      Exit Sub
    End If
    WS.Cells(Obj.Row, 4).Value = Range("D2").Value
    WS.Cells(Obj.Row, 5).Value = Range("D4").Value
    WS.Cells(Obj.Row, 6).Value = Now
  End If
Next Obj
If Match Then Exit Sub
' UnMatch処理
MsgBox "該当セルが見つかりません"
id:pocon

ほー、なるほどです。

頂戴します。m(__)m

2009/04/24 18:17:31
  • id:SALINGER
    別の方法を紹介しておきます。
    >>
    Sub Macro()
    Dim Obj As Object
    Dim WS As Worksheet
    Dim f As Boolean

    '別のシート
    Set WS = Worksheets("Sheet2")

    Set Obj = WS.Range("B4:B240").Find(Range("T4").Value, _
    LookAt:=xlWhole, MatchCase:=True, MatchByte:=True)
    If Obj Is Nothing Then
    MsgBox "検索値は見つかりませんでした"
    Else
    If WS.Cells(Obj.Row, 4).Value <> "" Then
    MsgBox "既に登録されています"
    Exit Sub
    End If
    WS.Cells(Obj.Row, 4).Value = Range("D2").Value
    WS.Cells(Obj.Row, 5).Value = Range("D4").Value
    WS.Cells(Obj.Row, 6).Value = Now
    End If
    End Sub
    <<
  • id:pocon
    いつもありがとうございます。

    自身、Findを使うイメージで質問させていただいたので
    これまた嬉しいです。

    毎度勉強になりますです。m(__)m
  • id:SALINGER
    と、コメントに書いておいてちょっと処理が違ったかな。
    検索結果が1つとは限らないのですね。
  • id:pocon
    今回は一つだけなので、問題ないです♪

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません