
VBAで以下を作成しました。
①研修受講者
②研修詳細情報
③白紙フォーマット
④受講者詳細情報
のシートがあり、研修ごとに受講者一覧を作成するVBAを作成したいです。
研修名称を②の分類シートからFindで探し、必要なデータを転記し、
FindNextで同じ研修名の別日程も作成できるようにしたいです。
Findはうまくいくのですが、FindNextではNothingになってしまいます。
なにがいけないのでしょうか。
また、なにか他のやり方はありますでしょうか。
VBA初心者で調べながら作成していますので、めちゃくちゃかもしれません。
ご教示お願いいたします。
宣言のみ省かせていただきます。
----
flag = 0
Set ws1 = Worksheets("データ")
Set ws2 = Worksheets("分類")
Set ws3 = Worksheets("フォーマット3")
Set ws4 = Worksheets("名簿")
Application.ScreenUpdating = False
lRow = ws1.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lRow
n = Application.WorksheetFunction.CountIf(Range(ws1.Cells(2, 6), ws1.Cells(i, 6)), ws1.Cells(i, 6))
If n = 1 Then
ws3.Range("A11").Value = ws1.Cells(i, 6)
Set search = ws2.Range("C:C")
x = ws3.Range("A11").Value
Set findtitle = search.Find(x, LookIn:=xlValues, LookAt:=xlWhole)
Set tmpfindt = findtitle
Do
ws3.Range("C4").Value = ws2.Cells(findtitle.Row, findtitle.Column + 4).Value '実施部門
dating = CDate(ws2.Cells(findtitle.Row, findtitle.Column + 2).Value)
ws3.Range("C5").Value = Format(dating, "mm月dd日") '実施日時
ws3.Range("C6").Value = ws2.Cells(findtitle.Row, findtitle.Column + 5).Value '実施場所
ws3.Range("C7").Value = ws2.Cells(findtitle.Row, findtitle.Column + 6).Value '対象
ws3.Range("A9").Value = ws2.Cells(findtitle.Row, findtitle.Column + 7).Value 'テキスト
ws3.Range("E9").Value = ws2.Cells(findtitle.Row, findtitle.Column + 1).Value '講師
k = 13
For j = 2 To lRow
If ws1.Cells(j, 6).Value = ws3.Range("A11").Value And dating = ws1.Cells(j, 4).Value Then
mail = ws1.Cells(j, 1).Value
Set findno = ws4.Columns("B").Find(mail, LookAt:=xlWhole)
ws3.Cells(k, 2).Value = ws4.Cells(findno.Row, findno.Column + 1).Value '所属
ws3.Cells(k, 3).Value = ws4.Cells(findno.Row, findno.Column - 1).Value '職番
ws3.Cells(k, 4).Value = ws4.Cells(findno.Row, findno.Column + 2).Value '名前
k = k + 1
End If
Next j
ws3.Copy After:=Worksheets(Worksheets.Count) '「フォーマット3」シートをコピー
Set ws5 = ActiveSheet 'コピーしたシートを変数にセット
wsname = ws2.Cells(findtitle.Row, findtitle.Column - 2).Value & "=" & Range("A11").Text
ws5.name = wsname & "_" & Format(dating, "mm月dd日")
Application.DisplayAlerts = False
ReDim Preserve copy_sheet(flag)
copy_sheet(flag) = ws5.name
flag = flag + 1
Set findtitle = search.FindNext(After:=findtitle)
If findtitle Is Nothing Then
Exit Do
End If
If findtitle.Address = tmpfindt.Address Then
Exit Do
End If
(データ削除)
Loop
ThisWorkbook.Worksheets(copy_sheet).Copy
ActiveWorkbook.SaveAs _
filename:=ThisWorkbook.Path & "\" & wsname & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook 'MacroEnabled
ActiveWorkbook.Close
ThisWorkbook.Worksheets(copy_sheet).Delete
Application.DisplayAlerts = True
End If
Next i
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) VBAで実行時エラー'424' オブジェクトが必要ですと出る 2 2022/10/07 09:25
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELのSheet番号って変更でき...
-
VBA 空白行に転記する
-
マクロの「SaveAs」でエラーが...
-
Count Ifのセルの範囲指定に変...
-
マクロ実行後に別シートの残像...
-
VBAで変数の数/変数名を動的に...
-
Excel VBA での商品管理について
-
VBA別シートの最終行の次行へ転...
-
Changeイベントで複数セルへの...
-
Excel VBA オートフィルターで...
-
エクセル VBA 時系列に横一列に...
-
楽天RSSからエクセルVBAを使用...
-
【VBA】特定の条件でセルをコピー
-
エクセル マクロ VBA Range Val...
-
RemoveDuplicatesメソッドにつ...
-
VBA 別ブックからの転記の高速...
-
VBA 実行時エラー1004 rangeメ...
-
複数シートの複数列に入力され...
-
Excel2013で切り取り禁止
-
100万件越えCSVから条件を満た...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
EXCELのSheet番号って変更でき...
-
VBA 空白行に転記する
-
マクロ実行後に別シートの残像...
-
VBA別シートの最終行の次行へ転...
-
Count Ifのセルの範囲指定に変...
-
VBA 別ブックからの転記の高速...
-
Changeイベントで複数セルへの...
-
【VBA】特定の条件でセルをコピー
-
100万件越えCSVから条件を満た...
-
楽天RSSからエクセルVBAを使用...
-
複数シートの複数列に入力され...
-
Excel VBA オートフィルターで...
-
VBAで変数の数/変数名を動的に...
-
Unionでの他のシートの参照につ...
-
Excel2013で切り取り禁止
-
VBA 実行時エラー1004 rangeメ...
-
ExcelのVBマクロを、バックグラ...
-
VBA 最終行を選んだシートにコ...
-
アクセスからエクセルへ出力時...
おすすめ情報