|
"題名"と言うからには、その範囲の先頭のセルに入力されている
のでしょうね ? ということは、人名は X23 から入力されている
わけですね ? ならば・・
Sheets("Sheet1").Range("X23:X65536").SpecialCells(2) _
.Copy Sheets("Sheet2").Range("E23")
というコードで出来ます。
>空欄に人名が後から入力されてもコピー先に反映
つまりE列の最終入力行の下に、新しい人名を追加していく、
(既に転記済みなら中止)ということがしたいのなら、
Sheet1 のシートモジュールに、以下のイベントマクロを入れて下さい。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Mnm As String
If Intersect(Target, Range("Z23:Z65536")) Is _
Nothing Then Exit Sub
With Target
If .Count > 1 Then GoTo ELine
If IsEmpty(.Value) Then Exit Sub
If IsNumeric(.Value) Then GoTo ELine
Mnm = .Value
End With
With Worksheets("Sheet2")
If Not IsError(Application.Match(Mnm, .Range("E:E"), 0)) Then
MsgBox "その名前は入力済みです", 48: GoTo ELine
End If
.Range("E65536").End(xlUp).Offset(1).Value = Mnm
End With
MsgBox Mnm & vbLf & "を転記しました", 64: Exit Sub
ELine:
Application.EnableEvents = False
Target.ClearContents
Application.EnableEvents = True
End Sub
|
|