0

誰かが私を助けてくれるのではないかと思います。

以下のコードを使用して Excel ワークシートへの変更を追跡し、範囲 B5:Q2000 内のセルの値が変更されたときに、日付を列 'A' に、列 'No' を列 'AE' に自動的に挿入します。

Option Explicit
    Public preValue As Variant
    Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Cell As Range, res As Variant
      If Target.Cells.Count > 1 Then Exit Sub
       On Error Resume Next
       If Not Intersect(Target, Range("B5:Q2000")) Is Nothing Then
       If Target.Value <> preValue And Target.Value <> "" Then
            Application.EnableEvents = False
            Range("A5:A" & Target.Row).Value = Date
            Range("AE5:AE" & Target.Row).Value = "No"
            Application.EnableEvents = True
            Target.ClearComments
          '  Target.AddComment.Text Text:="Previous Value was " & preValue & Chr(10) & "Revised " & Format(Date, "dd-mm-yyyy") & Chr(10) & "By " & Environ("UserName")
            Target.Interior.ColorIndex = 35
        End If
    End If
    On Error GoTo 0

    End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count = 1 Then preValue = Target.Value
End Sub

残念ながら、解決方法がわからない問題に遭遇しました。

ユーザーがセル D5 と D10 にデータを挿入すると、日付と「いいえ」という単語が、これら 2 つの行の正しい列 (A と AE) に追加されます。

ただし、残念ながら、ユーザーがこれらの行に他のデータを入力していなくても、D6-D9 の間の行のこれらの列に「いいえ」の値と日付も追加されます。問題がどこにあるか。

誰かがこれを見て、これを解決する方法についてのガイダンスを提供できるかどうか疑問に思いました.

多くの感謝と親切な敬意

4

1 に答える 1

0

現在のコードは、行から行までの変更を適用してA5AE5ますTarget's。選択したセルの行のみをコードで変更するには、次のように変更します。

Range("A5:A" & Target.Row).Value = Date
Range("AE5:AE" & Target.Row).Value = "No"

これに:

Range("A" & Target.Row).Value = Date
Range("AE" & Target.Row).Value = "No"

Cellまた、変数orを使用していないようですres。そのコード行を削除したい場合があります。

于 2012-10-28T15:45:02.037 に答える