[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『加算方法』(ゆう)
過去ログから、以下をコピーして使用させて頂いているのですが‥
Private Sub Worksheet_Change(ByVal Target As Range)
Dim inp, outp As String
inp = "$C$3"
outp = "K3"
Application.EnableEvents = False
If Target.Address = inp Then
Range(outp).Value = Range(outp).Value + Target.Value
If Target.Value <> "" Then
ActiveCell.Offset(-1, 0).Select
Else
Range(outp).Value = 0
End If
End If
Application.EnableEvents = True
End Sub
これでC3に入力し、K3に加算することができました。
更に、
C4入力→K11加算
C5入力→K12加算
C6入力→K13加算
E3入力→M3加算
G3入力→O3加算
にしたいのですが可能ですか?
どう編集すればできるのでしょうか?
教えてください。
>If Target.Address = inp Then ↓の意味 もしTargetのアドレスがinpだったら
If分岐のパターン その1
If 条件A Then 処理A
その2 If 条件A Then 処理A Else 処理B End If
その3 If 条件A Then 処理A ElseIf 条件B Then 処理B Else 処理C End If
その3の場合はElseIfはいくつでも追加できます。 でも多すぎると分かりにくくなりますので、
Select Case
を使うと便利です。 (とおりすがり)
ちょっと形を変えてみました。 これだとまた増えても、inp,outpにそれぞれ追加をすればOKです。順番は合わせてください。 入力をすると次の入力セルに進むようにしてますが、提示されたコードのように 動かないようにしたい場合は、(1)の行をコメントアウトして(2)の行の先頭の「'」を 取ってください。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim inp As Variant, outp As Variant Dim MyRng As Range Dim n As Variant
On Error GoTo ERR_H
inp = Array("C3", "C4", "C5", "C6", "E3", "G3") outp = Array("K3", "K11", "K12", "K13", "M3", "O3")
Application.EnableEvents = False
n = WorksheetFunction.Match(Target.Address(0, 0), inp, 0) Set MyRng = Range(WorksheetFunction.Index(outp, n))
MyRng.Value = MyRng.Value + Target.Value If Target.Value <> "" Then Range(inp(n Mod (UBound(inp) + 1))).Select '(1) ' Target.Select '(2) Else MyRng.Value = 0 End If
ERR_H: Application.EnableEvents = True
End Sub (やっちん)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.