我有两个工作表。在表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。
答案 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;片材。