Ich versuche zu:
- Öffnen eine Datei "perpetual.xlsx"
- Filter eine Spalte auf Kriterien
- Summe einer anderen Spalte nehmen und es in meiner ursprünglichen Datei in einem anderen eingeben Säule. Meine ursprüngliche Datei ist wie im Bild unten gezeigt.
- Setzen Sie die Schleife von Schritt 2 bis zur letzten Zeile der ursprünglichen Datei fort.Summe der Spalte nach den Autofilter vba
Private Sub CommandButton1_Click()
Dim RowLast As Long
Dim tempLast As Long
tempLast = ThisWorkbook.Sheets("combine BOMs").Cells(Rows.Count, "B").End(xlUp).Row
Dim perporig As Workbook
'ThisWorkbook.Sheets("combine BOMs").Cells(1, 9).Value = here
For i = 5 To tempLast
Set perporig = Workbooks.Open("\\Etnfps02\vol1\DATA\Inventory\Daily tracking\perpetual.xlsx", UpdateLinks:=False, ReadOnly:=True)
With perporig.Sheets("perpetual")
.AutoFilterMode = False
RowLast = .Cells(Rows.Count, "A").End(xlUp).Row
.Range("A3:J" & RowLast).AutoFilter field:=1, criteria:=Range("B" & i).Value
ThisWorkbook.Sheets("combine BOMs").Cells(i, 5).Value = Application.WorksheetFunction.Sum(Columns("H:H"))
.AutoFilterMode = False
End With
perporig.Close savechanges:=False
ThisWorkbook.Sheets("myperpetual").Activate
Next i
Cells(1, 9).Value = here
End Sub
Der Code läuft nur bis Zeile 9, d.h .: Set perporig = .... und nach, dass es aus irgendeinem Grund stehen bleibt. Die Datei "perpetual.xlsx" öffnet sich und der Code stoppt. Wenn ich das Apostroph in Zeile 6 entferne, scheint der Code überhaupt nicht zu laufen.
BEARBEITET CODE: Vielen Dank für Ihre Vorschläge. Ich wusste nicht, wo ich meinen Code platzieren sollte, also hier ist es. Auch hier läuft der Code nur bis Zeile 7, also: Set perporig = .... und danach stoppt er aus irgendeinem Grund. Die Datei "perpetual.xlsx" öffnet sich und der Code stoppt. Wenn ich das Apostroph in Zeile 6 entferne, scheint der Code überhaupt nicht zu laufen. Bitte helfen Sie.
Private Sub CommandButton1_Click()
Dim RowLast As Long
Dim tempLast As Long
tempLast = ThisWorkbook.Sheets("combine BOMs").Cells(Rows.Count, "B").End(xlUp).Row
Dim perporig As Workbook
'ThisWorkbook.Sheets("combine BOMs").Cells(1, 9).Value = "here"
Set perporig = Workbooks.Open("\\Etnfps02\vol1\DATA\Inventory\Daily tracking\perpetual.xlsx", UpdateLinks:=False, ReadOnly:=True)
For i = 5 To tempLast
With perporig.Sheets("perpetual")
.AutoFilterMode = False
RowLast = .Cells(Rows.Count, "A").End(xlUp).Row
.Range("A3:J" & RowLast).AutoFilter field:=1, criteria:=ThisWorkbook.Sheets("combine BOMs").Cells(i, 2).Value
ThisWorkbook.Sheets("combine BOMs").Cells(i, 5).Value = Application.WorksheetFunction.Sum(Range("H:H").SpecialCells(xlCellTypeVisible))
.AutoFilterMode = False
End With
Next
perporig.Close savechanges:=False
ThisWorkbook.Sheets("combine BOMs").Activate
Cells(1, 9).Value = "here"
End Sub
Sie öffnen die "Perpetual.xlsx" für jede Zeile, das ist übermäßig schwere Sachen. Öffnen Sie die Anwendung in einem Objekt und schließt es außerhalb der Schleife –
Entfernen Sie "Next i" am Ende der Schleife, behalten Sie nur die "Next" ohne die "I" Zähler –
Auch das ist nicht Ihr Problem, aber es wird sein, Sum ignoriert, ob die Zeile durch den Filter ausgeblendet wird oder nicht und fügt sie in die Ausgabe ein. Sie müssen in die Funktion Zwischensumme() schauen. Oder wiederhole dich selbst durch die Zeilen und prüfe ob es versteckt ist oder nicht und behalte deine eigene Summe. –