Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6811 / 13646 ツリー ←次へ | 前へ→

【43011】セルの値が変更した時のコメント ゆう 06/9/29(金) 9:06 質問[未読]
【43012】Re:セルの値が変更した時のコメント パン 06/9/29(金) 9:26 発言[未読]
【43014】Re:セルの値が変更した時のコメント ゆう 06/9/29(金) 9:42 質問[未読]
【43013】Re:セルの値が変更した時のコメント ひげくま 06/9/29(金) 9:37 発言[未読]
【43016】Re:セルの値が変更した時のコメント ゆう 06/9/29(金) 9:46 お礼[未読]
【43015】Re:セルの値が変更した時のコメント だるま 06/9/29(金) 9:46 回答[未読]
【43017】Re:セルの値が変更した時のコメント ゆう 06/9/29(金) 10:09 お礼[未読]
【43019】Re:セルの値が変更した時のコメント ゆう 06/9/29(金) 10:11 お礼[未読]

【43011】セルの値が変更した時のコメント
質問  ゆう  - 06/9/29(金) 9:06 -

引用なし
パスワード
   おせわになります。

セルを更新した時、変更前のデータをコメントとして残しておきたいのですが、
可能でしょうか?
コメントの
Worksheet_Changeを使用したとき、変更前のデータはどう取ればよいのでしょうか?

例えば、A1セルの内容を AAからBB、BBからCCに変更したとき(変更日も表示)
コメントには 『9/27 変更前 AA
        9/28 変更前 BB』のような感じで、
履歴として残しておきたいのです。
どなたかご教授願えないでしょうか。
よろしくお願いします。

【43012】Re:セルの値が変更した時のコメント
発言  パン E-MAIL  - 06/9/29(金) 9:26 -

引用なし
パスワード
   ▼ゆう さん:

下のコードをテストしてみてください、
あらかじめ”記録”という、シートを作成しておき、プロシージャを記録を残しておきたいシートに記入します。


Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Adr As String
  Adr = ActiveCell.Address
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Application.Undo
  With Sheets("記録").Range("A65536").End(xlUp).Offset(1)
    .Value = Target.Address(False, False)
    .Range("B1").Value = Target.Value
    Application.Undo
    .Range("C1").Value = Target.Value
    .Range("A1:C1").Borders.LineStyle = xlContinuous
  End With
  Range(Adr).Activate
  Application.EnableEvents = True
  Application.ScreenUpdating = True
End Sub

>おせわになります。
>
>セルを更新した時、変更前のデータをコメントとして残しておきたいのですが、
>可能でしょうか?
>コメントの
>Worksheet_Changeを使用したとき、変更前のデータはどう取ればよいのでしょうか?
>
>例えば、A1セルの内容を AAからBB、BBからCCに変更したとき(変更日も表示)
>コメントには 『9/27 変更前 AA
>        9/28 変更前 BB』のような感じで、
>履歴として残しておきたいのです。
>どなたかご教授願えないでしょうか。
>よろしくお願いします。

【43013】Re:セルの値が変更した時のコメント
発言  ひげくま  - 06/9/29(金) 9:37 -

引用なし
パスワード
   こんにちは。

▼ゆう さん:
>セルを更新した時、変更前のデータをコメントとして残しておきたいのですが、
>可能でしょうか?
>Worksheet_Changeを使用したとき、変更前のデータはどう取ればよいのでしょうか?

ゆうさんが求めている回答ではないですが…

仕様を少し変えて、更新したときの値をコメントに残すようにしてみてはいかがですか?

>例えば、A1セルの内容を AAからBB、BBからCCに変更したとき(変更日も表示)
>コメントには 『9/27 変更前 AA
>        9/28 変更前 BB』のような感じで、

---コメント---
9/26更新 AA
9/27更新 BB
9/28更新 CC
-------

ゆうさんが実現したい状態よりは、コメント内容が一回分(最終更新分)増えてしまいますが、更新履歴の機能は十分に果たせると思いますよ。

最終更新内容はセルに書いてあるから、どうしてもコメントには書きたくない、というのであれば、仕方ありませんが。

【43014】Re:セルの値が変更した時のコメント
質問  ゆう  - 06/9/29(金) 9:42 -

引用なし
パスワード
   ▼パン さん:
早急の回答ありがとうございます。
プログラム実行させていただきました。
こんな簡単に履歴がとれるんだと驚きました。

ただ、説明不足ですみません。
セルごとのコメントに、変更履歴を表示させたいのですが、
このプログラムを変更してできますか??

【43015】Re:セルの値が変更した時のコメント
回答  だるま WEB  - 06/9/29(金) 9:46 -

引用なし
パスワード
   ▼ゆう さん:
>おせわになります。
>
>セルを更新した時、変更前のデータをコメントとして残しておきたいのですが、
>可能でしょうか?
>コメントの
>Worksheet_Changeを使用したとき、変更前のデータはどう取ればよいのでしょうか?
>
>例えば、A1セルの内容を AAからBB、BBからCCに変更したとき(変更日も表示)
>コメントには 『9/27 変更前 AA
>        9/28 変更前 BB』のような感じで、
>履歴として残しておきたいのです。
>どなたかご教授願えないでしょうか。
>よろしくお願いします。

こんにちは

こんな感じでいかがでしょうか。^d^

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  Dim V0 As String
  Dim V1 As String
  Dim Cmt As Comment
  Dim Msg As String
  
  With Target
    If .Count <> 1 Then Exit Sub
    V1 = .Value
    Application.EnableEvents = False
    Application.Undo
    V0 = .Value
    .Value = V1
    Application.EnableEvents = True
    
    On Error Resume Next
    Set Cmt = .Comment
    On Error GoTo 0
    If Cmt Is Nothing Then
      Set Cmt = .AddComment
    End If
    
    Msg = Format(Date, "m/d") & " 変更前 "
    With Cmt
      If .Text = "" Then
        .Text Msg & V0
      Else
        .Text vbLf & Msg & V0, Len(.Text), False
      End If
    End With
  End With
End Sub

【43016】Re:セルの値が変更した時のコメント
お礼  ゆう  - 06/9/29(金) 9:46 -

引用なし
パスワード
   ▼ひげくま さん:
回答ありがとうございます。

>仕様を少し変えて、更新したときの値をコメントに残すようにしてみてはいかがですか?
>

そうですね。そういう考え方もあったんですね。
1人で考えていると、考えが一方に固まってしまって、
そんな考え方は全く思いつきませんでした。
この方が、簡単で適格かもしれませんね。
ありがとうございました。こちらの考え方でも検討してみます!!

【43017】Re:セルの値が変更した時のコメント
お礼  ゆう  - 06/9/29(金) 10:09 -

引用なし
パスワード
   だるまさんへ

回答ありがとうございます。
私が求めていた答えです。
参考にさせていただきます。
私がやりたい事、うまく理解していただき
本当に感謝しています。
ありがとうございました。

【43019】Re:セルの値が変更した時のコメント
お礼  ゆう  - 06/9/29(金) 10:11 -

引用なし
パスワード
   回答いただいた全てのみなさまへ

説明不足&表現不足な質問に対し、ご丁寧な回答ありがとうございました。
全ての方の回答を参考にして、知識を深めて行きたいと思います。
また分からないことがあった時は、またご教授していただけると
ありがたいです。
本当にありがとうございました。

6811 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free