[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セル A1 に5を入れて、セル B1 は常に合算の状態にしたのですが・・』(セルシオ)
初心者です。セル A1 に5を入れて、セル B1 は常に合算の状態にしたのですが・・・・、 たとえは、セル A1 に5を入れると セル B1 は5、 そのままの状態で セル A1 に10を入れると セル B1 は15、 そして、今度は セル A1 に8を入れると セル B1 は23と常に合算されるようにしたいのですが、 どのようにしたら良いのでしょうか?博識者の方宜しくご指導ください。お願い致します。
マクロを使うことになりますが、おすすめはしません。入力にエラーがあったとき、 回復が不可能になるからです。入力の履歴は残すべきだと考えます。 たくさんのデータを見えないようにしたいのなら、入力と表示を別のシートにするとかで 対処できると思います。
一応、マクロを書いてみますと、
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub Application.EnableEvents = False Range("B1").Value = Range("B1").Value + Target.Value Application.EnableEvents = True End Sub
このコードをシートモジュールに貼り付けます。 (シートタブ=Sheet1 とか表示される部分を右クリックし、「コードの表示」を 選択して出てくるのがシートモジュールです。)
繰り返しますが、この方法はお勧めはしません。
(P)
過去にほとんど同内容の相談がありました。 [[20041020105248]]『同一セル内での計算と内訳表示』(tasuketeman) 実用的にはどこかに入力用のセル範囲を用意しておいて、そのセル範囲の集計結果を SUM関数で出しておくものであると思います。 (みやほりん)(-_∂)b
VBAでならSum関数で計算させないと、文字列でエラー...
Private Sub Worksheet_Change(ByVal Target As Range) With Target.Cells(1,1) If .Address(0,0) <> "A1" Then Exit Sub Application.EnableEvents = False .Offset(,1).Value = Application.Sum(.Resize(,2)) '.Offset(,1).Value = Application.Sum(.Offset(,1).Value, .Value) Application.EnableEvents = True End With End Sub (seiya)
↑ Applicaiton.EnableEvents → Application.EnableEvents の スペル違いとして、Sumの引数に Valueプロパティを指定すると、 文字列の場合はやっぱりエラーですね。Sum(.Resize(, 2)) のように 範囲だけなら大丈夫のようです。 Pさんのコードに On Error Resume Next を入れとくだけもよさそうです。 (純丸)(o^-')b
ははーん 範囲指定じゃないとだめなんですね? 純丸さんありがとうございました。 (seiya)
シート上で考えると、 範囲の場合、 =SUM(A1,B1) A1 が 文字列 a でもエラーにはならない。 Valueを付けた場合、 =SUM("a",1) エラーになる。 こんなことなのでしょう。 (純丸)(o^-')b
そうなんです。 そんな記憶があったので...
Appllication.Sum(.Offset(,1),.Cells) もしこれでエラーにならなかったら、RangeのDefault Property は Value ではないということになりますね? (seiya)
Application.Sum(.Offset(, 1), .Cells) だと確かにエラーになりませんが、 この場合、Property が省略されている訳ではなく、セル範囲としての .Cells なのではないかと思います。seiyaさん相手にVBAのことで意見を 言えるほどのスキルは無いので、あくまで私の考えとして、ですが。 はずしてたらごめんなさいです。 (純丸)(o^-')b
純丸さん、
RangeのDefault propertyは Item ということでしょう。 .Offset(,-1).Item(1,1), .Cells.Item(1,1) ということになっているはずです。 ということで、やはりPropertyは省略すべきではありませんね... (seiya)
Itemメソッドを初めて見たことだし、ややこしくなりそうなので コメントは差し控えますが、「Propertyは省略すべきではない」という事には 諸手を揚げて賛成します。 (純丸)(o^-')b
(超初心者のセルシオ)
セルシオさん、 何をどうしたいのかを「詳しく」説明してください。 初心者だったら、「応用」するなんてことは一切考えないでください。 応用できる力があれば、ある程度書けているはずですので。 (seiya)
要するに「ちょこっと工夫」では実現できない機能を要求している、ということ。 まずは最初の提示の条件で実験してみては? 【利用の仕方】 シート見出し右クリック、コードの表示を選択して、 seiyaさんのコードをコードウィンドウに貼り付け。 Alt押しながらQキーを押してエクセルに戻って、コードを貼り付けたシートの A1セルに数値入力を繰り返すと、B1に数値が足しこまれていきます。 こういうのを便利だ、と思うのであれば、マクロを勉強するのも良いでしょう。 個人的には賛成しかねますが。 (みやほりん)(-_∂)b
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.