[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『自動印刷』(こうへい)
自動印刷をしたいです。
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
回答ありがとうございます。
今一度修正してトライしてみましたが、以下の⇒部分にエラーででてしました。。。
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
>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.