【问题标题】:Copy autofiltered cells复制自动过滤的单元格
【发布时间】:2014-09-24 02:39:42
【问题描述】:

我正在尝试编写一个可以做几件事的脚本。我使用宏来完成基础工作,但我正在尝试为其余部分查找代码。我有一个 15 列和多行的工作表(此工作表由另一个程序制作,每次运行时都会更改)。我必须通过它并删除某些东西。我需要一个脚本来

  1. 删除第 2 行(总是没用)--完成
  2. 将 N 列的宽度设为 10--完成
  3. 将 D 列设为 5 位数字--完成
  4. 设置自动过滤器--完成
  5. 查找 O 列包含空白或“U”的所有行--完成
  6. 将原始工作表中的这些行剪切并粘贴到同一工作簿中的新行中
  7. 自动筛选,使 M 列按从小到大的顺序排列
  8. 有一个弹出窗口询问最大值是多少
  9. 在第一次粘贴后,剪切并粘贴 M 列包含的数字大于您在弹出窗口中输入的数字的任何行。
  10. 过滤列 K 以仅显示列 K 包含空白的行
  11. 按日期排列,第 N 列
  12. 像之前一样剪切和粘贴任何行,其中 N 列包含六个月前一个月的第一天之前的日期(例如,今天,即 2014 年 3 月 1 日)
  13. 删除第二个工作表中除 D 和 E 之外的所有列。

我有所有操作的代码,我只需要为最大值(上面的第 8 步)和日期(上面的第 12 步)获取弹出对话框。我使用了 5 种不同的脚本。第一个在开头(1-4)执行格式化步骤。第二个是“U”搜索(5-6)。第三个进行最大搜索(7-9),第四个进行最终搜索(10-12)。第五个对第二张纸 (13) 进行清理。

我假设当我进入对话框时,我会将对话框中给出的答案分配给变量,并在代码中使用它?我该怎么做呢?

【问题讨论】:

  • 欢迎来到 StackOverflow。你已经尝试过什么? SO 不是免费的软件开发服务,但如果您在寻找解决方案时遇到了困难,如果您能展示您目前的进展,我们可以为您提供更好的帮助。

标签: vba excel


【解决方案1】:

你在这里要求很多步骤,我的建议是分解你的代码。你有 13 件不同的事情要做,我会单独写下每件。根据您的代码,在我看来,您正在使用宏记录器来获得所需的结果,然后对宏记录器生成的内容和 VBA 进行逆向工程。

所以这里有一个快速的步骤可以帮助您前进。

我会创建一个主类

Sub Main()
call Macro4()
End Sub


Sub Macro4()
'
' Macro4 Macro
'
'
'Delete Row 2
Rows("2:2").Select
Selection.Delete Shift:=xlUp
Range("N6").Select
'Show full dates
Columns("N:N").EntireColumn.AutoFit
'Engage Autofilter
Selection.AutoFilter
'Make the Account Number format 5 digits
Columns("D:D").Select
Selection.NumberFormat = "00000"
'Show All in Column O (single status) to be deleted
ActiveWorkbook.Worksheets("50100").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("50100").AutoFilter.Sort.SortFields.Add Key:=Range( _
    "O1:O4222"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal
With ActiveWorkbook.Worksheets("50100").AutoFilter.Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
Range("O5").Select
ActiveSheet.Range("$A$1:$O$10000").AutoFilter Field:=15, Criteria1:="=U", _
    Operator:=xlOr, Criteria2:="="
End Sub

为了对您有更多帮助,我需要您的工作表的标签名称,您可以发一份副本,我明天再看。

【讨论】:

  • 因为我只是想尽可能多地完成,我最终做了几个不同的(1-5、7、10-11、13),以及所有我需要弄清楚的是如何让它将自动过滤器显示的内容剪切并粘贴到一个新的工作表中,并弹出一个询问日期和最大值的弹出窗口。那么,将它们全部连接在一起是否现实?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-03
  • 2022-08-18
  • 1970-01-01
  • 2016-07-05
  • 2016-08-27
  • 1970-01-01
相关资源
最近更新 更多