对于每个新条目,有条件地将所选单元格从一张纸张复制到另一张纸张

时间:2015-01-16 20:20:03

标签: excel vba excel-vba

我有两个工作表。在表1中,我设置了一个宏来更改行的颜色并指定" TRUE"选择单元格或删除颜色值" TRUE"再次选择单元格的值。

Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
Dim kod As Worksheet
Set kod = Worksheets("kodas")
  If Target.Column <> 12 Then Exit Sub
  If Target.Row = 1 Then Exit Sub
  If Target.Cells.Count > 1 Then Exit Sub
  Application.EnableEvents = False
  If Target.Value <> "" Then
  Target.ClearContents
  Target.EntireRow.Interior.ColorIndex = 0
  Else
  Target.Value = "Taip"
  Target.EntireRow.Interior.ColorIndex = 4
  Target.EntireRow.Range(Cells(1), Cells(12)).Copy
  i = kod.Cells(2, 3)
  Sheets("Kodas2").Select
  ActiveSheet.Paste Destination:=Sheets("Kodas2").Cells(i, 1)
  End If
Application.EnableEvents = True
End Sub

*以上编辑过的代码对我有用 - i = kod.Cells(2, 3)是一个公式为:count(table4 [bla])+ 2,它给出了第一个用于粘贴的空行号。

我现在需要在选择单元格后完成一些额外的操作 - 或者 - 具有&#34; TRUE&#34;分配值: (1)来自同一行的特定单元格被复制并粘贴到工作表2 (2)这个动作每行只完成一次(无论选择单元格多少次) - 也许锁定行会起作用?

颜色和&#34; True&#34;显示sheet1中的哪些行适合在sheet2中继续工作,其中将添加更多数据。我基本上想要在输入时自动将合适的行汇集到下一个数据表中 - 重要的是将值复制到新表ByVal而不是ByRef。

1 个答案:

答案 0 :(得分:0)

这个怎么样(不使用For...Next Loop):

Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column <> 12 Then Exit Sub
  If Target.Row = 1 Then Exit Sub
  If Target.Cells.Count > 1 Then Exit Sub
  Application.EnableEvents = False
  If Target.Value <> "" Then
    Target.ClearContents
    Target.EntireRow.Interior.ColorIndex = 0
  Else
    Target.Value = "TRUE"
    Target.EntireRow.Interior.ColorIndex = 4
    Target.EntireRow.Copy
    DestLast = Sheets("Dest Sheet Name").Range("A" & Rows.Count).End(xlUp).Row + 1
    Sheets("Dest Sheet Name").Range("A" & DestLast).Paste
  End If
  Application.EnableEvents = True

End Sub

唯一的问题是当您再次选择单元格时,&#34;关闭&#34;这一行,它仍将在你的&#34;进一步的工作&#34;片材。