天使と悪魔選手権

エクセル2000で作成した見積書があるのですが、内訳の中で、例えば

品名、 規格、単位、数量、単価、金額 の欄があり

金額の欄のセル内に=数量*単価の計算式が入っています。
項目の内、数量が1個、とか1式の場合に限り、印刷の時に単価の金額だけを空白で印刷したいのです。(今までは全て印刷していました。)
もちろん金額の欄に直接入力しちゃえば良いのですが、金額欄のセル内の計算式はいじりたくないのです。VBAが今ひとつわからず悩んでいます。
わかり難かったら補足いたしますのでよろしくお願いします。

A 回答 (8件)

では、1枚のシート上に作成する方法を説明します。



基本的な考え方は前回と同一で、入力する部分と印刷する部分に分けます。
現在使用されているシートの必要な列数以上の列をA列の前に挿入します。
全く同じものをコピーされても結構です。

仮に品名、単位・・・金額が「A~F列」になっているとします。
印刷する側の範囲には次のように定義します。
下記の「n」は行をあらわしています。Dは数量、Eは単価です。

数量の欄に =IF(Dn>0,Dn,"")・・・・・数量は、そのまま表示
単価の欄に =IF(Dn<=1,"",En)・・・・・単価は数量が1又は0の場合、空白
金額の欄に =Fn・・・・・・・・・・・金額は、そのまま表示
ただし、上記の式は数量が自然数でなければなりません。

あとは、印刷する時にこの範囲(印刷用)だけを印刷するように定義すればよいと思います。(ファイル-印刷範囲-印刷範囲の設定)

印刷部分は、忘れずに保護を掛けておいて下さい。
    • good
    • 0
この回答へのお礼

その通りですね。印刷範囲を限定すれば良いのですか。
なんとか解決しそうです。ちょっと急用でいなくなりますが、後ほどやってみようと思います。ありがとうございました。
それと出来ればVBAでも書いてみたいので、図々しいようですが、よろしくお願いします。(後学の為?)

お礼日時:2001/09/15 15:42

参考にマクロを書いてみました。

印刷時に数量=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
    • good
    • 0
この回答へのお礼

お忙しいところ回答ありがとうございます。
とりあえずNo.7の方の設定でやってみたいと思っています。
もう少しVBAを勉強します。(ちょっと難しいです)

お礼日時:2001/09/17 10:29

i-haradaです。



マクロを利用されて下さい。
「単価1」と「単価」を作り、「単価1」を入力用として「単価」印刷用として下さい。「新しいマクロの記録」で、保護を使われるようですから保護を解除して「単価1」がある列を「非表示」にして印刷するようにして下さい。
これをマクロボタンを作り設定すれば良いのでは。

単価は =IF(「数量」=1,"",「単価」)としてください。
VBAがお分かりじゃないようですから、後で修正できるものにしてみました。
    • good
    • 0
この回答へのお礼

お忙しいところ何度もアドバイスありがとうございます。
今、急用が出来ましたので、後ほどやってみます。

お礼日時:2001/09/15 15:35

こんにちは!



私も1案

印刷範囲が既に設定されて入るとして

1.単価の欄に 書式 条件付き書式
 数式が =$X$1 (印刷範囲外であれば何処でもOK)
 書式ボタン フォント色 白

2.記録マクロ
 記録開始
  セルX1に1を入力
  印刷
  セルX1に0を入力
 記録終了

3.フォーム のボタンを配置
 記録されたマクロを登録
 ボタンを右クリック 書式設定 プロパッティ [オブジェクトを印刷する]のチェックを外す
 適当にテキストを編集(例[印刷])

この回答への補足

アドバイスありがとうございます。しかしながら当方の無知により、
>>1.単価の欄に 書式 条件付き書式
  数式が =$X$1 (印刷範囲外であれば何処でもOK)
のところで止っちゃいました。”数式が =$X$1”を入れるとエラーになるのです。 

補足日時:2001/09/15 15:25
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
回答履歴でいろいろと勉強させてもらっています。
これからもよろしくお願いします。

お礼日時:2001/09/17 10:21

値を入力する部分と、印刷する部分を分けることが望ましいと思います。


例えば1枚目のシートを入力用に、2枚目のシートを印刷用に決めておく方が処理は処理しやすいのではないでしょうか?

1枚目の「単価」と「金額」が同一なら(即ち、数量が1)ならば2枚目(印刷用)の「単価」の部分をnull("")となるように定義すれば実現できるでしょう。

この回答への補足

皆様お忙しいところをいろいろとありがとうございます。
わがままばっかりで・・・実は数人で使っているため、(不慣れな人がいる)
出来るだけ1シートで使って、保護をかけておきたいのです。
見積りの枚数=シートの枚数が理想なのですが。

補足日時:2001/09/15 14:40
    • good
    • 0

i-haradaです。



忘れてました。

=IF(「数量」>0,「単価」,"") 
「単価」は 単価金額の数値にして下さい。
それと金額のセルは「Iserror」で処理しないと「数量」が0の時「#VALUE」になります。

=IF(ISERROR(「数量」*「単価」),0,(「数量」*「単価」))
    • good
    • 0
この回答へのお礼

回答ありがとうございます。エクセルは難しいのでもっと勉強します。
これからもよろしくお願いします。

お礼日時:2001/09/17 10:16

i-haradaです。



内容が良くわからないんですが、固定の表に数量を入力した時だけ単価が表示されるようにするのでしたら、単価のセルに

=IF(「数量」>0,「単価」,"") で良いのではないでしょうか?

お役に立つかどうか判りませんが。

この回答への補足

説明がへたですみません。自分で入力するのは金額欄以外です。これが複数行あります。数量、単価が入らなければ金額欄は非表示なのですが、例えば、数量1式、単価10000円、金額10000円では単価と金額が重複します。これを解消したいのですが・・・。

補足日時:2001/09/15 14:31
    • good
    • 0

 セルの書式設定-ユーザー定義で,「;;;」と入れると,そのセルは,入力しても文字は非表示になります。

この回答への補足

うまく説明できなくてすみません。例えば数量 2 個、単価 100 を打ちこんだ場合は単価は表示、印刷。数量が1の場合だけ単価の印刷はしない。と言う設定にしたいのです。

印刷した時に・・
数量...単価.....金額
2......100....200
5........50.....250
1..................600 (単価の所へは直接入力、表示されても良いのですが印刷時は空白にしたい)
4........20.......80

こんな感じですが、わかりますでしょうか。ピリオドはスペースとして下さい

補足日時:2001/09/15 14:28
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
>書式設定-ユーザー定義で,「;;;」と入れると,そのセルは,入力しても文字は非表示になります。・・これも参考になりました。

お礼日時:2001/09/17 10:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!