[[20060505000042]] 『同枠内で足算をしたい』(momo) >>BOT

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

 

『同枠内で足算をしたい』(momo)
エクセルの質問です。例えば、ある枠(セル)に1と入力し、更に同じ枠に2と入れると、自動でその枠の数字が合計の3になり、更に3と入力すると6となる設定を教えて下さい。ファンクションキーを使わずにする方法を希望します。office2003でXP Proを使ってます。

 入力間違いをしちゃったらどうするんだろう?
 なんてことを考えましたが、無視しましたWWW
 
 ※あるセルは、A1 にしてあります。
  文字を入れたときはスルーします。
 
1)シートのタブを右クリック
  \Sheet1/←ここ
2)シートの表示
3)出てきた白い画面に、下記コードをコピペ

 シートモジュールにコピペ
'--------------------
Public x As Variant
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count <> 1 Then: Exit Sub
    If Target.Address(0, 0) <> "A1" Then: Exit Sub
    If Not IsNumeric(Target) Then: Exit Sub
    Application.EnableEvents = False
    If IsNumeric(x) Then
        Range("A1") = x + Target
    Else
        Range("A1") = Target
    End If
    Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    x = Range("A1")
End Sub
 
 (キリキ)(〃⌒o⌒)b

 キリキさん またまた同じようなマクロですが、せっかく作ったので。
A1を入力する枠(セル)と考えています。

 Public myVal As Long
====================================================================
Private Sub Worksheet_Activate()
     myVal = Range("A1").Value
End Sub
====================================================================
Private Sub Worksheet_Change(ByVal Target As Range)
       With Target
         If .Count > 1 Then Exit Sub
         If Not IsNumeric(.Value) Then Exit Sub
         If IsEmpty(.Value) Then Exit Sub
         If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
            Application.EnableEvents = False
            .Value = .Value + myVal
            myVal = .Value
            Application.EnableEvents = True
         End If
       End With
End Sub
                 (SHIOJII)


 あっ。私のは文字を入れるとダメですね。捨ててください。
                    (SHIOJII)

 なるほど〜
 σ(^o^;)のは、Deleteが効かないんですよね・・・

 (キリキ)(〃⌒o⌒)b とりあえず風呂入ってこよっと

 これで、Delet も有効になるかな?
 
Public x As Variant
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count <> 1 Or Target.Address(0, 0) <> "A1" Then: Exit Sub
    If Not IsNumeric(Target) Or Target = "" Then: Exit Sub
    Application.EnableEvents = False
    If IsNumeric(x) Then
        Range("A1") = x + Target
    Else
        Range("A1") = Target
    End If
    Application.EnableEvents = True
    Range("A1").Activate
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    x = Range("A1")
End Sub
 
 (キリキ)(〃⌒o⌒)b ちょい修正

ありがとうございました。うまくいきうれしいです。ところで今はA1のセルだけですが、これをSheet1の全セルに対して有効、それが無理なら表の範囲部分だけ有効とかって可能でしょうか。

 こうするといかがでしょう?
 
Public x As Variant
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count <> 1 Then: Exit Sub
    'If Target.Address(0, 0) <> "A1" Then: Exit Sub
    If Not IsNumeric(Target) Then: Exit Sub
    Application.EnableEvents = False
    If IsNumeric(x) Then
        Target = x + Target
    Else
        Target = Target
    End If
    Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    x = Target
End Sub
 
 (キリキ)(〃⌒o⌒)b

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.