Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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
在Excel中使用VBA打印不同工作表上的行_Excel_Vba - Fatal编程技术网

在Excel中使用VBA打印不同工作表上的行

在Excel中使用VBA打印不同工作表上的行,excel,vba,Excel,Vba,我在一个工作簿中有三个单独的工作表,其中包含数千行信息,并且经常添加新信息。我希望能够创建单独的报告使用宏和VBA打印到另一个工作表时,我需要的报告 例如,报告一将包括2014年完成的所有工作。如果完成?等于是,年份等于2014,在空白工作表上打印整行。但是,我需要使用VBA,所以它会遍历三个工作表,并将它们一起打印到一个单独的工作表中。我该怎么做 澄清:基本上,如果这两个单元格等于this和this,则在另一张纸上打印该行。使用该行进行练习。 在包含数据的图纸上插入按钮或其他类型的对象 单击

我在一个工作簿中有三个单独的工作表,其中包含数千行信息,并且经常添加新信息。我希望能够创建单独的报告使用宏和VBA打印到另一个工作表时,我需要的报告

例如,报告一将包括2014年完成的所有工作。如果完成?等于是,年份等于2014,在空白工作表上打印整行。但是,我需要使用VBA,所以它会遍历三个工作表,并将它们一起打印到一个单独的工作表中。我该怎么做

澄清:基本上,如果这两个单元格等于this和this,则在另一张纸上打印该行。

使用该行进行练习。 在包含数据的图纸上插入按钮或其他类型的对象

单击后,代码将删除除活动工作表以外的所有工作表

然后在A列中循环并创建图纸。 然后,它在工作表中循环并过滤数据表,将数据复制并粘贴到工作表中,然后移动到下一个工作表

Sub getSht()
    Dim c As Range, sh As Worksheet
    Dim Rws As Long, Rng As Range, fRng As Range
    Dim ws As Worksheet
    Set ws = ActiveSheet
    Application.DisplayAlerts = 0
    Application.ScreenUpdating = 0
    For Each sh In Sheets
        If sh.Name <> ws.Name Then sh.Delete
    Next sh
    With ws
        Rws = .Cells(Rows.Count, "A").End(xlUp).Row
        Set Rng = .Range(.Cells(2, 1), .Cells(Rws, 1))
        For Each c In Rng.Cells
            If WorksheetExists(c.Value) Then
            Else: Sheets.Add.Name = c
            End If
        Next c
    End With
    For Each sh In Sheets
        If sh.Name <> ws.Name Then
            ws.Range("A:A").AutoFilter Field:=1, Criteria1:=sh.Name
            Set fRng = ws.Range(ws.Cells(1, "A"), ws.Cells(Rws, "D"))
            fRng.Copy Destination:=sh.Range("A1")
        End If
        ws.AutoFilterMode = 0
    Next sh
    ws.Activate
End Sub


Function WorksheetExists(WSName As String) As Boolean
    On Error Resume Next
    WorksheetExists = Worksheets(WSName).Name = WSName
    On Error GoTo 0
End Function
Sub-getSht()
尺寸c作为范围,sh作为工作表
变暗Rws长度,Rng为范围,fRng为范围
将ws设置为工作表
设置ws=ActiveSheet
Application.DisplayAlerts=0
Application.ScreenUpdate=0
对于每一张图纸
如果sh.Name ws.Name,则sh.Delete
下一个sh
与ws
Rws=.Cells(Rows.Count,“A”).End(xlUp).Row
设置Rng=.Range(.Cells(2,1),.Cells(Rws,1))
对于每个c In Rng.单元格
如果工作表列表(c值),则
其他:Sheets.Add.Name=c
如果结束
下一个c
以
对于每一张图纸
如果sh.Name ws.Name那么
ws.Range(“A:A”).AutoFilter字段:=1,Criteria1:=sh.Name
设置fRng=ws.Range(ws.Cells(1,“A”)、ws.Cells(Rws,“D”))
起始复制目的地:=sh.Range(“A1”)
如果结束
ws.AutoFilterMode=0
下一个sh
ws.Activate
端接头
函数工作表列表(WSName为字符串)为布尔值
出错时继续下一步
工作表列表=工作表(WSName)。名称=WSName
错误转到0
端函数

请告诉我们您的代码现在在哪里,以及您遇到了什么问题。到目前为止您做了什么?你试过录制宏吗?没有什么,我不知道该采取什么方法,也不知道该怎么做。@BluGeni您好,您可以使用带有两个条件的自动筛选,然后将筛选范围复制到新的工作表中。将筛选范围添加到lastrow的所有三张图纸重复此操作。Sub name是Get Sheet BTW的缩写,