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