- ベストアンサー
Excel VBAについて教えてください
- Excel VBAを使用して、指定した条件でセルの値を加算し、入力履歴と入力時間を記録する方法について教えてください。
- また、別の範囲でも同様の処理を行い、合計を表示するセルも作成する方法を教えてください。
- Excelのバージョンは2003です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>ちなみにA11~E11とA23~E23は合計を表示するセルにしたいです。 事前にSUM関数で数式を入れて下さい。 >同一シートのA1~E10のセルとA12~E22にも同じよう別々に処理できるように設定したい Private Sub Worksheet_Change(ByVal Target As Range) Dim rr As Range, rs As Range, x, y Set rr = Intersect(Target, Range("A1:E10")) Set rs = Intersect(Target, Range("A12:E22")) If rr Is Nothing And rs Is Nothing Then Exit Sub If Target.Value = "" Then Exit Sub x = Target.Value With Application .ScreenUpdating = False .EnableEvents = False .Undo y = Target.Value Target.Value = x + y .EnableEvents = True .ScreenUpdating = True End With End Sub こうゆう事でしょうか?
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
質問の意味がわからない。 質問のコード例は入力セルがA1セル1つ。 履歴と入力時間は、C列とD列の下方行に無限(オーバーですが) ーー 対する本件はA1セルに当たるものが複数ですね。 A1:E1? C、D列に当たるそれぞれは、どの列・行の範囲に設定するのか? ーー A1に入力するとA11にその都度,加算するのか?。 履歴・時間はどのセルにどうする? >A1~E10のセルとA12~E22にも同じよう別々に処理できるように設定したいのですが 意味不明。 === コード例などまず出すより、自分のしたいことを、自分の言葉で説明すること。 実例ぐらい作って、挙げて質問したら。 コードの要求は、丸投げに近いが、コード例がなくても回答者が考えてくれるでしょう。 過去質問のコード例を掲出するなら最後に参考程度でよいのでは。 素人は似ていると思っても、根本的にコードを変えないとならない場合もある。
お礼
そうですね。自分ではどう説明していいか、わからずに中途半端に投稿するのはないですよね。反省しています。すみませんでした。
- okormazd
- ベストアンサー率50% (1224/2412)
質問に書かれたコードは、 A1に入力された値が、加算されてA1に表示され、その履歴がC列とD列に表示されるものです。 あなたのセルの指定では、どこをどうしたいのかこのコードに見合ったものになっていないのではないですか。 加算されて表示されるセルの範囲と、それぞれのセルに対応した履歴を表示させるセルの範囲を指定してくれなければ、 答えようがないですよ。
補足
すみません。 「C列に入力履歴、D列に入力時間を記録。 If Target.Address <> "$A$1" Then Exit Sub の$A$1を変えることによって他のセルにも設定できる。」というところは不要でした。入力履歴や入力時間は表示させたくないのですが、そのまま引用してしまいました。
お礼
ありがとうございます。すごいです。仕事で使っているシートがなんとかならないかと、ずっと悩んでいたことが、やっと解決することができました。私なんかのわかりにくい質問に親切に教えていただき感謝しています。