- ベストアンサー
エクセル2000で見積書の印刷
エクセル2000で作成した見積書があるのですが、内訳の中で、例えば 品名、 規格、単位、数量、単価、金額 の欄があり 金額の欄のセル内に=数量*単価の計算式が入っています。 項目の内、数量が1個、とか1式の場合に限り、印刷の時に単価の金額だけを空白で印刷したいのです。(今までは全て印刷していました。) もちろん金額の欄に直接入力しちゃえば良いのですが、金額欄のセル内の計算式はいじりたくないのです。VBAが今ひとつわからず悩んでいます。 わかり難かったら補足いたしますのでよろしくお願いします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
では、1枚のシート上に作成する方法を説明します。 基本的な考え方は前回と同一で、入力する部分と印刷する部分に分けます。 現在使用されているシートの必要な列数以上の列をA列の前に挿入します。 全く同じものをコピーされても結構です。 仮に品名、単位・・・金額が「A~F列」になっているとします。 印刷する側の範囲には次のように定義します。 下記の「n」は行をあらわしています。Dは数量、Eは単価です。 数量の欄に =IF(Dn>0,Dn,"")・・・・・数量は、そのまま表示 単価の欄に =IF(Dn<=1,"",En)・・・・・単価は数量が1又は0の場合、空白 金額の欄に =Fn・・・・・・・・・・・金額は、そのまま表示 ただし、上記の式は数量が自然数でなければなりません。 あとは、印刷する時にこの範囲(印刷用)だけを印刷するように定義すればよいと思います。(ファイル-印刷範囲-印刷範囲の設定) 印刷部分は、忘れずに保護を掛けておいて下さい。
その他の回答 (7)
- nishi6
- ベストアンサー率67% (869/1280)
参考にマクロを書いてみました。印刷時に数量=1の場合、単価のセルの色を白にしています。 シート側には何も仕掛けはいりませんが、印刷範囲は設定して下さい。 コードを短くするため単価の列をセットするようにしました。『単価列 = 5』の『5』には、『単価』列が印刷範囲内で左から何列目かをセットして下さい。自動的に設定も可能ですが長くなるので・・・ 『Public Const以下を』標準モジュールに貼り付けます。 Public Const 単価列 = 5 '印刷範囲での『単価』が入っている列 '印刷前に数量1の場合の単価を隠す(色を白にする) Public Sub Insatu() setColorIndex True 'フォント色を白に ActiveSheet.PrintPreview '今は印刷プレビュー setColorIndex False 'フォント色を戻す End Sub 'Trueでフォント色を白にする。Falseで戻す Public Sub setColorIndex(OnOff As Boolean) Dim rw As Long With Range("Print_Area") For rw = 1 To .Rows.Count If OnOff = True Then If .Cells(rw, 単価列 - 1) = 1 Then .Cells(rw, 単価列).Font.ColorIndex = 2 End If Else .Cells(rw, 単価列).Font.ColorIndex = xlAutomatic End If Next End With End Sub
お礼
お忙しいところ回答ありがとうございます。 とりあえずNo.7の方の設定でやってみたいと思っています。 もう少しVBAを勉強します。(ちょっと難しいです)
- i-harada
- ベストアンサー率22% (56/252)
i-haradaです。 マクロを利用されて下さい。 「単価1」と「単価」を作り、「単価1」を入力用として「単価」印刷用として下さい。「新しいマクロの記録」で、保護を使われるようですから保護を解除して「単価1」がある列を「非表示」にして印刷するようにして下さい。 これをマクロボタンを作り設定すれば良いのでは。 単価は =IF(「数量」=1,"",「単価」)としてください。 VBAがお分かりじゃないようですから、後で修正できるものにしてみました。
お礼
お忙しいところ何度もアドバイスありがとうございます。 今、急用が出来ましたので、後ほどやってみます。
- comv
- ベストアンサー率52% (322/612)
こんにちは! 私も1案 印刷範囲が既に設定されて入るとして 1.単価の欄に 書式 条件付き書式 数式が =$X$1 (印刷範囲外であれば何処でもOK) 書式ボタン フォント色 白 2.記録マクロ 記録開始 セルX1に1を入力 印刷 セルX1に0を入力 記録終了 3.フォーム のボタンを配置 記録されたマクロを登録 ボタンを右クリック 書式設定 プロパッティ [オブジェクトを印刷する]のチェックを外す 適当にテキストを編集(例[印刷])
お礼
アドバイスありがとうございます。 回答履歴でいろいろと勉強させてもらっています。 これからもよろしくお願いします。
補足
アドバイスありがとうございます。しかしながら当方の無知により、 >>1.単価の欄に 書式 条件付き書式 数式が =$X$1 (印刷範囲外であれば何処でもOK) のところで止っちゃいました。”数式が =$X$1”を入れるとエラーになるのです。
- barbieri
- ベストアンサー率24% (19/78)
値を入力する部分と、印刷する部分を分けることが望ましいと思います。 例えば1枚目のシートを入力用に、2枚目のシートを印刷用に決めておく方が処理は処理しやすいのではないでしょうか? 1枚目の「単価」と「金額」が同一なら(即ち、数量が1)ならば2枚目(印刷用)の「単価」の部分をnull("")となるように定義すれば実現できるでしょう。
補足
皆様お忙しいところをいろいろとありがとうございます。 わがままばっかりで・・・実は数人で使っているため、(不慣れな人がいる) 出来るだけ1シートで使って、保護をかけておきたいのです。 見積りの枚数=シートの枚数が理想なのですが。
- i-harada
- ベストアンサー率22% (56/252)
i-haradaです。 忘れてました。 =IF(「数量」>0,「単価」,"") 「単価」は 単価金額の数値にして下さい。 それと金額のセルは「Iserror」で処理しないと「数量」が0の時「#VALUE」になります。 =IF(ISERROR(「数量」*「単価」),0,(「数量」*「単価」))
お礼
回答ありがとうございます。エクセルは難しいのでもっと勉強します。 これからもよろしくお願いします。
- i-harada
- ベストアンサー率22% (56/252)
i-haradaです。 内容が良くわからないんですが、固定の表に数量を入力した時だけ単価が表示されるようにするのでしたら、単価のセルに =IF(「数量」>0,「単価」,"") で良いのではないでしょうか? お役に立つかどうか判りませんが。
補足
説明がへたですみません。自分で入力するのは金額欄以外です。これが複数行あります。数量、単価が入らなければ金額欄は非表示なのですが、例えば、数量1式、単価10000円、金額10000円では単価と金額が重複します。これを解消したいのですが・・・。
- masamasa_37
- ベストアンサー率18% (23/122)
セルの書式設定-ユーザー定義で,「;;;」と入れると,そのセルは,入力しても文字は非表示になります。
お礼
回答ありがとうございました。 >書式設定-ユーザー定義で,「;;;」と入れると,そのセルは,入力しても文字は非表示になります。・・これも参考になりました。
補足
うまく説明できなくてすみません。例えば数量 2 個、単価 100 を打ちこんだ場合は単価は表示、印刷。数量が1の場合だけ単価の印刷はしない。と言う設定にしたいのです。 印刷した時に・・ 数量...単価.....金額 2......100....200 5........50.....250 1..................600 (単価の所へは直接入力、表示されても良いのですが印刷時は空白にしたい) 4........20.......80 こんな感じですが、わかりますでしょうか。ピリオドはスペースとして下さい
お礼
その通りですね。印刷範囲を限定すれば良いのですか。 なんとか解決しそうです。ちょっと急用でいなくなりますが、後ほどやってみようと思います。ありがとうございました。 それと出来ればVBAでも書いてみたいので、図々しいようですが、よろしくお願いします。(後学の為?)