0

我正在尝试编写一个程序,我必须首先将过滤器应用到具有 6 个可能过滤器值(1、2、3、4、5、6)的 S 列。应用过滤器后,我必须复制 T 列中最后使用的单元格并将其粘贴到 V 列中下一个可用(空白)可见单元格中,过滤器仍处于打开状态。成功粘贴值后,如果我要再次为相同的值应用过滤器,它应该通过找到下一个可用的可见空白单元格列 V 并粘贴复制的数据来重复相同的操作。

循环应该继续工作,对于下一个实例,根据我可能对列中的值 2 应用过滤器的条件,我必须复制最后使用的列 T 数据并使用过滤器粘贴到 V 列中下一个可用的可见单元格仍在进行中。

我尝试了许多可能性,例如 End(xlUp) 它仅在从 T 列复制值之前有效,并且我也无法将其粘贴到 VI 列尝试使用 Application.SendKeys 方法。它并不总是有效。

我粘贴在下面的以下代码,我尝试使用 End(xlup) 复制列 T 中最后使用的单元格的值,这一直有效,问题在于在列中找到正确的下一个可用可见单元格V 粘贴相同,有时它可以工作,有时它粘贴在隐藏的行中

在此处输入图像描述

    Sub auto_filter2()

Dim ws As Worksheet
Dim ds As Worksheet
Dim SrcLastRow As Long, DestLastRow As Long

Set ws = Worksheets("PVF")
Set ds = Worksheets("Filtered")

Worksheets("PVF").Range("T4").AutoFilter Field:=19, Criteria1:="2"

MsgBox "Its Working"


Sheets("PVF").Select
SrcLastRow = Cells(Rows.Count, "T").End(xlUp).Row
Range("T" & SrcLastRow).Select
Selection.Copy
MsgBox SrcLastRow & " is the row"


Sheets("PVF").Select
Range("V5").End(xlDown).Select
Application.SendKeys "{DOWN}"
Application.SendKeys ("^v{Enter}")

ws.AutoFilterMode = False

End Sub

Sub auto_filter()

Dim ws As Worksheet
Dim ds As Worksheet
Dim SrcLastRow As Long, DestLastRow As Long

Set ws = Worksheets("PVF")
Set ds = Worksheets("Filtered")

Worksheets("PVF").Range("T4").AutoFilter Field:=19, Criteria1:="4"

MsgBox "Its Working"


Sheets("PVF").Select
SrcLastRow = Cells(Rows.Count, "T").End(xlUp).Row
Range("T" & SrcLastRow).Select
Selection.Copy
MsgBox SrcLastRow & " is the row"


Sheets("Filtered").Select
DestLastRow = Cells(Rows.Count, "C").End(xlUp).Row
Range("C" & DestLastRow).Select
ActiveSheet.Paste
Application.CutCopyMode = False

Dim cel As Range
With Sheets("PVF")
Set cel = .AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible)(1, 1)

If cel = "" Then
.Cells(cel.Row, "V") = Sheets("Filtered").Range("C3")
Else
MsgBox (" Non- empty box")
End If

End With

ws.AutoFilterMode = False

End Sub

我希望尽快解决这个问题。非常感谢您提前提供的解决方案。

4

0 回答 0