[[20080328210605]] 『加算方法』(ゆう) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『加算方法』(ゆう)

過去ログから、以下をコピーして使用させて頂いているのですが‥

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.