印刷範囲の設定について | |
---|---|
[195320] 印刷範囲の設定について- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ NGZ46 -(2022/10/19(23:52)) □U R L/ 出勤簿を作成するツールです。 CSVデータを選び、ExcelのCSVシートに貼り付けそこから出勤簿を印刷。 印刷後にCSV選択に戻るというロジックを組みました。 @「wsS.ResetAllPageBreaks」がうまく作動しません。 データの少ないCSVデータを選んだあとデータの多いCSVデータを選ぶと少ないデータの印刷範囲のままになってしまいます。 ADo〜Loopが作動しません 印刷が完了後にCSV選択に戻りたいのですがうまくいきません @Aをどうにも解消できません。ご意見アドバイスをいただければと思います。 なお、該当ファイルはURLにございます。(ここへ書こうと思いましたが長くなりますので) firestorage.jp/download/e2b823f61a3d4f3a54540f76be0cff0ddccb4818 ↓以下コード Sub ボタン2_Click() '出勤簿を選択 MsgBox "出勤簿を選択してください" Dim nhD As String Dim wbN As Workbook Dim wsN As Worksheet Dim wsS As Worksheet Do nhD = Application.GetOpenFilename(FileFilter:="CSVファイル,*.csv") If nhD <> "False" Then Application.ScreenUpdating = False Workbooks.Open nhD Set wbN = ActiveWorkbook Set wsN = ThisWorkbook.Worksheets("CSV") Set wsS = ThisWorkbook.Worksheets("出勤簿") 'ACSVシートをすべて削除 If wsN.FilterMode Then wsN.ShowAllData End If Dim maxRow1 As Long maxRow1 = wsN.Cells(Rows.Count, 1).End(xlUp).Row wsN.Range("A1:CZ" & maxRow1).Value = "" 'BCSVシートに貼り付け Dim maxRow2 As Long maxRow2 = wbN.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row wsN.Range("A1:CZ" & maxRow2).Value = wbN.Worksheets(1).Range("A1:CZ" & maxRow2).Value wbN.Close Sheets("CSV").Select 'C勤務日を昇順でソート Range("A1:CA" & maxRow2).Sort _ Key1:=Range("A1"), Order1:=xlAscending, _ Header:=xlYes Sheets("出勤簿").Select Application.ScreenUpdating = True Else MsgBox "キャンセルされました" End If 'D印刷範囲の設定 With ActiveSheet With .PageSetup .PrintTitleRows = "$1:$4" .PrintArea = Range("B1", Cells(Rows.Count, "B").End(xlUp)).Resize(, 3).Address .Orientation = xlPortrait '縦長 End With wsS.ResetAllPageBreaks StartRow = 5 FinalRow = Cells(Rows.Count, 1).End(xlUp) LastVal = Cells(StartRow, 1).Value For i = StartRow To FinalRow ThisVal = Cells(i, 1).Value If Not ThisVal = LastVal Then ActiveSheet.HPageBreaks.Add before:=Cells(i, 1) End If LastVal = ThisVal Next i End With Range("A:A").AutoFilter field:=1, Criteria1:="<>" If Cells(Rows.Count, "A").End(xlUp).Row > 1 Then End If 'E印刷 msg = MsgBox("印刷しますか?", Buttons:=vbYesNo) If msg = vbYes Then wsS.PrintOut Else End If MsgBox ("引き続き印刷しますか?"), vbYesNo + vbQuestion If vbNo Then Exit Do Loop End Sub この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 ++++++++++++++++++++ OS ⇒OTHER Version⇒OTHER ++++++++++++++++++++ |
[195321] Re[1]: 印刷範囲の設定について- ■記事引用/メール受信=OFF■ □投稿者/ マナ -(2022/10/20(05:38)) □U R L/ >「wsS.ResetAllPageBreaks」がうまく作動しません。 >FinalRow = Cells(Rows.Count, 1).End(xlUp) FinalRow = Cells(Rows.Count, 1).End(xlUp).Row ~~~~~ では? >Do〜Loopが作動しません >msg = MsgBox("印刷しますか?", Buttons:=vbYesNo) >If msg = vbYes Then ↑と↓で、なぜ違う書き方なのでしょうか。 >MsgBox ("引き続き印刷しますか?"), vbYesNo + vbQuestion >If vbNo Then Exit Do この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[195322] Re[2]: 印刷範囲の設定について- ■ / 記事引用/メール受信=OFF■ □投稿者/ NGZ46 -(2022/10/20(08:01)) □U R L/ ご対応ありがとうございます。 FinalRow = Cells(Rows.Count, 1).End(xlUp).Row です。 すいません。 特に意味はありません。 色々調べてコピペで作ったもので 型はそろえた方が良いですよね? msg2 = MsgBox("引き続き印刷しますか?", Buttons:=vbYesNo)でしょうか? |
[195323] Re[3]: 印刷範囲の設定について- ■記事引用/メール受信=OFF■ □投稿者/ マルチ -(2022/10/21(02:46)) □U R L/ 投稿者 : MTNR 投稿日時 : 2022/10/19(Wed) 23:56:39 ht tps://www.239-programing.com/cgi-bin/excelvba_bbs.cgi?id=1062 |
このトピックに書きこむ |
---|