![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
入力したデータがテーブルの複数行に対応している、運行管理表です。
Application.InputBoxで指定したデータ(検索ID、日付)の行の初めから終わり行までの範囲を別のシートにコピーしたいと思っています。
A列に2020/01/01-001(検索ID)日付と車両管理IDを合体したもの
同じ検索IDが複数あります。(1日の運行回数分)
B列に2020/01/01(運行日)があります。(検索IDと同数)
Sub 運行期間転記()(A列、検索IDを対象として)
Dim dai As Worksheet '台帳A
Dim kanri As Worksheet '管理表
Dim s As Long 'コピー対象の開始行位置
Dim e As Long 'コピー対象の終了行位置
'台帳A、管理表を参照
Set dai = Sheets("台帳A")
Set kanri = Sheets("管理表")
'台帳Aの最終行を調べる
z = dai.Range("A1").End(xlDown).row
'コピー対象を入力
s = Application.InputBox("検索IDを入力して下さい", Type:=2)
'コピー対象の範囲を調べる
key = s
s = WorksheetFunction.Match(key, tbl.Range("A2:A" & z), 0) + 1
e = WorksheetFunction.Match(key, tbl.Range("A2:A" & z), 1) + 1
'対象行をコピー
kanri へペースト
End Sub
これで、一応コピーできましたが、車両の台数分の操作をしなければならないので、B列の日付を検索対象にしようと思い下記の様に修正しましたが、※位置でエラーになります。
(B列日付を対象として)
z = dai.Range("B1").End(xlDown).row(B列参照)
'コピー対象を入力
s = Application.InputBox("検索IDを入力して下さい", Type:=2)
'コピー対象の範囲を調べる
key = s
s = WorksheetFunction.Match(key, dai.Range("B2:B" & z), 0) + 1※(A2➡B2:A➡B)
e = WorksheetFunction.Match(key, dai.Range("B2:B" & z), 1) + 1)
ちなみに、WorksheetFunction.Matchプロパティを取得できませんと表示されます。
key = sはApplication.InputBoxで入力した日付を取得しています。Application.InputBoxを使用したのは初めてで、InputBoxでも試してみましたが同じ結果でした。
何が原因なのか、全く不明です。お判りに方がいらっしゃれば、教えてください。よろしくお願いします。
No.1ベストアンサー
- 回答日時:
検索結果が見つからないというエラーです。
※の前に閉じかっこがないのは気にしなくていいですよね?
tbl→daiになってますが、全部daiでいいですか?
イミディエイトウィンドウに
debug.print(key)
debug.print("B2:B" & z)
等を使って出力してみて下さい。
http://tooljp.com/qa/WorksheetFunction-1004-Matc …
https://www.relief.jp/docs/excel-vba-error-trap- …
https://oshiete.goo.ne.jp/qa/3637799.html
ありがとうございました。Application.InputBoxの Type:を3に変更し、.Match(Val(key)にしたら
認識しました。先に進めそうです。助かりました。
No.2
- 回答日時:
InputBoxメソッド
https://www.239-programing.com/excel-vba/func/fu …
の引数 Type:=2 は文字列です。
B列に入力されているのは多分日付なのでシリアル値なので検索は難しいかも知れません。
http://www.excel.studio-kazu.jp/kw/2019081622562 …
CDate 関数
https://www.tipsfound.com/vba/05cdate
で日付型に変換してみてどうなるか?
データを頭から調べていってと言う手段もありそうですけど、データ数と頻度によりますよね。
新年早々お手数をおかけしました。シリアル値の問題だったんですね。シリアル値を文字列
に変換するために、未使用の最終列の1行目に「日付2」と入力し、2行目以降に[=IF(B2="","",TEXT(B2,"yyyy/m/d")]と入れて文字列に変換して、その列を基準に検索したところ認識してコピーできました。ペースト先では必要以外のデータは削除しますので、問題はないようです。
以前めぐみさんにご紹介頂いた本で勉強しています。いつもありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBAで重複した値のセルに色付けをしたい 1 2022/11/02 16:12
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
B列の最終行までA列をオート...
-
VBAでのリスト不一致抽出について
-
Worksheets メソッドは失敗しま...
-
VBAを使って検索したセルをコピ...
-
Excelで、あるセルの値に応じて...
-
マクロ
-
指定月分の顧客データファイル...
-
VBA 何かしら文字が入っていたら
-
リストビューのコンボボックス
-
エクセルVBAで複数の条件を満た...
-
VBAで範囲を有するセルの記載位...
-
Excel vbaでアクティブなシート...
-
VBAの初心者なのですが、「並び...
-
繰り返しマクロについて
-
VBA勉強中です。教えて下さい。...
-
Excel(M365) Vlookup/セル反転(...
-
VBAで特定の範囲の入力が出来な...
-
Excel 複数列から語句を含む行...
-
VBA指定行削除
-
Worksheet_Change(ByVal Target...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
マクロ 最終列をコピーして最終...
-
VBAを使って検索したセルをコピ...
-
データグリッドビューの一番最...
-
URLのリンク切れをマクロを使っ...
-
VBAのFind関数で結合セルを検索...
-
【VBA】2つのシートの値を比較...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
Excel(M365) Vlookup/セル反転(...
-
VBA指定行削除
-
VBAでのリスト不一致抽出について
-
C# dataGridViewの値だけクリア
-
Changeイベントでの複数セルの...
-
VBAで、特定の文字より後を削除...
-
rowsとcolsの意味
おすすめ情報