|
A B C D E F
1 品名 形式 呼称 数量 単 価 金 額
2 ○○ 100 1,250 125,000
3 △△ 250 100 25,000
4 ■□ 120 2,200 264,000
:
:
:
11 ×× 110 150 16,500
12 ●◎ 300 15 4,500
A B C D E F
1 品名 形式 呼称 数量 単 価 金 額
2 ○○ 100 1,250 125,000
3 △△ 250 100 25,000
4
5 ■□ 120 2,200 264,000
6 小計 414,000
:
:
:
11 ×× 110 150 16,500
12 ●◎ 300 15 4,500
13 小計 21,000
合計 454,000
任意の行の小計を算出(コマンドボタン1)『小計』
上記表はF列ですが汎用性を持たせる為にクリックして列を決めたい。
MsgBox "小計の列をクリック。"
次にMsgBox "小計の行をクリックしなさい。"上の表の場合A6をクリック
F13に414,000と(数式記入)表示させる。
次に小計を出す場合は列は上記で
指定してあるので(コマンドボタン2)『小計2』
MsgBox "小計の行をクリック。"
A13をクリック
前回の小計を探して
MsgBox "小計の範囲はF6からF12です。" ,4
F13に 21,000を(数式記入)表示
これを何度か実行し
最後に合計
アクティブせるから(仮にA100[任意])の場合A100に"合計"と
記入しF2:F99までの
小計行のF列をsumする。
-------------------------------------------------------------------
A101以降同様に上記作業が実行され
最後に総合計(仮に)A500に
合計行のTOTALを出したいのですがVBAで組めますか。?
よろしくお願いします。
下記コードを参考に考えたのですがVBA初心者ではなかなか
思い通りになりませんでした。
Option Explicit
Private Sub CommandButton1_Click()
With ActiveCell
If .Column <> 2 Or .Value <> "" Then
MsgBox "セルの場所が不適切です"
Exit Sub
End If
End With
Dim i As Long
Dim r As Long
Dim myRes As Variant
r = ActiveCell.Row
myRes = MsgBox("小計なら はい、合計なら いいえを選んでください", vbYesNoCancel)
If myRes = vbYes Then
For i = r - 1 To 1 Step -1
If Cells(i, 1).Value = "小計" Or Cells(i, 1).Value = "合計" Or Cells(i, 1).Value = "計" Then
If i = r - 1 Then
MsgBox ("計算する行がありません")
Else
Cells(r, 2).Value = "=sum(B" & i + 1 & ":B" & r - 1 & ")"
Cells(r, 1).Value = "小計"
End If
i = 1
End If
Next
ElseIf myRes = vbNo Then
For i = r - 1 To 1 Step -1
If Cells(i, 1).Value = "合計" Or Cells(i, 1).Value = "計" Then
If i = r - 1 Then
MsgBox ("計算する行がありません")
Else
Cells(r, 2).Value = "=sumif(A" & i + 1 & ":B" & r - 1 & ",""小計"",B" & i + 1 & ":B" & r - 1 & ")"
Cells(r, 1).Value = "合計"
End If
i = 1
End If
Next
End If
End Sub
|
|