Hirdetés
- bobalazs: Microsoft Copilot és hasonló hülyeségek egyszerű kigyomlálása /örök megoldás/
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Magga: PLEX: multimédia az egész lakásban
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- eBay-es kütyük kis pénzért
- sziku69: Szólánc.
- MasterDeeJay: RAM gondolatok: Mennyi a minimum? DDR3 is jó?
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- norbx: Számítógép.hu
-
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
Hirdetés
- Megkérdeztük az AI-t: milyen érzés, amikor megreguláznak?
- EAFC 26
- Kormányok / autós szimulátorok topikja
- exHWSW - Értünk mindenhez IS
- Kerékpárosok, bringások ide!
- Okosóra és okoskiegészítő topik
- PlayStation 5
- Kamionok, fuvarozás, logisztika topik
- Sózd a jégakkut! Megoldotta a CATL a téli akkuproblémákat
- Milyen NAS-t vegyek?
- További aktív témák...
- GYÖNYÖRŰ iPhone 12 mini 128GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3878
- LG 27GS60QC-B - 27" Ívelt - 2560x1440 - 180Hz 1ms - AMD FreeSync - Adaptive Sync - sRGB 99%
- Több darab! MacBook Pro 14" M1 16GB RAM 27%-os áfás számla (218)
- Apple iPhone 14 Pro 256GB (Csak Esim), Kártyafüggetlen, 1 Év Garanciával
- ÁRGARANCIA! Épített KomPhone Ultra 9 285K 64GB RAM RX 9070 XT 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest
Fferi50
