プロが教えるわが家の防犯対策術!

対象となる部門名を変えながら、”Find”と”データ整理に値を転記”という2つのマクロを実行し、
出た「結果」(※)を別のファイルに記録するマクロを作りたいと考えています。

1つ目の部門の時には、新規ブックを作成して値を転記、
2つ目以降の部門の時には、既に開かれている上記ブックの右隣の列に値を転記していきたいです。
最後の部署まで転記したら、新規ブックは開きっぱなしの状態で大丈夫です。

(※)別ファイルに転記したい「結果」は、”集計表”というシートのD8:D29と、D34:D49に、毎回上書き表示されることになっています。転記する際に、どのデータか分かるように部署名をD9とD33に記載したいです。また、BCの結合列に記載されている項目名も、Dの転記の際に併せて転記したいです。

アドバイスいただけますと、幸いです。
宜しくお願いいたします。

-----
Sub 部門別集計()
Dim i As Integer
For i = 4 To 18    'user_listのシートのD4~R4を順に参照
Sheet("program").Cells(13, 6).Value = Sheet("user_list").Cells(4, i).Value
Call Find
Call データ整理に値を転記

??? ←ここについて、教えていただきたいです。

Next
End Sub

A 回答 (2件)

■ブックの新規作成する/しない


メッセージボックスのY/Nで、返り値に応じて新規ブックを作る/作らないを決められるようにすればよいと思います。
例えば、以下のように。
Res = MsgBox("2つ目以降の部門→Y、1つ目の部門→N", vbYesNo)

■2つ目以降の部門の時には、~ 右隣の列に値を転記していきたいです。
最右列の列を取得すればよいです。
最右列の列は以下の構文で取得できます。rwにはデータがある行を指定します。固定されているなら数値でよいです。
myColumn = Cells(rw, Columns.Count).End(xlToLeft).Column

■開きっぱなしにしたい件
意図的に閉じたり、閉じるコードを書かなければ開きっぱなしになります。

■データ転記
質問文のコード4行目の、Sheet("program").Cells(13, 6~ のような構文を必要なだけ書いていけばよいです。
範囲になっているなら、Sheet("program").range(cells(aa,bb),cells(cc,dd))~ のようににすればよいです。
    • good
    • 0
この回答へのお礼

一つずつ、丁寧に答えてくださりありがとうございます。
内容活用させていただきます!

お礼日時:2021/06/21 08:56

こんな書き方になると思います。


転記内容は、面倒だったので参考程度に、ブック名とシート名を転記してみました。

Dim wb As Workbook
Dim ws As Worksheet
Dim i As Long
' ・
' ・
' ・
For i = 1 To 3
If wb Is Nothing Then
Set wb = Workbooks.Add
Set ws = wb.Worksheets(1)
Else
Set ws = wb.Worksheets.Add(after:=wb.Worksheets(wb.Worksheets.Count))
End If
ws.Range("A1").Value = wb.Name
ws.Range("A2").Value = ws.Name
Next
    • good
    • 0
この回答へのお礼

早速教えてくださり、ありがとうございました。
内容参考にさせていただきます!

お礼日時:2021/06/21 08:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!