Könnten Sie mir mit diesem Problem in meinem VBA-Code helfen? (Ich habe versucht, viele Themen über 1004 Fehler in Foren zu gehen, aber ich bin ein VBA-Neuling und war nicht in der Lage, damit umzugehen ..).Excel VBA - Fehler 1004
- wird Tabelle in RawData Blatt mit headers - ich brauche den Datenteil zu reinigen, dann in nächstem Abschnitt ich dort einige der Daten aus anderem Blatt, auf dem kopieren werde, ist Pivot-Tabelle
Fehler auf der Linie (siehe Abschnitt ‚Blatt RawData Reinigung):
RawData.Range(Cells(2, 1), Cells(LastRow, LastCol)).Delete
Code Nicht ganz, aber hier ist ein bisschen:
'Exporting
Dim FZ As Workbook
Dim Cesta As Variant
Dim i As Long
Dim SubRegion As String
Dim rTable As Range
Dim CurrDate As String
Dim RawData As Worksheet
Dim SFDCReport As Worksheet
Dim MS As Worksheet
Dim DS As Worksheet
Dim DealOffice As Worksheet
Set DS = ThisWorkbook.Sheets("Data")
Set MS = ThisWorkbook.Sheets("Macro")
Cesta = Application.GetOpenFilename
Set FZ = Workbooks.Open(Filename:=Cesta, Local:=True)
Set RawData = FZ.Sheets("RawData")
Set SFDCReport = FZ.Sheets("SFDC Report")
Set DealOffice = FZ.Sheets("Coverage DealOffice")
CurrDate = MS.Range("E1").Value
For i = 1 To PRFilter
'Check if Export column is not empty for each SubRegion, if yes, skip to next Subregion(Iteration)
If IsEmpty(MS.Cells(i + 1, 2).Value) Then
GoTo NextIteration
Else 'Things to do if "Not Empty"
'SubRegion value paste into C10 so Highlights section is updated
SubRegion = MS.Cells(i + 1, 1).Value
SFDCReport.Cells(10, 3).Value = SubRegion
'Sheet SFDC Report Cleaning
With SFDCReport
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
LastCol = .Cells(12, .Columns.Count).End(xlToLeft).Column
.Range(Cells(14, 1), Cells(LastRow, LastCol)).Delete
End With
'Filter, Select & Copy filtered data to SFDCReport table
DS.Range("A1").CurrentRegion.AutoFilter Field:=84, Criteria1:=SubRegion
Set rTable = DS.AutoFilter.Range
Set rTable = rTable.Resize(rTable.Rows.Count - 1)
Set rTable = rTable.Offset(1) 'Move new range down to start at the first data row
rTable.Copy
SFDCReport.Cells(13, 1).PasteSpecial xlPasteValues
DealOffice.PivotTables("PivotTable1").RefreshTable 'Refresh PivotTable on DealOffice Sheet
'Sheet RawData Cleaning
LastCol = RawData.UsedRange.Columns.Count
LastRow = RawData.UsedRange.Rows.Count
RawData.Range(Cells(2, 1), Cells(LastRow, LastCol)).Delete
'Sheet CoverageDealOffice Pivot data copying to RawData
With DealOffice
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
LastCol = .Cells(17, .Columns.Count).End(xlToLeft).Column
.Range(Cells(17, 1), Cells(LastRow - 1, LastCol)).Copy
End With
RawData.Cells(2, 1).PasteSpecial xlPasteValues
'Formatting/other changes & Saving
SFDCReport.Activate
ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
ActiveWindow.ScrollColumn = 68
DealOffice.Select
FZ.SaveAs Filename:=DirExport & "\" & CurrDate & "_NCE Deal Office Report_" & SubRegion & ".xlsb", FileFormat:=50
NextIteration:
End If
Next
Danke Jungs, Gamca
Sie * immer * sollte das Blatt angeben, wenn 'Bereich mit()' oder 'Zellen()'. I.e. 'RawData.Range (RawData.Cells (2, 1), RawData.Cells (LastRow, LastCol)). Delete' Oder in einer With-Anweisung' .Range (.Cells (14, 1), .Cells (LastRow, LastCol)) Löschen. – BruceWayne
Thx Bruce, das funktionierte für diese Zeile ... es kam mir nur logisch vor, da ich RawData als Sheet in ein bestimmtes Arbeitsbuch gesetzt hatte, also dachte ich, ich würde ihm genug sagen, wo solche Range liegt ... komisch für mich Sag ihm, wo Range ist und dann auch Cells. – Gamca
Ich bin mir sicher, dass es eine elegantere Erklärung gibt, aber denke immer daran, dass VBA alle Range-Objekte als Standalone behandelt. Obwohl Sie 'Worksheet(). Range()' ausgeführt haben, müssen Sie auch das Blatt angeben, wenn Sie 'Cells' oder' Columns() 'oder' Rows() '* in diesem Bereich * verwenden. – BruceWayne