|
アドバイス頂いた方法とは少し違うかもしれませんが、色々なサイト情報を参考に、一旦はなんとか目的の動作をするマクロが作れました。
これまで、VBAは既存のコードの部分修正程度しかしたことがありませんでしたが、こちらのサイトをはじめ、様々な情報がとても参考になりました。
お作法もなっていないめちゃくちゃな記述かもしれませんが、ひとまずこれで使ってみようと思います。
また何か困ったことがあれば、相談させてください。
この度は、ありがとうございました。
----------
Sub 明細シート作成()
wsList.Select
Range("A4:A200").Select
Selection.Copy
wsClient.Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues
wsList.Select
Range("C4:C200").Select
Selection.Copy
wsClient.Select
Range("B1").Select
Selection.PasteSpecial Paste:=xlPasteValues
wsList.Select
Range("S4:S200").Select
Selection.Copy
wsClient.Select
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveSheet.Range("$A$1:$C$197").RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlNo
wsList.Select
Range("A1").Select
Dim rowsList As Long, rowsClient As Long
rowsList = wsList.Cells(Rows.Count, 1).End(xlUp).Row
rowsClient = wsClient.Cells(Rows.Count, 1).End(xlUp).Row
Dim n As Long
For n = 1 To rowsClient
Dim txt As String, no As String, name As String, i As Long, k As Long
txt = wsClient.Cells(n, 1).Value
no = wsClient.Cells(n, 2).Value
name = wsClient.Cells(n, 3).Value
k = 25
wsForm.Copy After:=wsForm
ActiveSheet.name = txt
ActiveSheet.Range("B34").Value = txt
ActiveSheet.Range("B5").Value = no
ActiveSheet.Range("A3").Value = name
For i = 4 To rowsList
If wsList.Cells(i, 1).Value = txt Then
wsList.Cells(i, 6).Copy ActiveSheet.Cells(k, 1)
wsList.Cells(i, 8).Copy ActiveSheet.Cells(k, 8)
k = k + 1
End If
Next i
Next n
End Sub
----------
|
|