2014-09-04 33 views
0

與其他許多其他類似的問題。對於上下文,希望使用此代碼爲學生提供考勤。理想情況下,用戶滾動列表併爲每個缺席的學生設置1。然後填充缺席列表。如果一個單元格包含特定值,則將某些數據複製到下一個可用行中

我的代碼相當簡陋,但非常接近我想要的功能。但是,如果多於一行的行中包含「1」,那麼它將從其中包含1的所有行中提取所有數據。我只想讓它拉出1被輸入的那一行。我覺得我是一線代碼遠離解決這個問題。範圍E:我活動工作表中的J是我需要的數據點,加上今天的日期。

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim i As Integer 

If Not Application.Intersect(Range("A:A"), Target) Is Nothing Then 
    For i = 1 To 9999 
     If Range("A" & i).Value = 1 Then 
      Sheets("Absent List").Range("A" & Rows.Count).End(xlUp).Offset(1).Value = Range("E" & i).Value 
      Sheets("Absent List").Range("B" & Rows.Count).End(xlUp).Offset(1).Value = Range("F" & i).Value 
      Sheets("Absent List").Range("C" & Rows.Count).End(xlUp).Offset(1).Value = Range("G" & i).Value 
      Sheets("Absent List").Range("D" & Rows.Count).End(xlUp).Offset(1).Value = Range("H" & i).Value 
      Sheets("Absent List").Range("E" & Rows.Count).End(xlUp).Offset(1).Value = Range("I" & i).Value 
      Sheets("Absent List").Range("F" & Rows.Count).End(xlUp).Offset(1).Value = Range("J" & i).Value 
      Sheets("Absent List").Range("G" & Rows.Count).End(xlUp).Offset(1).Value = Date 
      End If 
      Next i 
     End If 
End Sub 

感謝,

回答

0

通過遍歷列A,你總是會在你碰到的1

值相反,如果你設置iTarget.Row然後複製數據你將只複製所更改行的更改。

Private Sub Worksheet_Change(ByVal Target As Range) 

    Dim i As Integer 

    If Not Application.Intersect(Range("A:A"), Target) Is Nothing Then 
     i = Target.Row 
     If Range("A" & i).Value = 1 Then 
      ' Do your copying 
     End If 
    End If 
End Sub 
相關問題