[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『印刷』(はなちゃん)
データ一覧(シート6)からシート7に2つの同じフォームがあって、そこにデータ一覧から順番に印刷をしたいのですが印刷するマクロの方法をご教授いただけないでしょうか。
ワードでの印刷でなくエクセルで行いたいです。
2つのフォームは、「vlookup」で表示しております。検索値は1つ目「A1」、2つ目「H1」にA1+1で表示
データは増えたり減ったりします。データの表は40行 10列
データ 10 a,b,c,d,e,f,g,h,i,j
< 使用 Excel:Excel2007、使用 OS:Windows7 >
>検索値は1つ目「A1」、2つ目「H1」にA1+1で表示 ってことは、データは連番? 昇順もしくは、A1とH1のデータはデータ一覧に規則正しく(例えば2行ワンセット)並んでいますか?
データはA列から入力されていますか? (稲葉) 2015/03/03(火) 14:47
おそくなりました。 ご提示いただいた条件を基に、テストしております。 Sub 印刷テスト() Dim d Dim i As Long d = Filter([TRANSPOSE(IF(シート6!A1:A30<>"",シート6!A1:A30,CHAR(2)))], Chr(2), False) With Sheets("シート7") For i = 1 To UBound(d) Step 2 .Range("A1").Value = d(i) .PrintPreview '.PrintOut copies:=1 Next i End With End Sub
PrintPreviewで確認したのち、PrintOutのコメントアウトを外して、PrintPreviewは削除してください。 (稲葉) 2015/03/03(火) 18:40
(はなちゃん) 2015/03/06(金) 09:08
用紙がどう大変なのか大変興味ありますが、
シート6のデータを無視して、(1から30までの「数字」とのことですので) Noを直接入力するのはいかがですか? Sub 印刷テスト() Dim p Dim i As Long Dim msg As String msg = "印刷したいページ番号をカンマ(,)区切り、及び連続する場合ハイフン(-)でつなげて入力してください" & vbNewLine & _ "例:1,5-9,13 ・・・1,5,7,9,13のデータを印刷します" With Sheets("シート7") For Each p In GetPage(InputBox(msg, "印刷No入力", "1,3-5")) If p = 0 Then Exit Sub If p Mod 2 = 1 Then .Range("A1").Value = p .PrintPreview '.PrintOut copies:=1 End If Next p End With End Sub Function GetPage(ByVal s0 As String) As Variant Dim AL As Object Dim p As Variant Dim i As Integer Set AL = CreateObject("System.Collections.ArrayList") With CreateObject("VBScript.RegExp") .Pattern = "^\d*-\d*$" For Each p In Split(s0, ",") If p <> "" Then If IsNumeric(p) Then AL.Add CInt(p) ElseIf .Test(p) Then For i = Split(p, "-")(0) To Split(p, "-")(1) AL.Add i Next i Else MsgBox p & "は頁番号に変換できません。規則に従って入力し直してください" GetPage = Array(0, 0) Exit Function End If End If Next p End With AL.Sort Set GetPage = AL.Clone End Function
(稲葉) 2015/03/06(金) 09:29
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.