私はすべての生徒をリストするExcelのマークブックを持っており、VBAを使用して、列Aの各セルを自動的に命名し、各子供のためのパターンとして、テンプレートシートを使用しています。それぞれの新しいExcelワークシートが異なる行のデータにリンクされている
Sub AutoAddSheet()
Dim MyCell As Range, MyRange As Range
Set MyRange = Sheets("DATA ENTRY").Range("A4")
Set MyRange = Range(MyRange, MyRange.End(xlDown))
Application.ScreenUpdating = False
For Each MyCell In MyRange
Sheets("Template").Copy After:=Sheets(Sheets.Count)
With Sheets(Sheets.Count)
.Name = MyCell.Value
.Cells(2, 1) = MyCell.Value
End With
MyCell.Hyperlinks.Add Anchor:=MyCell, Address:="", SubAddress:="'" & MyCell.Value & "'!A1"
Next MyCell
Application.ScreenUpdating = True
End Sub
私はちょうどテンプレートシート上のことを入れて、それが働いていた、また、元のデータシートへのハイパーリンクを持っているそれぞれの新しいワークシートを許可するようにコーディングする方法を知りませんでした。
私が本当にやりたいことは、DATA ENTRYシートから特定のデータを抽出し、関連するワークシート上にそれらのデータを持たせることです。たとえば、子1の名前はB4にありますが、子1のワークシートのC2にあり、ターゲットの等級はDATA ENTRYのE4にありますが、個人のシートのE5にあります。子2の名前はB5にあり、目標の等級はE5ですが、子2のワークシートではC2とE5です。子3 = B6など。
私は、非常に大きなオリジナルシートから、各子供に関連する別々のワークシート上に配置する必要がある10個の別個の情報を持っています。これを行う方法はありますか、手動でデータ入力のB4セルに戻って、子1ワークシートのC2セルを手動でリンクする必要がありますか?私は約200のワークシートを持っているので、私は元を望んでいる!
私は今、次のコードを持っていますが、それだけではなく、ループと私のために、他のすべてのシートに記入するよりも、最初のシートに記入:
Private Sub Setup_Sheets()
Dim Data_Entry As Worksheet 'You don't need variables. You can use Sheet1 and Sheet2 directly.
Set Data_Entry = Sheet1
Dim child1_sheet As Worksheet
Set child1_sheet = Sheet44 'Repeat for each child(sheet number is unqiue to your workbook)
Dim NameRange As Range
Set NameRange = Data_Entry.Range("B4")
child1_sheet.Range("C2").Value = NameRange.Value
Set NameRange = Data_Entry.Range("C4")
child1_sheet.Range("C3").Value = NameRange.Value
Set NameRange = Data_Entry.Range("D4")
child1_sheet.Range("C4").Value = NameRange.Value
Set NameRange = Data_Entry.Range("E4")
child1_sheet.Range("E5").Value = NameRange.Value
Set NameRange = Data_Entry.Range("G4")
child1_sheet.Range("G5").Value = NameRange.Value
Set NameRange = Data_Entry.Range("S4")
child1_sheet.Range("C9").Value = NameRange.Value
Set NameRange = Data_Entry.Range("AE4")
child1_sheet.Range("C10").Value = NameRange.Value
Set NameRange = Data_Entry.Range("AQ4")
child1_sheet.Range("C11").Value = NameRange.Value
Set NameRange = Data_Entry.Range("BC4")
child1_sheet.Range("C12").Value = NameRange.Value
Set NameRange = Data_Entry.Range("BE4")
child1_sheet.Range("F5").Value = NameRange.Value
End Sub
私も次のことを試してみましたが、これは一つ一つを満たします最初の子供のデータとシート。誰かが私が間違っていることを知っていますか?
Private Sub Setup_with_loop()
Dim child_cnt As Integer
child_cnt = ThisWorkbook.Worksheets.Count
For i = 2 To child_cnt 'Assuming the first sheet is the data entry sheet
ThisWorkbook.Worksheets(i).Range("C2").Value = Sheet1.Range("B4").Value
ThisWorkbook.Worksheets(i).Range("C3").Value = Sheet1.Range("D4").Value
ThisWorkbook.Worksheets(i).Range("C4").Value = Sheet1.Range("F4").Value
ThisWorkbook.Worksheets(i).Range("E5").Value = Sheet1.Range("G4").Value
ThisWorkbook.Worksheets(i).Range("G5").Value = Sheet1.Range("I4").Value
ThisWorkbook.Worksheets(i).Range("C9").Value = Sheet1.Range("U4").Value
ThisWorkbook.Worksheets(i).Range("C10").Value = Sheet1.Range("AG4").Value
ThisWorkbook.Worksheets(i).Range("C11").Value = Sheet1.Range("AS4").Value
ThisWorkbook.Worksheets(i).Range("C12").Value = Sheet1.Range("BE4").Value
ThisWorkbook.Worksheets(i).Range("F5").Value = Sheet1.Range("BG4").Value
Next
End Sub
の代わりに手動でリンクする、あなたには、いくつかを作成することができますすべての子供の名前であなたの列を通過するループは、各シートに移動し、正しいセルにデータを配置します。各子供の名前を記したワークシートですか? – dwirony
シートを毎年のテンプレートにしたいので、A列に数字を入れ、それらを新しいワークシートにリンクするので、それらはすべて子ではなく数値で名前が付けられます(タブのスペースも節約できます! )。私はループを作ることができたら、私はそれを必要としないだろうと思う。なぜなら、私は新しい子供を入れるたびにそれをやり直すからだ。私はループを研究しなければならないだろう。通常の標準! – Aldanti