Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows XP全般 : Excel 2010)
2行ごとにあるデータを一つのシートにまとめて連続印刷したい。
投稿日時: 18/10/09 19:23:23
投稿者: Owl916

仕事の引き継の資料作成で難儀しております。お助けください。
780社の基本データを1枚のシートにまとめようと思います。
基本データはA列通し番号、B列会社ごとの番号(2行おき)、C列は会社名(2行おき)D列会社の電話Fax番号
E列担当者名、F列担当者連絡先(携帯・E-Mailなど)これを元に、Excelの1枚のシートにまとめて連続印刷できるようにしたいと思っています。シートにまとめることはVlookUp関数を使ってできるのですが、連続印刷のVBAがうまく作れません。
私が考えたCodeは以下の通りです
Sub 印刷()
Dim pn As Integer
Dim I As integer
pn=InputBox("何番まで印刷しますか")
For i=1 To pn
Worksheets("SheetB").Range("A1").Value=i(Shee
Worksheets("sheetA").Printout
i=i+3
Next i
End Sub
この8行目のi=i+3の場所が不味いのかpnの設定方法がまずいのか、考えたように印刷ができません
どうぞご指導ください。

回答
投稿日時: 18/10/09 19:48:11
投稿者: WinArrow
投稿者のウェブサイトに移動

>pn=InputBox("何番まで印刷しますか")
この、「何番」は、何を意味しているんですか?
 
>Worksheets("SheetB").Range("A1").Value=i(Shee
この行は何をしようとしているんですか?
 
コードの意図が理解できません。
 
もっと丁寧に説明しましょう。

回答
投稿日時: 18/10/09 20:51:23
投稿者: WinArrow
投稿者のウェブサイトに移動

もう一つ
>連続印刷
とは、どのようなことでしょうか?

投稿日時: 18/10/09 21:12:46
投稿者: Owl916

WinArrow さんの引用:
>pn=InputBox("何番まで印刷しますか")
この、「何番」は、何を意味しているんですか?
 
>Worksheets("SheetB").Range("A1").Value=i(Shee
この行は何をしようとしているんですか?
 
コードの意図が理解できません。
 
もっと丁寧に説明しましょう。

 
申し訳ありません。「何番」の意味はA列に通し番号を入れてあるので、3行で一社の情報がまとめて入れてあるので、例えば50番目の会社なら150と入力すれば、1社目から50社目まで印刷できるように考えました。
 
Worksheets("SheetB").Range("A1").Value=i
これは、正しくは
  Worksheets("SheetA").Range("A1").Value=i
でした。印刷するシート(SheetA)のセルA1に数を代入することでVllokup関数に参照させるつもりです。
 
連続印刷はこのコードを利用して全社のデーターをPDF形式に印刷して閲覧印刷できるようにして引き継ぎ
をしてほしいと後任から依頼がありました。
 
私のノートパソコンのタッチパッドがいい加減でマウスの矢印が思いもよらぬところに移動してしまい
混乱してしてしまいました。何卒良いアドバイスをお願いします。

回答
投稿日時: 18/10/09 22:44:02
投稿者: WinArrow
投稿者のウェブサイトに移動

引用:
例えば50番目の会社なら150と入力すれば、1社目から50社目まで印刷できるように考えました。

「行」と「遠し番号」が、混乱していませんか?
 
Vlookup関数がどのようになっているかわかりませんが、
50番目なら、150と入力ではなく、「50」と入力させればよいのでは?
「人」に指示することと、プログラムでの扱いをきちんと切り分けで考えることです。
 
プログラムでは
3行分が1件ということなので、3行ごとにステップアップするようにします。
 
全体的なお話になりますが、
掲示板には、手入力ではなく、コードペインからコピペして
コードを掲示してください。
手入力して、実際とは違うコードを掲示されたとしても、
このコードに対する回答しかできませんから・・・
 
最初の質問時は、SheetB
>Worksheets("SheetB").Range("A1").Value=i
が、前レスではSheetA・・どちらが正解なんですか?
 
印刷するデータは、どこに存在するのですか?
推測ですが、
本来のデータは、SheetBに存在していて
SheetAのセルA1に格納した番号を検索キーとして
SheetBから、持ってきているのではないでしょうか?
 
もしそうだとしてら、行を意識する必要はないわけです。
>i=i+3
なんて無意味ですよね・・・
 
 
コードについて
 
>pn=InputBox("何番まで印刷しますか")
InputBoxは、文字列を返しますから
受取る変数は、文字列で定義しましょう.
 
Dim pn As String
 
if Nt IsNumeric(pn) Then
    MsgBox "番号が数値ではありません。"
    Exit SUb
End If
くらいのチェックは必要ですね?
 

回答
投稿日時: 18/10/09 22:51:03
投稿者: WinArrow
投稿者のウェブサイトに移動

引用:
連続印刷はこのコードを利用して全社のデーターをPDF形式に印刷して閲覧印刷できるようにして引き継ぎ
 をしてほしいと後任から依頼がありました。

 
この説明と
コードの内容とが整合しているのかしら?
 
コードでは、1件毎に印刷命令があるので、
PDFにすれば、連続といえば、そうかもしれませんが、1件/ページになります。
レイアウトが全く分かりませんが、上側に3行印刷、下側は空白・・かな?
780社ですから、全部印刷すると780ページになります。

投稿日時: 18/10/10 05:56:36
投稿者: Owl916

お忙しい中、丁寧なご回答ありがとうございました。
引き継ぎは今月いっぱいなので問題を整理して再度
質問します。
 ご親切ありがとうございました。

投稿日時: 18/10/10 12:52:34
投稿者: Owl916

ご多忙の中色々とご指摘頂きありがとうございました。
再度質問内容を検討して投稿します。
私の不勉強にもかかわらず、ありがとうございました。