【EXCELマクロ】でこういう事は出来ますか? 詳しい方教えてくださいm(__)m

〔現在〕 データシートと印刷用シートがあります。
     印刷用シートのA1に入力した番号を検索値としてデータシートA列にある“NO”からVLOOKUP関数で
     値が返るような構成になっています。
     印刷用シートのA1に印刷したい番号を入れて印刷、番号を入れて印刷という事を繰り返しています。
     (100件以上ある)
〔やりたい事〕 データシートのB列に“印刷したいデータ”という項目を増やして、そこに例えば“1”と入力した
         データのみ印刷用シートのA1に“NO”を入れて印刷を実行する。

回答の条件
  • 1人2回まで
  • 登録:2007/11/07 19:13:20
  • 終了:2007/11/10 18:58:14

回答(2件)

id:airplant No.1

airplant回答回数220ベストアンサー獲得回数492007/11/08 02:39:26

ポイント50pt

フラグがついた番号をデータシートから持ってきて、印刷用シートへ入れて印刷すればいいと解釈しました。

下のような感じでどうでしょう? なお、フラグは"1"だけでなく何でもOKにしてあります。

Option Explicit

Const sDataSheet As String = "データ"
Const sPrintSheet As String = "印刷用"
Const First As Integer = 2  'フラグの開始行

Sub PrintAutomatic()

    Dim vNo() As Variant
    Dim Last As Integer, I As Integer, N As Integer
    Dim rCur As Range
    
    Sheets(sDataSheet).Select
    Last = Range("B65536").End(xlUp).Row
    
    '配列に実行する分のNoを入れる
    N = 0
    For I = First To Last
        If Cells(I, 2) <> "" Then
            N = N + 1
            ReDim Preserve vNo(N)
            vNo(N) = Cells(I, 1)
        End If
    Next
    
    '印刷する
    Sheets(sPrintSheet).Select
    For I = 1 To N
        Range("A1") = vNo(I)
        ActiveWindow.SelectedSheets.PrintOut
'お試し用        ActiveWindow.SelectedSheets.PrintPreview
    Next
    
End Sub
id:mokachan

早速ありがとうございました。

今帰宅したばかりで脳みそが拒否しちゃいそうなので、

後ほどじっくり読ませて頂きます。

2007/11/08 18:48:28
id:ardarim No.2

ardarim回答回数892ベストアンサー獲得回数1422007/11/08 02:49:52

ポイント60pt

サンプルです。

おおむねあっていると思いますが、質問で意図されている内容が完全には理解できなかったので、必要に応じて手直ししてください。

Option Explicit
Option Base 0

Sub test()

    Dim PrintSheet As Worksheet
    Dim DataSheet As Worksheet
    Dim r As Long

    Set PrintSheet = Worksheets("印刷用シート")
    Set DataSheet = Worksheets("データシート")
    
    ' B1には"印刷したいデータ"という文字が入っていると仮定し、
    ' B2から始める
    r = 2
    
    ' A列にデータがなくなるまでループ
    Do While DataSheet.Cells(r, 1).Value <> ""
        If DataSheet.Cells(r, 2).Value = 1 Then
            ' データシートのA列から印刷用シートのA1に転記する
            PrintSheet.Cells(1, 1).Value = DataSheet.Cells(r, 1).Value
            
            ' 印刷用シートの再計算
            PrintSheet.Calculate
            
            ' 印刷
            PrintSheet.PrintOut
        End If
        r = r + 1
    Loop

End Sub
id:mokachan

ありがとうございます。

後ほどゆっくり読ませていただきます。

文章だけで伝えるって難しいですね。。

国語からべんきょしなきゃいけないかしら^_^;

2007/11/08 18:51:26

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません