|
▼mao さん:
こんにちは^^
>Sub 検索()
>
>Dim Mynumber As String
>Dim FoundCell As Range
>Dim fs, msg
まず、「fs」はアドレスが格納されるので、String型
「msg」は、メッセージボックスの返り値なので、Long型で宣言されたらいいかと思います。
>Range("F1").Select
> Mynumber = UserForm1.TextBox1.Text
>
> Set FoundCell = Cells.Find(What:=Mynumber, After:=ActiveCell, _
> LookIn:=xlFormulas, LookAt:=xlPart, _
> SearchOrder:=xlByRows, _
> SearchDirection:=xlNext, MatchCase:=False, _
> MatchByte:=False)
「LookIn」は、今回は文字列を検索するで、「xlValues」じゃないかなあ・・・
> With Worksheets("検索").UsedRange.Columns(6)
>
> If Not FoundCell Is Nothing Then
> fs = FoundCell.Address
「コード」は繰り返して検索しないので、
ここで、アドレスを取得しちゃだめです。
>
> msg = MsgBox("会社コードは「" & FoundCell.Offset(, -2) & "」" & Chr(13) & _
> "会社名は「" & FoundCell.Offset(, -1) & " 」でした。", vbOKCancel)
>
>If msg = vbCancel Then
> Exit Sub
>
>?※ここにF列検索後E列会社名=FoundCell.Offset(, -1)代入の式??
ここで、再び、先ほどヒットしたコードの会社名で新たに検索かけます。
で、ヒットしたら、ここでアドレスを「fs」に入れて、
>Do
ヒットしたセルに色づけ
FindNextで続いて検索
Loop While Not FoundCell Is Nothing And FoundCell.Address <> fs
>
>End If
>End With
>End Sub
>
>
>※↑?の部分が行き詰っている箇所です。
こんな感じかなあ・・・・
「コード」を検索してから、次に「会社名」を検索する前に、「FoundCell」を初期化せんとあかんと思います。
途中で検索する列も変わるので、
> With Worksheets("検索").UsedRange.Columns(6)
これも検討し直した方がいいと思います。
雑な回答ですんませんが・・・・
|
|