前提・実現したいこと
sheet2からsheet1へ転記する際、sheet2の名前をsheet2のセルC1(製番)へ変更する。
その後、sheet2(セルC1名)内の転記項目(C1〜C4)を変更した場合もsheet1へ反映される。
狙い:sheet2を入力フォーマットとして、シートコピーをしてセルC1(製番)毎にシートを増やしていく管理をしたいと考えています。
!ジ説明](42a21a325925899341056140f35cc064.jpeg)説明](1ebba338c590e324c38982e904757735.jpeg)](82ca2f8f34f8289353c9510282a0c8f4.jpeg)
該当のソースコード
Sub 検索転記△2() Dim number As Range '入力値 Dim number2 As Range '入力値2 Dim number3 As Range '入力値3 Dim result As Range '検索結果 Dim lastline As Long '最終行 Dim ws1 As Worksheet Dim ws2 As Worksheet Set ws1 = Worksheets("sheet1") Set ws2 = ActiveSheet '追加項目 Set number = ws2.Range("C2") Set number2 = ws2.Range("C3") Set number3 = ws2.Range("C4") ws2.Name = ws2.Range("C1") '追加項目 lastline = ws1.Cells(Rows.Count, "B").End(xlUp).Row 'シート1 B列のセル入力済最終行を定義 Set result = ws1.Range(ws1.Cells(4, 2), ws1.Cells(lastline, 2)).Find(number, lookat:=xlWhole) 'No列の開始行から最終行の範囲で検索する If result Is Nothing Then 'Rangeが「Nothing」である場合 n = Cells(Rows.Count, "B").End(xlUp).Row + 1 o = Cells(Rows.Count, "C").End(xlUp).Row + 1 ws1.Range("B" & n).Value = number.Value 'ハイパーリンク ws1.Hyperlinks.Add _ Anchor:=ws1.Range("B" & n), _ Address:="", _ SubAddress:=ws2.Name & "!A1", _ TextToDisplay:="number" ws1.Range("C" & o).Value = number2.Value ws1.Range("D" & o).Value = number3.Value ElseIf Not result Is Nothing Then 'Findの結果で取得されたRangeから行数を取得し、その行に書き込む ws1.Cells(result.Row, 2).Value = number.Value 'ハイパーリンク ws1.Hyperlinks.Add _ Anchor:=ws1.Cells(result.Row, 2), _ Address:="", _ SubAddress:=ws2.Name & "!A1", _ TextToDisplay:="number" ws1.Cells(result.Row, 3).Value = number2.Value ws1.Cells(result.Row, 4).Value = number3.Value End If End Sub
試したこと
sheet2をアクティブシート選択して、名前を変更しましたが、シート名変更後にはエラーにより、
転記が反映されなくなってしまった。
set ws2 = activesheets
ws2.name = ws2.range("C1")
回答2件
あなたの回答
tips
プレビュー