2017-06-12 95 views
1

我是VBA的新手。VBA创建,重命名并粘贴到新工作表

我正在寻找创建一些代码来过滤一张纸上的一张表,然后粘贴到一张新纸上,而新的纸被重新命名为今天的日期,然后再次隐藏现有的纸。这是需要每周和可能每天。

到目前为止,我有

Sub test2() 
' 
' test2 Macro 
'  
' 
    ActiveSheet.ListObjects("Pipeline").Range.AutoFilter Field:=1, Criteria1:= _ 
     "<>" 
    Range("Pipeline[[#Headers],[FC]]").Select 
    Range(Selection, Selection.End(xlDown)).Select 
    Range(Selection, Selection.End(xlToRight)).Select 
    Selection.Copy 


    Dim SheetName As String 

    SheetName = Format(Date, "dd-mm-yyyy") 'Change the format as per your requirement 
    Sheets.Add , Worksheets(Worksheets.Count) 
    ActiveSheet.Name = SheetName 
End Sub 

这是过滤范围表和复制,同时还创造了新的工作表。但是,我如何过去进入新的工作表,然后再次隐藏工作表。理想情况下,我想代码需要先取消隐藏工作表。表名是FC_Pipeline

任何帮助,非常感谢。
感谢 特德

回答

2

这是隐藏和创造今天的日期一新的工作表

Sub Makro() 
    Dim currentSheet As String 
    currentSheet = ActiveSheet.Name 

    Dim SheetName As String 
    SheetName = Format(Date, "dd-mm-yyyy") 

    Sheets.Add After:=ActiveSheet 
    ActiveSheet.Name = SheetName 

    Sheets(currentSheet).Visible = False 
End Sub 
0

我觉得代码会是这样

Sub test2() 

    Dim Ws As Worksheet, newWs As Worksheet 
    Dim SheetName As String 

    Set Ws = ActiveSheet 
    ActiveSheet.ListObjects("Pipeline").Range.AutoFilter Field:=1, Criteria1:="<>" 
    SheetName = Format(Date, "dd-mm-yyyy") 'Change the format as per your requirement 

    Sheets.Add , Worksheets(Worksheets.Count) 
    ActiveSheet.Name = SheetName 
    Set newWs = ActiveSheet 
    Ws.Range("Pipeline[#All]").SpecialCells(xlCellTypeVisible).Copy newWs.Range("a1") 
    Ws.Visible = xlSheetHidden 
End Sub 
+0

我通过代码加强和它的工作原理直到这点'Ws.Range(“Pipeline [#All]”)。复制newWs.Range(“a1”) Ws.Visible = xlSheetHidden'它似乎是粘贴整个工作表而不是选定的部分代码'ActiveSheet.ListObjects(“Pipeline”)。Range。 AutoFilter Field:= 1,Criteria1:= _ “<>” 范围(“Pipeline [[#Headers],[FC]]”)选择 范围(Selection,Selection.End(xlDown))选择 范围(Selection,Selection.End(xlToRight))。选择 Selection.Copy' –

+0

@TedDennis:我修改了代码。 –

相关问题