- ベストアンサー
データ更新時の処理について(エクセルVBA)
セルA2に数字の66が入っているとして、セルA2を67に更新した瞬間に67-66という処理をさせたいのですが、下記の???の部分が分かりません。どなたか、教えてください。お願いします。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$2" Then ??? End If End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 全体がわからないのですが・・・、 ポイントは、「あるセルを更新した際、そのセルの更新後の値-更新前の値を取得したい」という事でいいですか? 変更前の値を保持するために、処理が2段階になります・・・。 書き方はいろいろですが、例として・・・、 Dim myBefor Private Sub Worksheet_Change(ByVal Target As Range) Dim myDiff Dim myAfter If Target = Sheet1.Cells(1, 1) Then myAfter = Sheet1.Cells(1, 1).Value myDiff = myAfter - myBefor MsgBox myDiff End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If ActiveCell = Sheet1.Cells(1, 1) Then myBefor = Sheet1.Cells(1, 1).Value End If End Sub こんな感じかな? (^^ゞ
その他の回答 (2)
- shishishishi
- ベストアンサー率39% (362/921)
No1です。 最初だけ、 セルAA2に前の体重 セルAB2に前の測定日を入れてください。 あとは自動でできるはずです。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$2" Then Exit Sub X = Range("AA2").Value y = Target.Value - X z = Range("B2") - Range("AB2") Range("AA2") = Target.Value Range("AB2") = Range("B2") If z = 0 Then MsgBox y & "キロ変化しました。" _ + Chr(&HD) + Chr(&HA) + "同日中は計算できません。", vbExclamation, "(^^ゞ" Exit Sub End If If y < 0 Then a = (58 - Target.Value) / (y / z) MsgBox Format(z, "##日で") & y & "キロです。" _ + Chr(&HD) + Chr(&HA) + "あと" & Format(a, "##日で") _ + Chr(&HD) + Chr(&HA) + "58キロ達成です!", vbInformation, "(^^ゞ" Else MsgBox Format(z, "##日で") & y & "キロ増加しました。" _ + Chr(&HD) + Chr(&HA) + "58キロ達成はほど遠いです!", vbCritical, "(^^ゞ" End If End Sub
お礼
ありがとうございます。参考にさせてもらいます。
- shishishishi
- ベストアンサー率39% (362/921)
よく質問を理解していないかもしれませんが・・・。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$2" And Target.Value = 67 Then Target.Value = 67 - 66 End If End Sub
お礼
すいません・・・。私の説明不足でした・・・。具体的にゆうと、セル(A2)に今の体重を入力して、いつ(何年何月何日)目標の58kgになるかを表示させたい、そういうプログラムを作りたいのです。なので、A2の更新の際に、(更新前のデータ-更新後のデータ=やせた分)をしたいのです。その後、今日の日付(B2にTODAY関数で表示している)+(58kg ÷ やせた分)をさせたいのです。
補足
すいません。ありがとうございました。 暇な時に回答がほしいとありますが、 じつはすぐほしいです。どなたかお願いします。
お礼
なんかわかるような、分からないような・・・。 あとでじっくり眺めようかと思います。もしかしたら一歩でも進めるかも。 お腹減ったので、ご飯食べます。それからします。 ありがとうございます。(^_^.)