|    | 
     > 問題は、サービスが入るときと入らないときがあり、 
> 入るときはE数量の数字の色を白にして印刷に出ないようにしたいです。 
>(サービスの行は不定です) 
 
対応が難しい点はどこでしょうか? 
1)D列のセルに"サービス"という文字列が入っているかどうかの判定ですか? 
2)文字列の色を白にする方法ですか? 
 
まず、2)については、色を白にする作業をマクロ記録すればコードが得られますよ。 
1)については、 
For k = 1 to 100  ' 1,100は例示です。 
  If Cells(k,"D").Value = "サービス" Then 
   '' ここに色を変える処理を書きます 
  End If 
Next 
のような書き方ですね。 
 
なお、提示されたマクロは、マクロ記録をそのままのようですので、 
逐一、右に何歩、下に何歩みたいなことが残っていてわかりにくいです。 
普通、こういうところは手を入れて直しますね。 
 
例えば、こんな風に書いた方が、それぞれのセルの位置関係も分かり 
易いでしょう。(内容は見ていません) 
 
Sub 計算2() 
  Dim lastR As Range 
  Range("F7:F20").FormulaR1C1 = "=VLOOKUP(RC[-2],金額,2,0)"  '種目から単価参照 
 
  Range("H7").FormulaR1C1 = "=RC[-2]*RC[-3]"         '数量×単価 
  Range("H7").AutoFill Destination:=Range("H7:H20"), Type:=xlFillDefault 
                          '20行分コピー 
  Set lastR = Range("D65536").End(xlUp) 
   
  lastR.Offset(1, 2).Resize(15, 3).ClearContents 'エラー分を選択、消去 
  
  lastR.Offset(1, 0).Value = "小 計" 
  lastR.Offset(1, 4).FormulaR1C1 _ 
    = WorksheetFunction.Sum(Range("H7:H" & Rows.Count)) '小計 
                           
  lastR.Offset(2, 0).Value = "消費税(5%)" 
  lastR.Offset(2, 4).FormulaR1C1 = "=R[-1]C*0.05" '消費税 
  
  lastR.Offset(3, 0).Value = "合 計" 
  lastR.Offset(3, 4).FormulaR1C1 = "=R[-1]C+R[-2]C" '合計 
End Sub 
 
なお、 
 '小計 文字を入力 
のようなコメントは書かない方がいいです。 
無くてもわかる内容であって、 
返って本当に必要なコメントの邪魔になります。 
コメント一つにも神経を使ったほうがいいです。 
 
(上のコードでも、With lastR ..... End Withなどの使用で、 
さらに改善することもできるでしょう。あくまで例示です。) 
 | 
     
    
   |