Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何将宏模块与其余代码结合起来_Vba_Excel - Fatal编程技术网

Vba 如何将宏模块与其余代码结合起来

Vba 如何将宏模块与其余代码结合起来,vba,excel,Vba,Excel,我是一个初学者,所以非常感谢您的帮助,我想将这个宏与第一个代码结合起来,但我不知道如何做,也不知道放在哪里 这是第一个代码(它有一个错误,但我已经有一个关于如何修复它的答案,所以它是好的): 当前,第一个代码过滤并将参数中的表数据复制到另一个工作表中,但我需要一个更复杂的副本版本,因此我将其记录在宏中,该宏非常长,如下所示: Sub Macro8() ' ' Macro8 Macro ' ' Sheets("INBD").Select Range("Table1[Description]").

我是一个初学者,所以非常感谢您的帮助,我想将这个宏与第一个代码结合起来,但我不知道如何做,也不知道放在哪里

这是第一个代码(它有一个错误,但我已经有一个关于如何修复它的答案,所以它是好的):

当前,第一个代码过滤并将参数中的表数据复制到另一个工作表中,但我需要一个更复杂的副本版本,因此我将其记录在宏中,该宏非常长,如下所示:

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以及Burns about评论中的链接。

Application.run(“macro8”)作为一名初学者,您似乎想要同时完成很多事情。也许可以考虑:把你的问题分成大小合适的子问题,这样A)提问更容易,B)回答和帮助你更容易。这也将帮助您理解代码中发生了什么。好的,您已经发布了很多代码,并且已经发布了您想要做的事情,这很好。但你问题的标题是如何将宏模块与其余代码结合起来,而你还没有发布任何与之相关的内容。你有什么问题?你卡在哪里了?有什么错误吗?什么线路?会产生什么错误?这就是你必须发布的内容,我们可以提供帮助。关于你的第二个宏,请检查基本上我想在第一个代码中写入类似“run_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