[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『印刷』(はなちゃん)
データ一覧(シート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.