後半の回答
(A) (B) (C)
2月3日 a 2000
b 3000
s 250
2月4日 a 300
d 200
s 25
2月5日 a 1000
s 50
のように入力します。
B列は品名とs(消費税を示す符牒とする。消費税と入れるのは面倒くさいからsで略す。どんな文字語句なんでもよいわけです。)を入れる列、C列には金額を入れる。
sをB列に入力すると自動的に、前の行(=上の行)のsが現われる行(上例では第3行目まで)の次行(4行目)までの金額の和(すなわち第4行と第5行金額)の5%をsの列の隣列にセットします。
ワークシートのChangeイベントプロシジュアーとして、下記をコピーし貼りつけてください。
入力作業がおわってから、B列だけsを「消費税」に「置換」操作をされるのが良いと思います。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If Target.Value = "s" Then
st = 0
' MsgBox Target.Row
For i = Target.Row - 1 To 1 Step -1
If Cells(i, 2) = "s" Then Exit For
st = st + Cells(i, 3)
Next i
' MsgBox st
Cells(Target.Row, 2 + 1) = Int(st * 0.05)
End If
End If
End Sub
少数例でテスト済み。
#1のものです。前半の質問について。
印刷用にコマンドボタンを1つ貼りつける。
Clickイベントに
Private Sub CommandButton1_Click()
PrintPreview
End Sub
ボタンをクリックすると、プレビュー画面になるから、「改ページプレビュー」をクリックして、印刷範囲指定するではダメでしょうか。
お礼
早速のお答えありがとうございました。なんとなく思い描いていた方法にピタリと一致していて、それをVBAで記述することができず悩んでいたのです。まだまだ私には高度過ぎるテクニックですが、とても勉強になり、とても役立ちそうです。ありがとうございました。