excel - excel 宏/vba if/then 循环通过多个工作表在单元格中查找特定文本
问题描述
尝试创建一个宏来打开一个 Excel 工作簿,转到第一个选项卡,在单元格 a1 中查找某些文本,如果匹配,则复制该工作表的一部分并粘贴到另一个工作簿中,然后转到下一个工作表. 如果不匹配,则转到下一个工作表并完成上述工作。然后以此类推。
我已经编写了宏,但它不起作用。我在移动到下一个工作表时遇到问题。
Sub CopyTierSummarySpecific()
Application.EnableCancelKey = xlDisabled
Dim folderPath As String
Dim Filename As String
Dim ws As Worksheet
Dim wb As Workbook
Dim i As Integer
folderPath = "C:\2019\03 Mar" 'contains folder path
If Right(folderPath, 1) <> "\" Then folderPath = folderPath + "\"
Filename = Dir(folderPath & "*.xls*")
Do While Filename <> ""
Application.ScreenUpdating = False
Set wb = Workbooks.Open(folderPath & Filename)
Sheets("Data").Select 'This is the first worksheet in all workbooks
For Each ws In ThisWorkbook.Worksheets
If Range("A1").Value = "Include" Then
Range("E16:AV" & Range("F" & Rows.Count).End(xlUp).Row + 1).Select
Selection.Copy
Windows("Test FPS.xlsm").Activate
Worksheets("Summary").Range("B" & Range("B" & Rows.Count).End(xlUp).Row + 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Else
End If
Next ws
解决方案
未测试
&
您使用运算符而不是运算符构建字符串+
。你的声明folderpath = folderpath + "\"
将失败。如果您的代码通过了此错误,则意味着以下两种情况之一(A:对于这种情况,您拥有On Error
这不是一个好的陷阱,或者B:您尚未针对尚未以 '\' 结尾的文件夹路径测试此代码- 限定你的对象。每个工作表对象都应使用该工作表进行限定。否则你可能会得到一些意想不到的输出,特别是因为你使用
.Select
- 删除
.Select
. 当您可以明确说明代码应在何处运行时,无需依赖所选内容 - 声明变量来存储最后一行将使代码更简洁,更易于阅读。(
cLR & pLR
)
Sub CopyTier()
Dim fn As String, path As String
Dim wb As Workbook, ws As Worksheet
Dim cLR As Long, pLR As Long
Dim Book As Workbook: Set Book = Windows("Test FPS.xlsm")
path = "C:\2019\03 Mar"
fn = Dir(path & "*.xls*")
Do While fn <> ""
Application.ScreenUpdating = False
Set wb = Workbooks.Open(fn)
If ws.Range("A1") = "Include" Then
cLR = ws.Range("F" & ws.Rows.Count).End(xlUp).Row
pLR = Book.Range("B" & Book.Rows.Count).End(xlUp).Offset(1).Row
ws.Range("E16:AV" & cLR).Copy
Book.Range("B" & pLR).PasteSpecial xlPasteValues
End If
Application.ScreenUpdating = True
Loop
End Sub
推荐阅读
- javascript - 以角度形式设置键和值
- c - 如果我们给 a=123 变量 a 的第一个字节,其值为 123,但如果我们给 a=1234,那么会出现其他值
- vue.js - 从组件更新数据
- asp.net-web-api - API 更新对象属性中的数组:我们应该发送 id 数组还是完整对象?
- java - 是什么使泛型类型参数的名称泛型?
- c# - on('click') jQuery 数据表中的第一页后 jQuery 不起作用
- android - 软键盘与 BottomSheetDialogFragment 内 EditText 下的视图重叠
- javascript - 使用 Node y Express 日期 Mongodb
- javascript - 如何获取所需格式的日期:ionic 4
- angular - 使用 @ionic/storage 使用 angular 和 ionic 3 刷新令牌