Kezdőlap › Fórumok › Excel programozás › cellák, sorok üritése dátum alapján
- This topic has 27 hozzászólás, 3 résztvevő, and was last updated 6 years, 11 months telt el by
Potus.
-
SzerzőBejegyzés
-
2018-04-07-23:22 #4623
Sziasztok!
Van egy táblázatom amiben közelgő események vannak feltüntetve dátum szerint. A már lejárt eseményeket szeretném automatikusan és folyamatosan törölni egy program vagy esetleg függvény segítségével. Ebben szeretnék segítséget kérni.
A kékre színezett adatok egy másik főoldalon jelennek meg.
A táblázat adatai egy a főoldalon felugró ablak „ürlapjának” kitöltése után kerülnek a táblázat következő üres sorába. Szeretnék határt szabni a táblázat nagyságának ezért a már lejárt adatokat törölni szeretném.
De most jut eszembe, hogy ez egy másik problémát vet fel. Gondolom mivel az első sorok adatai törlödni fognak előbb utóbb azokba is írni kellene. Vagy van olyan lehetőég is, hogy a törölt adatok helyére ugrik a következő sor és így mindig a végén lesznek üres sorok????Köszönöm a segítséget! Potus
Attachments:
You must be logged in to view attached files.2018-04-08-07:30 #4625Szia!
A leírásodból nem derült ki, hogy melyik oszlopok adatait akarod töröltetni. Úgy gondolom, hogy a B:I tartományban lévőket.
Célszerű a füzet megnyitásakor eltüntetni a lejárt idejű bejegyzéseket, ezért az Open eseménybe érdemes betenni, a ThisWorkbook laphoz kell rendelni a makrót.Private Sub Workbook_Open() Dim sor As Long, usor As Long sor = 5 Do While Cells(sor, 2) <> "" If Cells(sor, 2) < Date Then Range("B" & sor & ":I" & sor + 1).Delete Shift:=xlUp Else sor = sor + 2 End If Loop End Sub
A Do-Loop ciklussal megyünk végig a B oszlop dátumain, az 5. sortól kezdve.
A Shift:=xlUp határozza meg a törlés irányát. Ha volt törlés, az alatta lévő adatok a törölt sor helyére ugranak fel, nem változtatjuk a sor változó értékét, ha nem volt, növeljük a sor értékét kettővel.
A ciklus addig fut, míg a B oszlopban talál adatot.2018-04-09-04:17 #4626Szia Delila!
Köszönöm az újabb segítséget.
Kiprobáltam a makrót. Remekül működik. Hogyan is lenne máskép… 🙂 Mellékelem az eredményt.
Az megoldható, hogy a feladat elvégzése után megtartsa az eredeti formátumot, színezést? Valamint, még az is kérdés, hogyan alakul a program, ha mindezt egy több munkafüzetből (fülböl) álló file egyik fülén kellene futtatni?Előre is köszönöm a további fáradozást!
Üdvözlettel: Potus
Attachments:
You must be logged in to view attached files.2018-04-09-10:30 #4628Itt az újabb makró:
Private Sub Workbook_Open() Dim sor As Long, usor As Long sor = 5 With Sheets("Munka1") 'ide a saját lapod nevét írd a Munka1 helyett 'lejárt időpontok adatainak törlése Do While .Cells(sor, 2) <> "" If .Cells(sor, 2) < Date Then .Range("B" & sor & ":I" & sor + 1).Delete Shift:=xlUp Else sor = sor + 2 End If Loop 'formátum másolása If .Cells(5, 2) > "" Then .Range("B5:I6").Copy .Range("B7:I49").PasteSpecial xlPasteFormats Application.CutCopyMode = False End If End With End Sub
2018-04-10-05:02 #4631Szia!
Tökéletesen működik a makró, mindaddig amig van mit másolnia, amig van olyan dátumu bejegyzés ami >= mint az aktuális dátum. Ha nincs ilyen bejegyzés akkor persze, mert nincs mit másolnia, csak a nagy feketeség van. Megoldás lenne esetleg ha valahol távolabb lenne egy üres formázott sor amit ilyenkor – ill. mindig – másolhatna?
Üdv Potus
Attachments:
You must be logged in to view attached files.2018-04-10-05:05 #46332018-04-10-05:13 #4635a távoli formázott sor másolás úgy tűnik nem megoldás
Attachments:
You must be logged in to view attached files.2018-04-10-06:47 #4637Igazad van, ez a kézenfekvő megoldás nem jutott eszembe.
A feltétel (If .Cells(5, 2) > „” Then) sem kell, elég ez:
.Range("CH3:CO4").Copy .Range("B7:I28").PasteSpecial xlPasteFormats Application.CutCopyMode = False
Figyeld meg, hogy a másolandó formátumba a CH4:CO4 tartományt is be kell venni, hogy az alacsony sorok fekete háttere is másolódjon.
2018-04-10-08:58 #46382018-04-10-09:08 #4640#HIV! hibát ad neked a képlet. Azt is be kellene írni törlés után.
Ha az a baj, hogy jönnek felfelé a fehér cellák, akkor a feketeséget a 90. sorig mindig formázd le.2018-04-10-09:49 #4641Hello Titok!
Jajj, igen értem, értem…. A „folyamatos” törlés miatt előbb utóbb elfogynak a fekete sorok. Úgy kellett volna kezdeni az oldalt, hogy az egész fekete.
Köszönöm mindenkinek a segítséget!Pacsi! Potus
2018-04-19-05:37 #4681Szia Delila!
Ominózus naptárprojectem nap mint nap újabb kihívások elé állít. Ami nem baj, talán így a szép és szórakoztató. De így „időnként” segítségre is szorulok.
A fenti kódot kissé átírva és egy másik userform-ra alkalmazva picit megakadtam.
Ha jól figyeltem meg jelen esetben – az átírt formátummal- olyan sort is töröl amit még nem kellene. Bár most így utólag belegondolva azért lehet, mert el kellene tolni a dátum keresést egy oszloppal c helyett d -re. N jó, ezt most már értem, ez rendben…. 🙂
De ellentétben a fenti kóddal amikor is nem voltak képletek a táblázatban így elég volt egy szimpla formátum másolás , most viszont vannak képletek a törölt sorokban ill. nem azokban hanem a törölt sorokra hivatkozó képletek vannak a fentebbi sorokban. De azt sem értem, hogy ha a törölt sor helyére kerül egy másik ugyan olyan formátumú sor akkor a képlet miért veszti el a hívatkozását. Bár gondolom az idő játszik közre, nem ? Nem lehetne ezt valahogy kiküszöbölni, mert ha mindig újra kell írni képletet a lényegét veszti az egész project. 🙂
Közben arra is rájöttem, hogy a két multi akcióját egymás alá, felváltva kellene kiírni.
Azt hiszem ennyi probléma elég is egyszerre…
Mellékelek a leírtakhoz néhány file-t is. Az átírt kódot nem is tudom miért, de nem töltöttem fel a vázlatos naptárba…Előre is köszönöm a segítséget! Pacsi! Potus
Attachments:
You must be logged in to view attached files.2018-04-19-05:40 #46832018-04-19-05:41 #4685előtte:
2018-04-19-05:42 #46862018-04-19-05:44 #46882018-04-19-17:56 #4697Visszaküldöm a VÁZLATOS füzetet, némi módosítással.
Szerk.: El kellene menned Horváth Imihez egy VBA tanfolyamra. Míg nem látod átfogóan a lényeget, csak kapkodsz, és semmi nem marad meg. Hidd el, érdemes lenne.
-
A hozzászólás módosításra került: 6 years, 11 months telt el-
delila. Indok: Kéretlen tanács
Attachments:
You must be logged in to view attached files.2018-04-19-21:43 #4700ha megnyítom a netről a vázlatos1-et és igent nyomok a kérésre kiír valami hibát… globális hibát…
Attachments:
You must be logged in to view attached files.2018-04-19-21:45 #4702ha meg a kis naptáramat nyítom meg nekem is ki ír valamit…
Attachments:
You must be logged in to view attached files.2018-04-19-21:54 #4704az utolsó nem az , ez lesz jó….
2018-04-19-21:55 #47052018-04-19-21:59 #4707gondolom bezavar a h5-be a két multi…. A tanfolyam jó ötletnek tűnik, bárki is jegyezte meg. Gondolkodom rajta.
Attachments:
You must be logged in to view attached files.2018-04-20-07:18 #4709Szarvas hiba részemről! Úgy akartam egy cellára állni, hogy előtte nem aktiváltam a lapot.
Private Sub Workbook_Open() Dim WS As Worksheet, sor As Long, valasz Set WS = Sheets("AKCIÓK") valasz = MsgBox("Töröljem a lejárt érvényességű tételeket?", vbYesNo + vbQuestion, "Törlési kérdés") If valasz = vbNo Then GoTo Raall With WS sor = 5 Do While .Cells(sor, 1) <> "" If .Cells(sor, 2) < Date Then .Range("A" & sor & ":C" & sor).Delete Shift:=xlUp Else: sor = sor + 1 End If Loop sor = 5 Do While .Cells(sor, 5) <> "" If .Cells(sor, 6) < Date Then .Range("E" & sor & ":G" & sor).Delete Shift:=xlUp Else: sor = sor + 1 End If Loop End With Raall: Sheets("NYÍTÓOLDAL").Select Range("H5").Select End Sub
2018-04-20-18:27 #4710…
2018-04-20-20:13 #47112018-04-20-20:15 #47132018-04-22-13:52 #4718A csatolt fájlodban NYÍTÓOLDAL névre hallgatott az első lapod. Lehet, hogy azóta javítottad a hosszú Í-t, azért fut hibára.
2018-04-22-21:14 #4719Döbbenet, néha milyen egyszerű a világ…. 😀
KÖSZI!!!!
-
A hozzászólás módosításra került: 6 years, 11 months telt el-
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.