[[20210113142625]] 『エクセルマクロ エクセルからエクセル差し込み印』(yama) ページの最後に飛ぶ

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

 

『エクセルマクロ エクセルからエクセル差し込み印刷』(yama)

お世話になります。
初めて質問させて頂きます。よろしくお願い申し上げます。

今回はエクセルからエクセルで宛名の差し込み印刷ができないかとネット検索をしながら、取り組んでおります。
以下、コードがネットを引用しております。
※"印刷用"と"ルート"、"A1"は自分のファイルの物です。

Dim LastRow As Long
Dim i As Long
Dim myNo As Long

If vbNo = MsgBox("印刷を開始していいですか?", vbYesNo) Then Exit Sub

With Worksheets("印刷用")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

For i = 1 To LastRow

myNo = .Range("A" & i).Value

With Worksheets("ルート")
.Range("A1").Value = myNo
.PrintOut Copies:=1, Collate:=True
End With
Next i
End With

MsgBox "印刷が終わりました"

End Sub

下記コードで止まってしまいます。
myNo = .Range("A" & i).Value

ご教示のほど、お願い申し上げます。

< 使用 Excel:Office365、使用 OS:Windows10 >


 こんにちは ^^
 LastRowの値をお調べになっては。。。m(__)m
(隠居じーさん) 2021/01/13(水) 14:46

 コード内容に素直に従えば、印刷用の
 A1〜 適当、に番号を入力して実行で
 印刷用ではなくルートが印刷されてますが
 宜しいので。。。
(隠居じーさん) 2021/01/13(水) 14:57

 見やすく整理させて戴きました。m(__)m
Option Explicit
Sub cLumnaPrintOut()
    Dim LastRow As Long
    Dim i As Long
    Dim myNo As Long
    If vbNo = MsgBox("印刷を開始していいですか?", vbYesNo) Then Exit Sub
    With Worksheets("印刷用")
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        For i = 1 To LastRow
            myNo = .Range("A" & i).Value
            With Worksheets("ルート")
                .Range("A1").Value = myNo
                .PrintPreview
                '.PrintOut Copies:=1, Collate:=True
            End With
        Next i
    End With
    MsgBox "印刷が終わりました"
End Sub
これからしばらくお出かけモードですので。他の方の
回答をお待ちくださいませ。←ほんの少しお手伝いのみで済みません
m(__)m
(隠居じーさん) 2021/01/13(水) 15:01

>下記コードで止まってしまいます。
その時の、エラー番号とエラーメッセージはなんと出ていますか?
また、エラー発生時の「i」の中身、印刷用シートのそのセルの値は何になっているのでしょうか?

数値じゃないものが入っていて型が一致しないというエラーになっているとかでしょうか?

(もこな2) 2021/01/13(水) 15:11


もこな2様

お世話になります。
質問の回答があっているかわかりませんがいかがでしょうか?

エラー番号 実行時エラー "13"

0myNo=0  i=1

(yama) 2021/01/13(水) 15:58


実行時エラー13なら、既に指摘しているように「型が一致しません。」ですよね。
 Dim myNo As Long
 Worksheets("印刷用").Range("A1").Value

となっているから、印刷用シートのA1セルに何が入っているか確認してみましょう。
エクセル君が数値として解釈できないものが入っているのではありませんか?
http://officetanaka.net/excel/vba/error/execution_error/error_13.htm

ちなみに、そもそも論で変数を経由しなくても良いと思います。

    Sub cLumnaPrintOut()
        Dim i As Long
        Dim 印刷用SH As Worksheet: Set 印刷用SH = Worksheets("印刷用")

        If MsgBox("印刷を開始していいですか?", vbYesNo) = vbNo Then Exit Sub

        For i = 1 To 印刷用SH.Cells(印刷用SH.Rows.Count, "A").End(xlUp).Row
            With Worksheets("ルート")
                .Range("A1").Value = 印刷用SH.Range("A" & i).Value
                .PrintPreview
            End With
        Next i

        MsgBox "印刷が終わりました"
    End Sub

(もこな2) 2021/01/13(水) 16:46


A1には文字列が入っておりました。
今、修正したところ、エラーがなくなりました。

今回は大変助かりました。
まだまだ、知識不足ですので、もっと勉強して行こうと思います。
本当にありがとうございました。

(yama) 2021/01/13(水) 16:54


隠居じーさん様

今回は早々の回答ありがとうございました。

ルートのシートを印刷するで良いのです。
印刷用と書いてあればそう思ってしまいますよね。申し訳ありませんでした、
わかりにくくすみませんでした。
今後ともよろしくお願いいたします。
(yama) 2021/01/13(水) 16:56


コメント返信:

[ 一覧(最新更新順) ]


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