重複を確認しながら転記処理

VBAでデータの転記処理をするPart2
重複を確認しながら転記処理

動画でExcelマクロ解説

VBAでデータの転記処理2

動画版「マクロ講座」です。
33回は前回に引き続き VBA でデータの転記処理をしますが、転記する前に名前を データベースで検索してから、同じ名前が既に入力されているかどうかを調べます。 重複しないようにするためです。 すでに入力されている時は入力されていることを知らせて入力されていない時にデータを 転記するようにします。 ファインドメソッドで、データベースに同じ名前があるかどうかを調べて、If then Elseステートメントで処理を分けます。
また32回のコードをすっきりと分かりやすくするために for Next ステートメントで 記述し直します。

Excel2019VBAでデータの転記処理2

動画で紹介したコード

For文を使って前回のコードをシンプルに見やすく改善しています。

Sub tenki3a()
    Set nyuuryoku = Worksheets("Inputdata").Cells(2, 3)
    Set MasterRange = Worksheets("Mdata").Cells(Rows.Count, 2). _
    End(xlUp).Offset(1, 0)
   For i = 0 To 8
        MasterRange.Offset(0, i).Value = nyuuryoku.Offset(i, 0).Value
    Next
End Sub

メインのコード:重複チェックしてからデータを転記するコード

Option Explicit
    Dim nyuuryoku As Range, MasterRange As Range, i As Integer
Sub 検索して転記()
    Dim kensaku As String, nameclm As Range, myname As Range
    kensaku = Worksheets("Inputdata").Cells(3, 3).Value
    Set nameclm = Worksheets("Mdata").Columns(3)
    Set myname = nameclm.Find(kensaku, LookAt:=xlWhole)
    Set nyuuryoku = Worksheets("Inputdata").Cells(2, 3)
    Set MasterRange = Worksheets("Mdata").Cells(Rows.Count, 2). _
    End(xlUp).Offset(1, 0)
    
    If Not myname Is Nothing Then
        MsgBox kensaku & "  が、すでに入力されていました。"
        Worksheets("Mdata").Activate
        myname.Select
     Else
        For i = 0 To 8
            MasterRange.Offset(0, i).Value = nyuuryoku.Offset(i, 0).Value
        Next
    End If
End Sub