[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『差し込み印刷の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 >
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
ほぼ同じコードだけと学校の課題?
(ピンク) 2021/12/29(水) 10:06
ピンクさんのコードで実行してみましたが、うまくいきませんでした。
Sheet 1にテンプレートをおいて、Sheet 2に表を作っています。
Sheet 1には、Sheet 2からVook Upで呼び出して差し込み印刷を実行してます。
Sheet 2のBに名前を入れているのですが、その名前が入っていない場合は、次の番号へ飛ばしてくださいと指示を出したいのですが、できません。
どうすればよいでしょうか。
勉強不足ですみませんが、お力添えくださいませ。
よろしくお願いいたします。
(わん) 2021/12/29(水) 22:55
>ピンクさんのコードで実行してみましたが、うまくいきませんでした。
どのようにうまくいかなかったのですか?
ぱっと見問題ないとおもいますが・・・(対象シートを明示したほうがよいとはおもいますが)
(もこな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.