2016-05-24 42 views
0

我能夠運行驗證和更改事件觸發對一個細胞的工作(參考同時在列(M)複製多個小區中的數據的時候,這裏是做出改變的事件和數據驗證工作M6)。當用戶從下拉列表中選擇「有效」或「無效」應該填充在相鄰列(N6,O6)的用戶名稱和日期,這是如果我選擇從下拉選項下工作的罰款或複製一次評估一個單元格。如何使用Excel宏

不知何故,當我一次複製多個單元格中的值(M8:M10)時宏不起作用,在使用自動填充選項填充該列單元格中的記錄時也無法正常工作。還試圖插入一個無效的數據單元M8「adsadasdad 」,驗證工作,但將在多個小區中的非有效數據時,驗證無法正常工作。

請找宏代碼

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim LastRow As Long 
    Set MainWB = ThisWorkbook 
    LastRow = MainWB.Worksheets("LDVC_data").Cells(MainWB.Worksheets("LDVC_data").Rows.Count, "A").End(xlUp).Row 
    For i = 2 To LastRow 

    If Target.Address = Range("M" & i).Address Then 
    If Range("M" & i) = "Valid" Or Range("M" & i) = "Not Valid" Then 

     ActiveSheet.Range("N" & i).Value = (Environ$("Username")) 
     ActiveSheet.Range("O" & i).Value = Now 
     ElseIf (Range("M" & i) = "[enter image description here][1]") Then 
     ActiveSheet.Range("N" & i).Clear 
     ActiveSheet.Range("O" & i).Clear 
     Else[enter image description here][1] 
     MsgBox ("Kindly enter valid value") 
     Range("M" & i) = "" 
    End If 
    End If 
    Next i 
End Sub 

回答

0

成功地捕捉變化,並在多個細胞進行數據驗證。 對代碼進行了以下更改。

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim LastRow As Long 
Set MainWB = ThisWorkbook 
Dim myRange As Range 
Set myRange = Target 
LastRow = MainWB.Worksheets("LDVC_data").Cells(MainWB.Worksheets("LDVC_data").Rows.Count, "A").End(xlUp).Row 
For Each targetCell In Target 
For i = 2 To LastRow 
    If targetCell.Address = Range("M" & i).Address Then 
     If Range("M" & i) = "Valid" Or Range("M" & i) = "Not Valid" Then 
      ActiveSheet.Range("N" & i).Value = (Environ$("Username")) 
      ActiveSheet.Range("O" & i).Value = Now 
     ElseIf (Range("M" & i) = "") Then 
      ActiveSheet.Range("N" & i).Clear 
      ActiveSheet.Range("O" & i).Clear 
     Else 
      MsgBox ("Kindly enter valid value") 
      Range("M" & i) = "" 
     End If 
    End If 
Next i 
Next targetCell 
End Sub