[[20190322115433]] 『自動印刷』(こうへい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『自動印刷』(こうへい)

自動印刷をしたいです。

active worksheetのP5列〜最下段に印刷と記載がある部分を抽出し、当てはまる隣の列(O5列〜最下段)の数字と取ってWorksheet("カンバン")のページ印刷したいです。

以下のようにやってみましたが上手く作動しなかったです。

Dim sta As Variant
Dim a As Variant
Dim b As Variant
Dim page As Integer
Dim org As Variant
Dim Sht() As String

sta = Worksheets("カンバン")

b = "印刷"

For Each a In Range(Range("P5"), Range("P" & Rows.Count).End(xlUp))
Set org = a.Find(b.Offset(0, -1), , , xlWhole)
If Not org Is Nothing Then
page = page + 1

ReDim Preserve Sht(page)

Sht = a

End If
Next

sta.PrintOut Sht

End Sub

< 使用 Excel:Excel2010、使用 OS:Windows7 >


回答ではないですし、外していたらごめんなさいですけど、インデントつけてみるとこんな感じですよね?
    Sub 名前はまだ無い()
        Dim sta As Worksheet '←Worksheets("カンバン")を格納する
        Dim a As Range       ' ←セルを格納する
        Dim b As Variant     '←★文字列を格納する?
        Dim page As Integer
        Dim org As Range     '←セルを格納する
        Dim Sht() As String  '←動的配列?

        Set sta = Worksheets("カンバン") '←オブジェクト型は【Set】が必要

        b = "印刷" '←★ 「印刷」という文字列を代入?

        For Each a In Range(Range("P5"), Range("P" & Rows.Count).End(xlUp))

            '※1
            Set org = a.Find(b.Offset(0, -1), , , xlWhole)

            If Not org Is Nothing Then
                page = page + 1
                ReDim Preserve Sht(page)
                Sht = a
            End If
        Next
        sta.PrintOut Sht

    End Sub

※1の部分ですけど
(1)
変数「b」は、実質的にはString型だとおもわれますから、b.Offset(0, -1) だとエラーでちゃいませんか?

(2)
変数「a」は、For Each a In Range〜 ですから、【単一セル】が格納されますよね?
そうなると、単一セルに対してLookAt:= xlWholeですから、それは、Findメソッドで検索せずとも、If a.value = [検索値] Then でも良さそうに思います。

単にそういう書き方もありなのかもしれませんけど、2点気になりました。

>以下のようにやってみましたが上手く作動しなかったです
具体的に何がどのようにうまくいかなかったのか(エラーが出たならどの部分で何というエラーがでたのか)も説明されると多数のアドバイスが得られそうに思います。

私のレベルではこのくらいしか回答できませんが、気になったところだけ。

(もこな2) 2019/03/22(金) 12:50


もこな2さん

回答ありがとうございます。
今一度修正してトライしてみましたが、以下の⇒部分にエラーででてしました。。。

Sub pege印刷()

Dim sta As Variant
Dim a As Variant
Dim b As String
Dim page As Integer
Dim Sht() As String

Set sta = Worksheets("カンバン")

b = "印刷"

For Each a In Range(Range("P5"), Range("P" & Rows.Count).End(xlUp))
If a.Value = b Then
page = a.Offset(0, -1)
page = page + 1

ReDim Preserve Sht(page)

Sht() = a      ⇒エラー:型が一致しません

End If
Next

sta.PrintOut Sht()

End Sub

(こうへい) 2019/03/22(金) 16:02


以下の4行が、何をさせようとしているか説明できますか。
 >page = page + 1 
 >ReDim Preserve Sht(page) 
 >Sht() = a
 >sta.PrintOut Sht() 

 Sub pege印刷2()
    Dim ws As Worksheet
    Dim c As Range
    Dim pg As Integer

    Set ws = Worksheets("カンバン")

    For Each c In Range("P5", Range("P" & Rows.Count).End(xlUp))
        If c.Value = "印刷" Then
            pg = c.Offset(0, -1).Value
            ws.PrintOut pg, pg
        End If
    Next

 End Sub

(マナ) 2019/03/22(金) 22:27


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.