- 締切済み
エクセル・VBA:値の取得
お世話になっております。 IというBOOK(以下B-I)に、IIというBOOK(以下B-II)からAUTOFILTERでB列に下記のように検索を掛け、ヒットした(検索値と一致した)もののC列の値をB-Iの特定の場所に貼り付けとしたいと思っております。(Search ValueはB-IIのB列で検索、Return ValueはB-IIのC列から、値の貼り付けはB-Iへ。) しかし、検索値に該当するのは1行とは限りません。このような場合、ヒットしたC列の最上行の値から、[Yes/No Message box]のようなものを使い、これを適用しますか?と順に聞いていくようにしたいのですが、どのようにマクロを書けばよいのかわかりません。補足資料として下記に記載しておきましたので、ご参照なさってください。 よろしくお願いいたします。 'B-IIの検索マクロ Workbook("B-II").Activate Sheets("Sheet1").select Worksheets("Sheet1").Cells(1, 1).AutoFilter Field:=2, Criteria1:="XXX" '中略(ここに何を書けばいいのかわかりません) Workbook("B-I").Acticate Sheets("Sheet1").select Cells(i,1).Select Selection.PasteSpecial -B-IIの例- |A列|B列|C列|…| |123|ABC|アイウ|…| |456|ABC|カキク|…| |789|ABC|サシス|…| 検索値"ABC"で検索したら上記の3行がヒットした例です。このような場合 Cells(n,3).value(n行3列目の値という意味)を使用しますか? YES > B-Iへ貼り付け > マクロの終了 NO > Cells(n+1,3).valueを使用しますか? YES > B-Iへ貼り付け > マクロの終了 NO > Cells(n+2,3).valueを使用しますか? YES > B-Iへ貼り付け > マクロの終了 NO > マクロ終了 としたいのです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- xls88
- ベストアンサー率56% (669/1189)
一例です。 Dim myrng As Range Dim i As Long With ActiveSheet.AutoFilter.Range.Offset(1) Set myrng = .Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible) End With If Not myrng Is Nothing Then For i = 0 To UBound(Split(myrng.Address, ",")) MsgBox Split(myrng.Address, ",")(i) Next i End If 「マクロの記録」を活用しましょう。
- xls88
- ベストアンサー率56% (669/1189)
MsgBoxの使い方はこちらが参考にならないでしょうか。 Excel(エクセル) VBA入門:対話型処理1(MsgBox関数) http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_msgbox.html
お礼
xls88さん、 早速のご回答ありがとうございます。 実はヒットした行のC列をどう指定すればいいのかもわからないのです。
お礼
xls88さん、 お返事ありがとうございました。