vba - 我如何将宏模块与其余代码结合起来
问题描述
我是初学者,因此非常感谢任何帮助,我想将此宏与第一个代码结合起来,但我不知道该怎么做或放在哪里。
这是第一个代码(它有一个错误,但我已经有了如何修复它的答案,所以没关系):
Sub foo()
Dim ws As Worksheet: Set ws = Sheets("inbd")
Dim wsDestination As Worksheet: Set wsDestination = Sheets("test")
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
ws.Range("A1:N" & LastRow).AutoFilter Field:=1, Criteria1:=Worksheets("test").Cells(1, 26).Value
ws.Range("f2:f" & LastRow).SpecialCells(xlCellTypeVisible).Copy Range("C6")
DestinationRow = wsDestination.Cells(wsDestination.Rows.Count, "C").End(xlUp).Row + 1
wsDestination.Range("C" & DestinationRow).PasteSpecial xlPasteValues
Application.CutCopyMode = False
ws.Range("A1:N" & LastRow).AutoFilter Field:=1
End Sub
目前第一个代码过滤并将我想要的参数中的表数据复制到另一个工作表中,但我需要一个更复杂的副本版本,所以我将它记录在宏中,它超长,看起来像这样:
Sub Macro8()
'
' Macro8 Macro
'
'
Sheets("INBD").Select
Range("Table1[Description]").Select
Selection.Copy
Sheets("Sheet1").Select
Range("Table19[Description]").Select
ActiveSheet.Paste
Range("D18").Select
Sheets("INBD").Select
Range("Table1[Invoice Date]").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("Table19[Invoice '#]").Select
ActiveSheet.Paste
Sheets("INBD").Select
Range("Table1[Invoice '#]").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("Table19[Invoice '#]").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Sheets("INBD").Select
Range("Table1[HS Code]").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("Table19[HS Code]").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Sheets("INBD").Select
Range("Table1[Unit]").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("Table19[M. Unit]").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Range("Table19[Description]").Select
Application.CutCopyMode = False
Selection.Copy
Range("E13").Select
ActiveSheet.Paste
Sheets("INBD").Select
Range("Table1[QTY]").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("Table19[QTY]").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Sheets("INBD").Select
Range("Table1[Unit Price]").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("Table19[Unit Price]").Select
ActiveSheet.Paste
Sheets("INBD").Select
Range("Table1[Curr.]").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("Table19[Curr]").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Rows("13:22").Select
Rows("13:22").EntireRow.AutoFit
Selection.RowHeight = 30
Application.CutCopyMode = False
With Selection
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
它的作用是将值复制到表格中,复制到特定列中,在我用一堆东西写的表格下方,并将字体颜色设为白色,这样当它复制时,表格将单元格向下移动,因此不会改变桌子下面的任何东西,并在两者之间留出一些空间。在此之后,我将记录一个宏,该宏将删除表中的所有行和表中的任何其他数据,以清除文档中的新条目。
解决方案
组合两个宏的一种解决方案是在第一行和最后一行之间键入第二个宏中的所有内容,然后粘贴到您需要在第一个代码中执行的位置。
另一种解决方案是通过简单地键入从第一个代码中“调用”第二个宏
Call Macro8
在您的示例中:
Sub foo()
Dim ws As Worksheet: Set ws = Sheets("inbd")
Dim wsDestination As Worksheet: Set wsDestination = Sheets("test")
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
ws.Range("A1:N" & LastRow).AutoFilter Field:=1, Criteria1:=Worksheets("test").Cells(1, 26).Value
ws.Range("f2:f" & LastRow).SpecialCells(xlCellTypeVisible).Copy Range("C6")
DestinationRow = wsDestination.Cells(wsDestination.Rows.Count, "C").End(xlUp).Row + 1
wsDestination.Range("C" & DestinationRow).PasteSpecial xlPasteValues
Application.CutCopyMode = False
ws.Range("A1:N" & LastRow).AutoFilter Field:=1
Call Macro8 ' Or Copy Paste the whole other code here
End Sub
我仍然强烈建议您关注Foxfire 和 Burns And Burns关于如何避免在 Excel VBA 中使用 Select的评论中的链接。
推荐阅读
- react-native - 使用 npm 安装 react-navigation 会出错
- html - Outlook 预览功能通过 HTML 代码错误地显示符号
- python - FastAPI - 未填充 ENUM 类型模型
- javascript - 将文件选择器数据存储在隐藏的输入中
- discord - 通过服务器昵称上的表情符号接收角色
- python - Selenium Python:预期“句柄”是一个字符串,得到 [object Undefined] undefined
- vector - “向上”向量和 y 轴有什么区别?
- recover - 我正在用 C 编写一个用于 CS50x Pset 4 Recover 的程序。在我读取第一个块然后尝试编写它之后,我收到一个分段错误
- python - URL解析:获取N个文件夹,后跟从某个文件夹开始的文件名
- asp.net-core - 如何在 ASP.NET Core MVC 3.1 中本地化 LoginPath