[[20211229002601]] 『差し込み印刷のVBA 空白を飛ばす』(わん) ページの最後に飛ぶ

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

 

『差し込み印刷のVBA 空白を飛ばす』(わん)

お世話になります。
ご教授お願い致します。

ユーザーフォームを使った差し込み印刷を行うにあたって、
以下のコードにしたところ、印刷しなくもよい(空白セル)までもが印刷されてしまいました。

Private Sub CommandButton1_Click()

Dim 番号 As Integer

a = TextBox1.Value
n = TextBox2.Value

For 番号 = a To n

 Sheets("Sheet 1").Range("A1").Value = 番号
 Sheets("Sheet 1").PrintOut

 Next 番号

 Unload Me

End Sub

空白セルを飛ばしたのですが、どのようにすればいいでしょうか。

番号  名前
 A   B

Bが空白だった場合印刷せずに、次の番号へすすむといった設定にしたいです。
よろしくお願いいたします。

< 使用 Excel:unknown、使用 OS:unknown >


詰まってる部分がよくわかりません。
シート名が合ってるかわかりませんが、少なくとも↓をやったらVlookUPか何かで情報をよびだしてるんですよね?たぶん。
 Sheets("Sheet 1").Range("A1").Value = 番号

それなら、その呼び出したセル(B列なんですかね?)が""じゃなかったら↓をするという命令にしたらどうですか?

 Sheets("Sheet 1").PrintOut

(もこな2 ) 2021/12/29(水) 01:41


 >Bが空白だった場合印刷せずに、次の番号へすすむ
 Bが空白でない場合のみ印刷

 For 番号 = a To n
    Sheets("Sheet 1").Range("A1").Value = 番号
    If Range(Bのアドレス).Value <> "" Then
        Sheets("Sheet 1").PrintOut
    End If
 Next 番号
 Unload Me

[[20211227110600]] 

 ほぼ同じコードだけと学校の課題?

(ピンク) 2021/12/29(水) 10:06


ご回答ありがとうございます。
学校の課題ではありません。

ピンクさんのコードで実行してみましたが、うまくいきませんでした。

Sheet 1にテンプレートをおいて、Sheet 2に表を作っています。

Sheet 1には、Sheet 2からVook Upで呼び出して差し込み印刷を実行してます。

Sheet 2のBに名前を入れているのですが、その名前が入っていない場合は、次の番号へ飛ばしてくださいと指示を出したいのですが、できません。
どうすればよいでしょうか。
勉強不足ですみませんが、お力添えくださいませ。
よろしくお願いいたします。
(わん) 2021/12/29(水) 22:55


>Sheet 1には、Sheet 2からVook Upで呼び出して
具体的に【どのセル】に呼び出しているのですか?

>ピンクさんのコードで実行してみましたが、うまくいきませんでした。
どのようにうまくいかなかったのですか?
ぱっと見問題ないとおもいますが・・・(対象シートを明示したほうがよいとはおもいますが)

(もこな2) 2021/12/29(水) 23:16


 >ピンクさんのコードで実行してみましたが、うまくいきませんでした。								
 問題ないと思います。								

 あるとしたら、(わん)さんのコードをコピーしてるので								
 Sheets("Sheet 1").Range("A1").Value = 番号 ←この部分								

 ("Sheet 1")にて、Sheet と 1 の間に半角スペースが原因で								
 エラーがでるくらいでありましょうか?								

 念の為、掲示します。								
 と、 " PrintOut " 実際のコードではなくテスト用を								
 最初はすると良いと思いますです。								

 Private Sub CommandButton1_Click()								
    Dim 番号 As Integer								
    Dim a As Long, n As Long								
    a = TextBox1.Value								
    n = TextBox2.Value								
    For 番号 = a To n								
            Sheets("Sheet1").Range("A1").Value = 番号								
            If Sheets("Sheet1").Range("B1").Value <> "" Then								
                    Sheets("Sheet1").Range("A1").Value = 番号								
                   'Sheets("Sheet1").PrintOut  '' 実際のコード								
                    MsgBox 番号                        '' ダミーテスト用								
            End If								
    Next								
    Unload Me								
 End Sub								

 と後は、上手くいかないのは、VLOOKUPの式が原因で								
 B1=VLOOKUP(A1,Sheet2!A1:B5,2,FALSE)								

 上記のようなままだと、Sheet2のB列が空白だと 0が返りませんか?								
 すると上手く行かないと思います。								

 一度B1の式を掲示されると良いと思います。								
 例えばSheet2が下記のような感じで空白が4行目を印刷を飛ばしたいのなら								

    |[A]|[B]     								
 [1]|  1|織田信長								
 [2]|  2|豊臣秀吉								
 [3]|  3|徳川家康								
 [4]|  4|        								
 [5]|  5|伊達政宗								

 Sheet1のB1の式を変更しないとダメかもです。								
 B1例として=IF(VLOOKUP(A1,Sheet2!A1:B5,2,FALSE)="","",VLOOKUP(A1,Sheet2!A1:B5,2,FALSE))								

(あみな) 2021/12/30(木) 00:52


 訂正です...半分、寝てました。

 If 〜 End If の間にある1行必要ないです

 Sheets("Sheet1").Range("A1").Value = 番号

 すいません。

(あみな) 2021/12/30(木) 11:29


 >Sheet 2のBに名前を入れているのですが、その名前が入っていない場合は、
 >次の番号へ飛ばしてくださいと指示を出したいのですが、できません。

 For 番号 = a To n
    Sheets("Sheet1").Range("A1").Value = 番号
    If Sheets("Sheet2").Range(Bのアドレス).Value <> "" Then
        Sheets("Sheet1").PrintOut
    End If
 Next 番号
 Unload Me

(ピンク) 2021/12/30(木) 11:41


トピ主からのレスがありませんがとりあえず。

【Sheet1】のレイアウト

   __A__  __B__
 1
 2

 ※B1セルに↓の数式が記述されている
 =IFERROR(VLOOKUP(A1,Sheet2!A1:B5,2,FALSE),"")&""

【Sheet2】のレイアウト

   __A__  __B__
 1   1      あ
 2   2
 3   3      い
 4   4      う
 5   5
 6

上記のようなことが前提であれば↓のようでよいでしょう。

    Private Sub CommandButton1_Click()
        Dim 番号 As Integer
        With Sheets("Sheet1")
            For 番号 = Me.TextBox1.Value To Me.TextBox2.Value
                .Range("A1").Value = 番号
                If .Range("B1") <> "" Then .PrintOut
            Next 番号
        End With
        Unload Me
    End Sub

(もこな2) 2021/12/30(木) 12:07


皆様ありがとうございます。
おかげ様で解決することが出来ました。
ありがとうございました。

(わん) 2021/12/30(木) 22:27


>おかげ様で解決することが出来ました。
結局どこが問題だったのでしょうか?
無理にとは言いませんが、後学のためにどのように"うまくいかなかったのか"提示していただけませんか?

(もこな2) 2021/12/31(金) 09:12


コメント返信:

[ 一覧(最新更新順) ]


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