• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAのマクロでフッターに計算式をいれるやり方。(改ページの行数はデータ毎にかわります。))

VBAのマクロでフッターに計算式をいれるやり方

このQ&Aのポイント
  • VBAを使用して、EXCELシート上のCSVデータを取り込み、社内番号や月ごとに改ページをしてヘッダーとフッターを設定し、罫線を追加して印刷する方法についての質問です。
  • フッターの合計計算を入れる方法がわからず、年月日や社内番号が変わった時に行を挿入して計算式を追加し、改ページするロジックを作りたいとのことです。
  • 提供されたマクロには改ページとフッターの計算ロジックが含まれていますが、うまく動作しないため、助けを求めています。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

質問者のプログラム力がどんなものかわからないのですが、こんな丸投げに近い、ややこしい課題(コード数が多くなるということ)を回答者は回答してくれるかな。 もっとVBAに熟達してから、他人に影響する仕事などにVBAを使うべきと思う。 (1)CSVファイルをエクセルシートに読み込み、マスターデータ的にして、そこでCSVファイルとは縁を切る(見たりしない)。 (2)社内番号+年月(日)でソートする。 (3)フッターを使うのでなく 印刷用シートを1つ(マスターデータシートとは別に)設け、 同じ社内番号+年月のデータをコピーして印刷シートに写し ッヘッダーに設定するような情報は、印刷シートの上部セルにセットし、フッターにセットするような情報は下部にセットする。 計算が各行に渉って計算が必要VBAで行う(できるなら関数でも良いが) (4)そしてRange()。PrintOut (5)印刷が終れば、データ抹消が必要なセルのデータはクリアする。 (6)以上を繰り返す (7)印刷用シートは1枚で、中身が整えられて、印刷の繰り返しとし、シート数は、社内番号+年月枚作ったりしない。 (8)社内番号+年月が変化した切れ目の行をどのようにして捉えるか(コントロールブレークという)のロジックを良く考えてください。 一般には2つのキーを結合して新しいキーを作る。 社内番号が5桁と仮定すれば 社内番号(5桁)+年月6桁(200703のような、03式の文字列を使う)キー項目を毎行において作り、直前のそれとIF文で比較して捉えると良い。 ーー 上記で言っていることは、 ・PageBreakを使わない。 ・Footerを使わない。 マクロの記録を使う程度の力の場合は、レパートリーを広げずに コントロール(データの並び順と塊・区切り)を整えるロジック(アルゴリズム)に意識を集中すべきです。

niseite
質問者

お礼

imogasiさん 申し訳ありません。プログラマとしての力量はまだ、VBをはじめたばかりで、会社で、VBAの仕事を任されまして、四苦八苦しているところです。今回はネットで自分で調べてもなかなか、調べにくく、つい、丸投げに近い形で質問を投稿してしまいました。 丁寧に回答いただきありがとうございます。(3)の発想、目から鱗でした。確かにそのほうが、行数が変動するデータの合計は出しやすいですね。そして、キーコードについても、IF文などで、ソートしながら、作れば、日付と社内番号ごとに並べられそうです。 今一度上記を念頭に置き、取り組みたいと思います。 ありがとうございました。

関連するQ&A

専門家に質問してみよう