先日の別シートへ転記する質問で再質問です | |
---|---|
[194741] 先日の別シートへ転記する質問で再質問です- ■親トピック/記事引用/メール受信=ON■ □投稿者/ C3PO -(2022/02/11(16:43)) □U R L/ http://ttps://excelfactory.net/excelboard/excelvba/excel.cgi?mode=all&namber=194728&rev=0 先日2/8に個人別シートを印刷用シートに指定の期間のデータを抽出して転記し、最終行の下に合計を入れるものをお教えいただきました。(半平太様により) 半平太様がいらっしゃればうれしいですが… 表を作っている過程で新たに個人別シートのF2の数字を印刷用シートのデータのある最終行の下のEのセルに入れるようにしたいと思っています。 自分なりにコードを見て、思い通りのセルにデータが入るようになりました。 しかし問題がありまして質問に来ました。 そのEのセルというのが、表示形式で"09:00"のような時間表示にしています。 そのため、例えば1500といれてもその値に表示されません。 これを解決するためにはどうすればよいでしょうか。 一旦E8以下の書式をクリアすればよいのかなと思うのですが自分ではわかりませんでした。 ここをお教えいただけないでしょうか。 ※下の If iOut > 7 Then WsPrn.Cells(iOut + 1, "A") = "合計" WsPrn.Cells(iOut + 1, "E").Value = Worksheets(NM).Range("F2") 'ここを追加しました WsPrn.Cells(iOut + 1, "F").FormulaR1C1 = "=SUM(R8C6:R[-1]C)" End If End With の部分です。 Sub Shift() Dim WsPrn As Worksheet Dim BaseD, Dys, NM Dim i As Long, iOut As Long Set WsPrn = Worksheets("印刷用") Application.ScreenUpdating = False With WsPrn BaseD = .Range("B1:D1") NM = .Range("F5") .Range("A8").Resize(.UsedRange.Rows.Count, 6).ClearContents End With With Worksheets(NM) Dys = .Range("A4").Resize(.UsedRange.Rows.Count).Value iOut = 7 For i = 1 To UBound(Dys) If BaseD(1, 1) <= Dys(i, 1) And Dys(i, 1) <= BaseD(1, 3) Then iOut = iOut + 1 WsPrn.Cells(iOut, 1).Resize(1, 6) = .Cells(i + 3, 1).Resize(1, 6).Value End If Next i If iOut > 7 Then WsPrn.Cells(iOut + 1, "A") = "合計" WsPrn.Cells(iOut + 1, "E").Value = Worksheets(NM).Range("F2") 'ここを追加しました WsPrn.Cells(iOut + 1, "F").FormulaR1C1 = "=SUM(R8C6:R[-1]C)" End If End With Application.ScreenUpdating = True End Sub この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 ++++++++++++++++++++ OS ⇒OTHER Version⇒OTHER ++++++++++++++++++++ |
[194742] Re[1]: 先日の別シートへ転記する質問で再質問です- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2022/02/11(19:56)) □U R L/ > WsPrn.Cells(iOut + 1, "E").Value = Worksheets(NM).Range("F2") 'ここを追加しました そのセルだけの問題ですよね? セルの書式を設定すればいいんじゃないですか? ※もし、個人別シートのRange("F2")と同じ書式にするなら・・ WsPrn.Cells(iOut + 1, "E").NumberFormatLocal = Worksheets(NM).Range("F2").NumberFormatLocal を追記する。 あと、値だけ移しているコードも、 元データの書式を継承しながら貼り付けた方が方がいいかもしれないです。 >WsPrn.Cells(iOut, 1).Resize(1, 6) = .Cells(i + 3, 1).Resize(1, 6).Value (2行書きに変える例) .Cells(i + 3, 1).Resize(1, 6).Copy WsPrn.Cells(iOut, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats |
[194743] Re[2]: 先日の別シートへ転記する質問で再質問です- ■ / 記事引用/メール受信=OFF■ □投稿者/ C3PO -(2022/02/12(10:16)) □U R L/ http://ttps 半平様、ありがとうございました。 付け加えさせていただきすごく快適になりました! 値だけ移しているコードも元データの書式を継承しながら貼り付けるようにした方が、仰るように良かったです。 助けていただきありがとうございます! |
このトピックに書きこむ |
---|