- Geri Bátyó: Agglegénykonyha 14 – Kések, késélezés
- MasterDeeJay: Comet lake (10gen) és DDR3 - mert ilyet is lehet!
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- ldave: New Game Blitz - 2026
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- MasterDeeJay: Asus Q170M-C coffeetime mod!
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- mefistofeles: Az elhízás nem akaratgyengeség! 2 Ahogy én csinálom.......
- Geri Bátyó: Régi VGA, HDMI és a felbontás
-
LOGOUT
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
-
Mutt
senior tag
válasz
csongi
#27684
üzenetére
Hello,
...egy adott cellába, legyen egy képlet, de ha kézzel beleírok akkor a beírt érték legyen, viszont ne vesszen el a képlet sem....
Van egy kevésbé használt függvény az S (angolul N), ami ha szöveget kap értéknek, akkor nem számol vele.
pl. =N("komment") értéke 0 és ezek után =2+N("komment") cella értéke is 2 lesz.Ez a függvény jön itt nekünk segítségre, mivel a cella képletét ebbe a függvénybe elrejtjük.
A lenti makróval első lépésként megjegyezzük a cella tartalmát és képletét ha van a Worksheet_SelectionChange eseménnyel. Az egyszerűség kedvéért csak akkor tesszük, ha egyszerre 1 cella van módosítva.
A második lépésben ha a változik vmi a lapon, akkor a Worksheet_Change esemény lép akcióba és attól függően, hogy volt-e képlet vagy sem, esetleg töröltük a cella bedobja ami kell éppen.
A kód nem tökéletes, iránymutatásnak szántam.
Option Explicit
Dim KepletVanBenne As Boolean
Dim Tartalom As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
KepletVanBenne = False
Tartalom = ""
If Target.Cells.Count = 1 Then 'egyszerűség kedvéért csak 1 cellára dolgozunk
KepletVanBenne = Target.HasFormula 'megnézzük hogy van-e képlet a cellában
If KepletVanBenne Then Tartalom = Target.FormulaLocal 'elmentjük a képletet egy változóba
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim EredetiKeplet
Dim Keresni As String
'Excel nyelvének megállapítása
If Application.LanguageSettings.LanguageID(msoLanguageIDUI) = 1038 Then
Keresni = "+S("
Else
Keresni = "+N("
End If
If Target.Cells.Count = 1 Then 'egyszerűség kedvéért csak 1 cellára dolgozunk
'ha az új cella konstans akkor mögétesszük a képletet, ha volt korábban
If Not Target.HasFormula Then
'megnézzük hogy a korábban volt-e képlet a cellában, ha igen akkor kinyerjük az eredeti képletet onnan
EredetiKeplet = Split(Tartalom, Keresni) 'bízunk benne, hogy nincs a cellában +N( kifejezés más indok miatt
If IsArray(EredetiKeplet) And UBound(EredetiKeplet) > 0 Then
'itt kicsit formázni kell mivel vmi ilyet kapunk vissza "=A1"), de nekünk csak =A1 kell
Tartalom = Mid(EredetiKeplet(1), 2, Len(EredetiKeplet(1)) - 3)
End If
'ha törlik a cella tartalmát, akkor berakuk az eredeti képletet
If Target.Value = "" Then
Target.FormulaLocal = Tartalom
Else
Target.Formula = "=" & Target.Value & "+N(""" & Tartalom & """)" 'az új cellatartalom az lesz, hogy bevitt érték + korábbi formula
End If
End If
End If
End Subüdv.
Új hozzászólás Aktív témák
- Kínai és egyéb olcsó órák topikja
- Xbox Series X|S
- SkyShowtime
- Honor Magic8 Pro - bevált recept kölcsönvett hozzávalókkal
- Samsung Galaxy Felhasználók OFF topicja
- PlayStation 5
- Milyen routert?
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Mibe tegyem a megtakarításaimat?
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- További aktív témák...
- BESZÁMÍTÁS! MSI B450 R5 5600 32GB DDR4 512GB SSD RX 9060 XT 16GB Zalman S2 TG Cooler Master 700W
- Dell Latitude 7300 Core i5-i7, 8-16GB RAM, SSD, jó akku, számla, 6 hó gar
- 244 - Lenovo LOQ (15IRX9) - Intel Core i7-13650HX, RTX 4060
- RITKASÁG! Microsoft Surface Pro 11 Qualcomm Snapdragon X Elite 16GB 1000GB OLED 120Hz Gar!
- iKing.Hu - Apple iPhone 13 Pro Alpine Green ProMotion 120 Hz, Pro kamerák 128 GB-100%
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Fferi50