- 締切済み
VBAのプロシージャの記述について
Sub データ検索() Dim myNo As Variant Dim mykekka As Range myNo = InputBox("機番Noを入力してください。", "機番No入力") Cells.Find(What:=myNo, LookAt:=xlPart).Select End Sub 上記のような検索のプロシージャを記述しました。 セルB(機番)を検索して該当の単一セルが選択されるまでは、記述出来たのですが、選択された単一セルの行(A~W)を取得して、下の空白の行にコピーしたいのですが、選択された単一セルの行(A~W)の取得の仕方が分かりません。 VBAを始めたばかりなので、質問の内容が分かりにくいかもしれませんがアドバイスよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- zap35
- ベストアンサー率44% (1383/3079)
>下の空白の行にコピーしたいのですが、 これは、検索された機番Noの行の下という意味ですか? それとも検索された機番Noの行から下にある空白の行という意味ですか? その辺が明確でないので、とりあえず最後の行にコピーするようにしました。また全てのセルを検索範囲にすると無駄ですし誤動作の原因となりますから検索するは列は限定する方がよいと思います。さらに言えば実務で使うつもりならエラー処理は入れた方がよいですよ。質問のマクロだと検索して見つからなかったときエラーになります。 ですからあくまで参考程度にしてください。 Sub データ検索() Dim myNo As Variant Dim mykekka As Range Dim trg As Range Const KibanCol As Integer = 1 '列番号 1:A列、2:B列 myNo = Application.InputBox("機番Noを入力してください。", "機番No入力") 'メソッドのInputBoxを使いましょう If TypeName(myNo) = "Boolean" Then 'Cancelのとき MsgBox "Cancelが選択されました" Else Set trg = ActiveSheet.Columns(KibanCol).Find(What:=myNo, _ LookIn:=xlValues, LookAt:=xlPart) '機番Noの列を検索 If Not trg Is Nothing Then '検索した値が見つかったとき ActiveSheet.Range(Cells(trg.Row, "A"), Cells(trg.Row, "W")).Copy _ Destination:=ActiveSheet.Cells(65536, KibanCol).End(xlUp).Offset(1, 0) Else Msgbox "機番Noが見つかりませんでした" End If End If End Sub
ActiveCell.EntireRow.Select
お礼
質問への回答有難う御座いました。 お礼が遅くなり申し訳ありませんでした。 今後もよろしくお願いします。
補足
質問へのアドバイス、有難う御座いました。 年末年始と、アドバイス頂いた内容をマニアル本を見ながら理解しようとしていたので、返事が遅くなり大変申し訳ありませんでした。 追加で質問したいのですが、新たに作成したシート(予定表)に検索した値をコピーしたいのですが、どのように記述すればいいでしょうか。 お礼が遅くなったうえに質問するのは申し訳ないのですが、アドバイスをお願いします。