ID非公開

2021/7/28 16:31

22回答

VBAをやり始めて1週間の超初心者です。

画像

Excel | Visual Basic39閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

ID非公開

質問者2021/7/28 17:54

すみません、 少し解説してもらっても大丈夫ですか?

その他の回答(1件)

0

出力先の表はあらかじめ作っておく必要はありません。 出力先のシートと表の位置は、コードの「<---」で調整して下さい。 ただし、元表と同一シートは不可です。 元表のあるシートから以下のコードを実行して下さい。 Const OutR = 1 '<---「休暇予定」が入る行No Const OutC = 2 '<--- 列No Dim WS As Worksheet Dim LastR, LastC, R, C, Temp 'Sheet2を変数に代入 Set WS = Worksheets("Sheet2") '<---出力先シート 'Sheet2を完全クリア WS.Cells.Clear '元表の最終入力行・列を取得 LastR = Cells(Rows.Count, 1).End(xlUp).Row LastC = Cells(1, Columns.Count).End(xlToLeft).Column '元表を2行目から最終行まで検索 For R = 2 To LastR     '人名を出力     WS.Cells(OutR + R - 1, OutC - 1) = Cells(R, 1)     '日にちの格納変数の初期化     Temp = ""     '元表の各行を2列目から最終列まで検索     For C = 2 To LastC         'もし「休暇」のセルが在れば         If Cells(R, C) = "休暇" Then             '格納変数に日にちを文字列として追加             Temp = Temp & Cells(1, C) & ","         End If     Next C     '格納変数の最後の「,」を取る     Temp = Left(Temp, Len(Temp) - 1)     '名前の横に休暇予定日を出力     WS.Cells(OutR + R - 1, OutC) = Temp Next R '***出力先の表の整え '「休暇予定」を出力 WS.Cells(OutR, OutC) = "休暇予定" '列幅を整える WS.UsedRange.Columns.AutoFit '表に罫線を引く WS.UsedRange.Borders.LineStyle = True