-
PROHARDVER!
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
Delila_1
veterán
válasz
m.zmrzlina
#10421
üzenetére
Private Sub Worksheet_Change(ByVal Target As Range)
'A B.xls füzetből indulunk. A munkalaphoz rendelt eseménykezelő
'csak a saját munkalapján tud dolgozni, ezért innen indítunk
'olyan makrókat, amik nincsenek munkalaphoz rendelve.
Application.EnableEvents = False 'Eseménykezelés letiltása
Dim utvonal, Érték, sor%
sor% = Target.Row 'Adatbevitel sora
utvonal = Cells(sor%, 1) 'Az A oszlopba bevitt érték
If Target.Column = 1 Then 'Ha az A oszlopba vittél be adatot,
Darabteli utvonal, sor% 'meghívom a Darabteli makrót, átadva a 2 változót
End If
If Target.Column = 2 Then 'Ha a B oszlopba írsz értéket,
Érték = Cells(sor%, 2) 'az Érték változó vegye fel a bevitt értéket
Beír Érték 'Beír makró meghívása, az Érték változó átadásával
End If
Application.EnableEvents = True 'Eseménykezelés engedélyezése
End SubSub Darabteli(utvonal, sor%)
'Ez a makró az átvett "utvonal" változót keresi az A.xls Munka1 lapján, a B oszlopban,
'a COUNTIF (darabteli) függvénnyel. A B.xls A oszlopába történt beírás hívja meg a makrót.
Dim ws As Object, usor%
Set ws = Workbooks("A.xls").Sheets("Munka1") 'A ws változó tartalma innen kezdve az egyenlőség jobb oldala
usor% = ws.Range("B1").End(xlDown).Row + 1 'Első üres sor a ws.B oszlopában
If Application.WorksheetFunction.CountIf(ws.Range("B:B"), utvonal) = 0 Then
'Ha a B.xls A oszlopába beírt "utvonal" nem található az A.xls B oszlopában,
'vagyis a darabteli=0
ws.Cells(usor%, 2) = utvonal 'az utvonal változót írja be az ws.B oszlop első üres sorába
Else
'ha van "utvonal" a ws.B oszlopában, keresse meg, és a hozzá tartó H oszlopban lévő értéket
'írja be a kiinduló füzet (B.xls) B oszlopába.
'Itt nem kell a B.xls-re hivatkozni, mert nem léptünk át Select-tel az A.xls-be, csak leskelődtünk.
Cells(sor%, 2) = Application.WorksheetFunction.VLookup(utvonal, ws.Columns("B:H"), 7, 0)
End If
End SubSub Beír(Érték)
'A B.xls B oszlopába történt beírás hívja meg ezt a makrót.
'Akkor írsz értéket a B oszlopba, ha az fkeres nem talált A oszlopbeli útvonalat.
Dim ws As Object, usor%
Set ws = Workbooks("A.xls").Sheets("Munka1") 'Mint fent
usor% = ws.Range("H1").End(xlDown).Row + 1 'Mint fent
ws.Cells(usor%, 8) = Érték 'A ws.H oszlop első üres sorába beírja az értéket
End SubAz eseménykezelés letiltása azért kell a laphoz rendelt makróba, mert a munkalapon történt minden változásra beindul. Próbáld ki az Application.EnableEvents = False sor nélkül lépésenként futtatni, és meglátod, hányszor fut le feleslegesen. A lépésenként futtatáshoz tegyél a makró elejére egy stop-ot, majd írj a B.xls-be egy útvonalat, vagy km-t.
Az end sub előtt vissza kell állítani True értékkel!
Új hozzászólás Aktív témák
- Launch trailert kapott a Honkai: Star Rail
- Gitáros topic
- gban: Ingyen kellene, de tegnapra
- PlayStation 5
- Bambu Lab 3D nyomtatók
- GoodSpeed: Samsung DV90DG52A0ABLE hőszivattyús szárítógép
- Elden Ring
- OnePlus 15 - van plusz energia
- Luck Dragon: Asszociációs játék. :)
- Android alkalmazások - szoftver kibeszélő topik
- További aktív témák...
- Kaspersky, BitDefender, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- MS SQL Server 2016, 2017, 2019
- SzoftverPremium.hu
- Játékkulcsok ! : PC Steam, EA App, Ubisoft, Windows és egyéb játékok
- Game Pass Ultimate előfizetések 1 - 36 hónapig azonnali kézbesítéssel a LEGOLCSÓBBAN! AKCIÓ!
- Eredeti Lenovo 330W töltők - ADL330SDC3A
- BESZÁMÍTÁS! ASRock H510M i5 11400F 16GB DDR4 512GB SSD ASUS ROG RX VEGA64 8GB CM Masterbox 5 700W
- Apple iPad 7 32GB (3 hó Garancia)
- 210 - Lenovo IdeaPad 5 Pro (16ARH7) - AMD Ryzen 7 6800HS, RTX 3050Ti
- BESZÁMÍTÁS! MSI B450M R5 3600XT 16GB DDR4 512GB SSD RX 7600 8GB ZALMAN S2 TG CM 650W
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest
Fferi50

