Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3666 / 13646 ツリー ←次へ | 前へ→

【60611】請求書の連続印刷について ito 09/3/5(木) 9:31 質問[未読]
【60624】Re:請求書の連続印刷について トト 09/3/5(木) 16:13 発言[未読]
【60630】Re:請求書の連続印刷について つん 09/3/5(木) 17:10 発言[未読]
【60659】Re:請求書の連続印刷について ito 09/3/6(金) 22:23 お礼[未読]
【60661】Re:請求書の連続印刷について ito 09/3/6(金) 22:41 お礼[未読]
【60662】Re:請求書の連続印刷について つん 09/3/6(金) 23:11 発言[未読]
【60679】Re:請求書の連続印刷について ito 09/3/7(土) 21:10 発言[未読]
【60680】Re:請求書の連続印刷について つん 09/3/7(土) 22:30 発言[未読]
【60850】Re:請求書の連続印刷について ito 09/3/18(水) 9:57 お礼[未読]

【60611】請求書の連続印刷について
質問  ito  - 09/3/5(木) 9:31 -

引用なし
パスワード
   下記のマクロで請求書の連続印刷を行っております。
受注件数が一枚の請求書に収まる場合は良いのですが
受注件数が多く、2ページ以上になった場合 , 下記のマクロでは
2 ページの最初の行から 受注日、品名、個数、単価、売上金額、
の受注明細となります。
請求書のフォームが同じなため、1ページ目と同じく、2ページ目も住所、社名を入れ
同じ行から残りの受注件数を入れ、印刷する方法を教えて頂けませんか。
宜しく、お願いします。

Private Sub P_請求書貼付()
  Dim IngRow2 As Long
  Dim IngRow6 As Long
  Dim i, j As Long
  
  With Worksheets("請求書")
  
   With Worksheets("補助2") '受注台帳から抽出したA社の受注件数リスト
     IngRow2 = Sheets("補助2").Range("A1").End(xlDown).Row
   End With
   
   With Worksheets("補助6") '得意先台帳からの、A社の 住所、社名
     IngRow6 = Sheets("補助6").Range("A1").End(xlDown).Row
   End With
   
   For j = 2 To IngRow6
     '住所1、住所2、会社名、部署名
     Sheets("請求書").Cells(3, 2).Value = Sheets("補助6").Cells(j, 5).Value
     Sheets("請求書").Cells(4, 2).Value = Sheets("補助6").Cells(j, 6).Value
     Sheets("請求書").Cells(7, 2).Value = Sheets("補助6").Cells(j, 2).Value
     Sheets("請求書").Cells(8, 2).Value = Sheets("補助6").Cells(j, 3).Value
       
    For i = 2 To IngRow2
     '受注日、品名、個数、単価、売上金額、
     Sheets("請求書").Cells(i + 13, 1).Value = Sheets("補助2").Cells(i, 1).Value
     Sheets("請求書").Cells(i + 13, 1).Value = Sheets("補助2").Cells(i, 2).Value
     Sheets("請求書").Cells(i + 13, 2).Value = Sheets("補助2").Cells(i, 3).Value
     Sheets("請求書").Cells(i + 13, 3).Value = Sheets("補助2").Cells(i, 4).Value
     Sheets("請求書").Cells(i + 13, 7).Value = Sheets("補助2").Cells(i, 5).Value
    Next i
      P_印刷実行
   Next j
  End With
End Sub

Private Sub P_印刷実行()
  Dim varList() As Variant
  Dim varLp As Variant
  Dim intRet As Integer
  
  Dim RowsCount As Long
  Dim BreakCount As Integer
  
   Worksheets("請求書").Activate
    '1ページの行数設定
    ActiveSheet.ResetAllPageBreaks
    RowsCount = ActiveSheet.Range("A1").CurrentRegion.Rows.count
  
   For BreakCount = 1 To (RowsCount) / 20
    ActiveSheet.HPageBreaks.Add Before:=Cells(BreakCount * 20 + 1, 1)
   Next
   ActiveSheet.PrintOut
End Sub

【60624】Re:請求書の連続印刷について
発言  トト  - 09/3/5(木) 16:13 -

引用なし
パスワード
   ▼ito さん:
住所・社名を「行のタイトル」として設定はできないのでしょうか?
できるのであれば、設定してしまえば今のままで実現できるかと思います。

出来ないのであれば、
(請求書シートの 15〜20行 が1頁目の受注明細となる、場合)
20行目を超えるようでしたら、一度印刷し、再度15行目からデータを入れていく、
というように処理すると良いかと思います。

その方法であれば改ページも要らないでしょう。

【60630】Re:請求書の連続印刷について
発言  つん  - 09/3/5(木) 17:10 -

引用なし
パスワード
   こんにちは^^ 横から失礼します。

>住所・社名を「行のタイトル」として設定はできないのでしょうか?
>できるのであれば、設定してしまえば今のままで実現できるかと思います。
あ〜これがOKなら、15行目から、「補助2」のデータが入るみたいなので、
1行目〜14行目まで、「行のタイトルに」設定してしまえばいいですね!


ところで、itoさんのコードを拝見してて、気になったことが・・・


「With」の使い方ですが

   With Worksheets("補助2") '受注台帳から抽出したA社の受注件数リスト
     IngRow2 = Sheets("補助2").Range("A1").End(xlDown).Row
   End With
   
ですと、Withの意味がないように思います。

   With Worksheets("補助2") 
     IngRow2 = .Range("A1").End(xlDown).Row
   End With

これでええんちゃうかな?
同じように、

With Worksheets("請求書")〜End Withで囲んでしまうなら、

Sheets("請求書").Cells(3, 2).Value = Sheets("補助6").Cells(j, 5).Value

部分の、「Sheets("請求書")」も必要ないですよね?


あと、まず、「補助6」のデータを1データ転記→「補助2」のデータをループで回して、全部転記→そこで、印刷。
そして、「補助6」のデータが複数あるなら、またループで戻り、2データ目にはいりますが、その時「補助2」のデータは、常に同じデータになりますよね??
それでええんですか?

それから

Sheets("請求書").Cells(i + 13, 1).Value = Sheets("補助2").Cells(i, 1).Value
Sheets("請求書").Cells(i + 13, 1).Value = Sheets("補助2").Cells(i, 2).Value

は、書き間違いかな・・と思うけど、Cells(i + 13, 1)のデータが上書きされちゃいますね。

もひとつ、「補助6」のA列には例えば通しナンバーなどが入ってるんですよね?
もし、空白なら、A列で最終行を取得してるので、データなしになっちゃいます。

私なりに質問を読んで、疑問に思ったことを書きましたが、私の思い違いだったらごめんなさい。(あまり読解力がないので^^;;;)

【60659】Re:請求書の連続印刷について
お礼  ito  - 09/3/6(金) 22:23 -

引用なし
パスワード
   ▼トト さん、つんさん、ご回答有難う御座います。
今、家で回答を見さして頂いております。
お礼が遅れて申し訳ありのせん。
製品の受注、在庫管理、出荷のための、納品書、荷札、送り状の
作成まで出来,後は請求書の発行までこぎつけ、これが出来れば完成
という所です。
基礎知識がなく、専門誌、ExcelVBAを頼りに継はぎにマクロを作っております。
ご回答を理解,解読し、このマクロを完成させたいと思っております。
有難う御座いました。

【60661】Re:請求書の連続印刷について
お礼  ito  - 09/3/6(金) 22:41 -

引用なし
パスワード
   ▼ito さん:
>▼トト さん、つんさん、ご回答有難う御座います。
>今、家で回答を見さして頂いております。
>お礼が遅れて申し訳ありのせん。
>製品の受注、在庫管理、出荷のための、納品書、荷札、送り状の
>作成まで出来,後は請求書の発行までこぎつけ、これが出来れば完成
>という所です。
>基礎知識がなく、専門誌、ExcelVBAを頼りに継はぎにマクロを作っております。
>ご回答を理解,解読し、このマクロを完成させたいと思っております。
>有難う御座いました。

宜しければ、行のタイトルの作成方法を教えて頂ければ有難いのですが。

【60662】Re:請求書の連続印刷について
発言  つん E-MAIL  - 09/3/6(金) 23:11 -

引用なし
パスワード
   ▼ito さん:
こんばんは^^

>宜しければ、行のタイトルの作成方法を教えて頂ければ有難いのですが。
えーと作り方というか、設定というか・・・

「ページ設定」の中にある、印刷タイトルの「タイトル行」のことです。
使われたことあるかわかりませんが、
そこに、たとえば1〜5行目まで設定しちゃえば、複数ページにわたっても、その設定した行が印刷されます。

【60679】Re:請求書の連続印刷について
発言  ito  - 09/3/7(土) 21:10 -

引用なし
パスワード
   つんさんへ
「補助6」のデーターが複数あるのなら、又、ループで戻り、2データーに入り
るとの事ですが。
別のマクロで受注台帳から一定期間の受注リストを抽出、補助1に張付けております。
そのリストはA列が顧客コードになっており、数十社あります。
そして、得意先台帳から絞日の得意先を抽出し、補助6に張付けております。
その得意先リストもA列が顧客コードになっております。
順次、補助6のA列の2行目からの顧客コードが入力され、補助1から同じ顧客コード
の受注リストが抽出され、補助2に張付ける所まで出来ております。

sheet("請求書")cell(i+13,1)valueは間違っておりました。

「ページ設定」、「タイトル行」を社名、住所で例をあげて頂ければありがたいのですが、初歩的な質問のようで、もう少し勉強して、調べてみたいと思います。
お返事を頂き有難うございました。

【60680】Re:請求書の連続印刷について
発言  つん E-MAIL  - 09/3/7(土) 22:30 -

引用なし
パスワード
   ▼ito さん:
こんばんは。

>「ページ設定」、「タイトル行」を社名、住所で例をあげて頂ければありがたいのですが、初歩的な質問のようで、もう少し勉強して、調べてみたいと思います。
>お返事を頂き有難うございました。

えーと、例と言われましても。。。

「ページ設定」−「タイトル行」はVBAではなくて、
一般機能です。
それはおわかりになってるのかな?

請求書の体裁が具体的にどのようになってるのかわからないので、適当な発言になるかと思いますが、
受注明細(?)が15行目からのようですので、1〜14行をタイトル行に設定してみればいかがでしょうか?

【60850】Re:請求書の連続印刷について
お礼  ito  - 09/3/18(水) 9:57 -

引用なし
パスワード
   >▼トト さん、つんさんへ

大変時間がかかりましたがやっと、少し目処がつきました。
おっしゃる通り、行のタイトルで設定すれば良い事で
その意味が判り、行タイトルにR1:R15と入れると思い道理に
なりました。
もう少し、回答内容を熟読すればよかったのですが
最初はR1の一行の項目しかはいらないと思い込み、15行
の設定方法が判らず、その他、複雑に考えすぎていました。
やっと、一歩前へ進む事ができました。
トトさん、つんさん、本当に有難う御座いました。

3666 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free