2016-03-17 67 views
1

我準備了一個宏,它在演示表中可以正常工作,但在將其放入最終工作表時會產生1004運行時錯誤。執行代碼會產生運行時錯誤1004

下面是我的代碼:

Private Sub CommandButton3_Click() 

'Declaring the Variables 
Dim ws As Worksheet 
Dim ws1 As Worksheet 
Dim ws2 As Worksheet 
Dim ws3 As Worksheet 
Dim rng As Range 
Dim startdate As Long 
Dim enddate As Long 
Dim tbl As ListObject 
Dim fname As Variant 

'Assigning the Variables 
Set ws = Sheets("Reports") 
Set ws3 = Sheets("Report Format") 
Set rng = ws.Range("E7") 
startdate = ws.Range("L10").Value 
enddate = ws.Range("L12").Value 

'Find the Worksheet against the Name selected in Drop Down List 
For Each ws1 In Worksheets 
If rng.Value = ws1.Name Then 
Sheets(rng.Value).Activate 
End If 
Next 

'Filter the data based on the Date Range Entered 
Set ws2 = ActiveSheet 
Set tbl = ws2.ListObjects(1) 

Range(tbl & "[[Date]:[Cheque #]]").Select 
Selection.AutoFilter Field:=1, Criteria1:=">=" & startdate,  Operator:=xlAnd, Criteria2:="<=" & enddate 
Selection.Copy 
ws2.Range("A10").Select 

'Paste the Data in the Report Format 
ws3.Activate 
ws3.Range("B7").Select 

Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ 
    xlNone, SkipBlanks:=False, Transpose:=False 

'Create the PDF of the Report 
fname = Application.GetSaveAsFilename(InitialFileName:=rng.Value,  filefilter:="PDF files, *.pdf", Title:="Export to PDF") 

If fname <> False Then 
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fname_,  quality:=xlQualityStandard, includedocproperties:=True, ignoreprintareas:=False, openafterpublish:=True 
End If 

'Clear the Report format Sheet for Future Printing 
With ActiveSheet 
.Rows(10 & ":" & .Rows.Count).Delete 
End With 

'Activate the Report Sheet 
ws.Activate 

'Unfilter all the Tables present in Workbook 
Dim w As Long 
For w = 1 To Worksheets.Count 
With Worksheets(w) 
**.UsedRange.Cells.EntireRow.Hidden = False** 
If .AutoFilterMode Then .ShowAllData 
End With 
Next w 

End Sub 

錯誤出現在其中的逗號突出顯示的行。請審查和調試。

+1

將'ws2.'放在行首。 –

+0

斯科特同樣錯誤。當我在演示表中運行這個宏時,它工作正常。 –

+0

是不是'Sheets(rng.Value).Activate'工作,而不是循環通過工作表?即使'set ws2 = Sheets(rng.Value)' – Davesexcel

回答

1

您正試圖將ListObject object連接成一個字符串。您需要ListObject.Name屬性。

Dim ws2 As Worksheet, tbl As ListObject 

Set ws2 = ActiveSheet 
Set tbl = ws2.ListObjects(1) 
Debug.Print tbl.Name 
Range(tbl.Name & "[[Date]:[Cheque '#]]").Select 

請注意,也有蜱(又名'或CHR(39))逃離hashmark在[Cheque '#]

+0

仍然是一樣的錯誤。沒有進展 –

+0

我不知道那個撇號逃脫要求。 –