W tym artykule stworzymy makro do usuwania danych z poprzednich dat. To makro sprawdza dane, zachowuje dzisiejsze dane i usuwa wszystkie dane z poprzednich dat.
Surowe dane w tym przykładzie składają się z daty, nazwy agenta i sprzedaży indywidualnego agenta w tym konkretnym dniu.
Aby uruchomić makro, kliknij przycisk na arkuszu „Główne” lub można je nawet uruchomić, naciskając klawisze skrótu Alt + F8.
Makro usunie wszystkie rekordy z poprzednimi datami. Ponieważ uruchomimy to makro 14 grudnia 2016 r., dane wyjściowe będą odzwierciedlać rekordy tylko dla tej daty.
Wyjaśnienie logiczne
W tym przykładzie stworzyliśmy makro „RemovePreviousData”. To makro używa odwróconej pętli FOR, co oznacza, że pętla działa w przeciwnym kierunku. Pętla zaczyna się od ostatniego rzędu i przesuwa się w kierunku górnego rzędu.
Powodem używania pętli odwrotnej jest to, że gdybyśmy użyli normalnej pętli FOR, to po każdym usunięciu wiersza rekordy obecne w danych przesuwałyby się w górę, co powodowało zmianę pozycji przy każdym usunięciu wiersza. Aby temu przeciwdziałać, zastosowaliśmy pętlę odwrotną.
Użyliśmy instrukcji Step wraz z pętlą FOR do zapętlenia w odwrotnym kierunku. Pętla FOR zaczyna się od ostatniego rzędu i biegnie w kierunku 11NS wiersz.
Proszę postępować zgodnie z poniższym kodem!
Option Explicit Sub RemovePreviousData() Dim Counter, LastRow As Integer 'Znajdowanie numeru wiersza ostatniego wiersza LastRow = ActiveSheet.Range("A1").SpecialCells(xlLastCell).Row 'Pętla od ostatniego wiersza do 11. wiersza For Counter = LastRow To 11 Step -1 If Cells(Counter, 1)).Value < Date Then 'Usuwanie wiersza Rows(Counter).Delete End If Next Counter End Sub
Jeśli podobał Ci się ten blog, podziel się nim ze znajomymi na Facebooku. Możesz również śledzić nas na Twitterze i Facebooku.
Chcielibyśmy usłyszeć od Ciebie, daj nam znać, jak możemy poprawić naszą pracę i uczynić ją lepszą dla Ciebie. Napisz do nas na stronie e-mail