Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


31866 / 76734 ←次へ | 前へ→

【50111】Re:商品管理、検索の方法
質問  tk  - 07/7/9(月) 21:50 -

引用なし
パスワード
   返信ありがとうございます。

>とりあえず、ワークシート関数であるMatch関数をVBAで使うことで、検索結果の
>行を取得します。
>
>以下のコードは、Sheet1のB1セルの値を検索するものです。
>
>Sub Sample()
> Dim c As Range
> Dim lngRow As Long
> 
> With Sheets("Sheet1").Range("B1")
>  lngRow = 0
>  On Error Resume Next
>  lngRow = Application.Match(.Value, Sheets("Sheet2").Columns("B"), 0)
>  On Error GoTo 0
>  If lngRow > 0 Then
>   Sheets("Sheet2").Cells(lngRow, 3).Value = .Offset(, -1).Value
>  Else
>   MsgBox "番号なし" & .Value
>  End If
> End With
>End Sub
>
>これをヒントにでもして、ご自分で少し考えてみてください。
>Sheet1のB列のセルすべてを処理するためには、上記のコードに、
>For 〜 Next などの繰り返し処理を加えることになります。
>繰り返し処理の方法は、過去ログにヒントがたくさんありますので、検索してみる
>のもいいかもしれません。


アドバイスいただいたように考えてみたのですが、

(省略)
Dim RR As Long
Dim Rmax As Long

Rmax = Sheets("Sheet1").Range("B65536").End(xlUp).Row
For RR = 2 To Rmax

With Sheets("Sheet1")
lngRow = 0
On Error Resume Next
lngRow = Application.Match(Cells(RR, 2).Value, Sheets("Sheet2").Columns("B"), 0)
On Error GoTo 0

If lngRow > 0 Then
 Sheets("Sheet2").Cells(lngRow, 3).Value = .Offset(RR, -1).Value
Else
 MsgBox "番号なし" & .Value
End If
End With
Next
End Sub

以上でやるとif文を実行せず、全てElse以降に進んでしまうようなのです。
(Sheet1のB列のセルに数個データがあるとして、完全に一致しているデータがあっても書き換えられず、全て「番号なし」のメッセージが表示されます。)

本を見ながらの初心者なので教えていただければと思います。

4 hits

【50080】商品管理、検索の方法 tk 07/7/8(日) 8:31 質問
【50082】Re:商品管理、検索の方法 かみちゃん 07/7/8(日) 9:11 発言
【50111】Re:商品管理、検索の方法 tk 07/7/9(月) 21:50 質問
【50112】Re:商品管理、検索の方法 かみちゃん 07/7/9(月) 22:07 発言

31866 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free