vba - VBA 代码擦除、复制和删除多张工作表中的行
问题描述
我在运行 2 个宏按钮时遇到一些问题。它们彼此非常相似,但宏 2 有点复杂,而且老实说……我是 VBA 新手,所以我一直在学习。我能够将下面的代码拼凑在一起,但后来了解到删除行会破坏工作簿流程,并且似乎无法让它像需要的那样工作。
宏 1(下面的示例):如果在 Q 列中输入了“移动”一词,并且在“项目”页面上点击了按钮(宏),则 excel 将删除特定单元格中的数据,但保持行不变(它不会'不删除行,只是删除单元格中的数据)并粘贴到名为'待定'的工作表上的下一个空白行。我在下面提供了一个链接,作为“项目”页面的示例。数据从“项目”表的第 5 行开始,其他所有数据从第 3 行开始。A、B 和 E 是下拉菜单。
宏 2:我需要一个与上述非常相似的单独宏。主要区别在于您在 R 列中键入“移动”并点击按钮 1. 运行宏 1 中的代码,但复制到名为“跟踪”而不是“待定”的工作表中的第一个空白行 2. 它搜索所有除了工作表“项目”和“跟踪”之外的其他工作表,并删除整行而不是仅擦除单元格。它仍然只是在“项目”页面上删除。
一般理解,宏 1 将用于将文件置于“待处理”状态,宏 2 将用于“关闭”文件并将其跟踪保留在“跟踪”中。
这是我为宏 1 提出的,它删除行并且有时会很慢/冻结 excel:
Sub RoundedRectangle4_Click()
Dim xRg As Range
Dim xCell As Range
Dim I As Long
Dim J As Long
Dim K As Long
I = Worksheets("Projects").UsedRange.Rows.Count
J = Worksheets("Pending").UsedRange.Rows.Count
If J = 1 Then
If Application.WorksheetFunction.CountA(Worksheets("Pending").UsedRange) = 0 Then J = 0
End If
Set xRg = Worksheets("Projects").Range("Q1:Q" & I)
On Error Resume Next
Application.ScreenUpdating = False
For K = 1 To xRg.Count
If CStr(xRg(K).Value) = "Move" Then
xRg(K).EntireRow.Copy Destination:=Worksheets("Pending").Range("A" & J + 1)
xRg(K).EntireRow.Delete
If CStr(xRg(K).Value) = "Move" Then
K = K - 1
End If
J = J + 1
End If
Next
Application.ScreenUpdating = True
End Sub
项目截图
再一次,我真的很感激任何帮助,如果你有任何笔记,我很想学习如何在 excel 中使用类似的东西以备将来使用。
解决方案
推荐阅读
- php - 加密密码哈希作为胡椒的替代品
- data-structures - 如何在 Rust 中定义双向树结构?
- python - 如何根据 DFA1 和 DFA2 的转换创建 DFA 联合转换字典
- python - 通过键和值合并两个字典
- python - 如何在单词列表中查找子字符串
- node.js - 在另一个函数调用回调函数出错后,async.parallel 的函数正在工作,为什么?
- r - 不同层中的独立数据和组颜色
- java - 如何从组合中排除 ToolBar
- r - 根据列表/字符选择目录中的文件,出现模式 =
- javascript - Python Flask 不显示 Javascript