- 締切済み
エクセルでマクロを使い合計金額のある行だけ印刷
エクセルでマクロを使ってデーターのある行のみ印刷したいのですが。 合計金額のある行だけ印刷したい。 A社 100 100 100 300 印刷 B社 印刷しない C社 100 100 印刷 どなたか宜しくお願い致します。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- kukineko
- ベストアンサー率28% (81/286)
2です。 通常BASICと少し混ざってたみたいです。 for i=1 to 10 合計=cells(i,4) ←ご存知でしょうが数字はA列=0でB,C,D...2,3,4....です。行はi+数字で読み込み開始を変えれます。 if 合計=0 then ←0指定で""でも0でも対応します。文字が入ってればエラーになります。thenの後はコマンド無しです。 else (印刷プロシージャー) end if next i で、大丈夫と思います。
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルのシートの(一部)印刷に使うPrintOutメソッドはRange(セル範囲)に対してです。 セル範囲について、CTRLを押しつつ、セル範囲を選択して、指定した範囲で印刷しても、指定した範囲のデータのみが印刷されるが、1行ごとに改ページが入って使い物にならない。 改行をしない印刷のメソッドは無い様だ(下記X参照)。 従って別(白紙)シートに、印刷したい行(列も限定しても良い)を コピーして(値だけなら代入で)データを再編成・作成し、1ページ分取り揃えたところでPrintOutするしかないのでは。もちろん別シートに選択全てデータを取り揃えてのち、ページ改行は自動で任せることもできる。 ーー だから別シートに印刷したい行をVBAで作成すればよい。 大雑把にはE列の行で空白で無い行を別シートに移せばよい。 もし、それで不都合のケースはプログラムで(IF文などで)別シートへのコピーを回避すれば良い。 ーー 参考 (x)について Basic(初期パソコン言語)では (1)印刷後、改行しない印刷 (2)印刷後、改行する印刷 があったが、VBでは、私が本を読んだり、WEBを見たりでは見たことが無い。のどから手が出るほどほしいものだが、誰か教えてくれないかと思っている点です。 逆にBasic由来のPrint#文で、印刷する内容のデータの、テキストファイルを作り印刷する手もある。 参考 http://okwave.jp/qa2217078.html
- merlionXX
- ベストアンサー率48% (1930/4007)
合計金額の列がE列だとすると Sub test01() Rows("1:1").AutoFilter Rows("1:1").AutoFilter Field:=5, Criteria1:="<>" ActiveWindow.SelectedSheets.PrintOut Rows("1:1").AutoFilter End Sub でいかがでしょうか?
お礼
ありがとうございます。 早速試してみます。 ありがとうございます。
- kukineko
- ベストアンサー率28% (81/286)
印刷ループ中にif文挿入で可能と思います。 例えば現在10社の印刷をfor~next構文で for i=1 to 10 (印刷プロシージャー) next i のように構成しているなら for i=1 to 10 合計=cells(4,i) if 合計="" then next i else (印刷プロシージャー) next i のように間に合計値を見に行き判定する文を挿入すればよいと思います。 (実際は変数の宣言等も必要でしょうが)
お礼
ありがとうございます。 早々に試してみます。 ありがとうございます。
補足
すみません 昨日構文を追加してみましたが if 合計="" then next i の構文でコンパイルエラーになります。 next に対応するForが有りませんとでます。 いろいろ構文を変えてみましたが、 ダメでした。 だれか教えて下さい。 宜しくお願いします。
- pbforce
- ベストアンサー率22% (379/1719)
オートフィルターを使用すれば、合計金額のある行を表示できますので、その後印刷しましょう。 どうしてもマクロでやりたければ、マクロに記録を実行しましょう。
補足
早々ありがとうございます。 説明不足ですみません。 今のマクロの設定は、一行(得意先1件)で1枚の印刷設定で合計金額が無くても印刷されてしまいます。 10件の得意先があれば、10枚印刷してしまいます。 合計金額の無いお得意先は印字をしない設定(マクロ)をしたく 宜しくお願い致します。
お礼
無事できました。 いろいろご指導頂きありがとうございます。