-
Fototrend
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
- Milyen monitort vegyek?
- Gaming notebook topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Mobil flotta- ajánló keresés belépéshez
- Telekom mobilszolgáltatások
- Vezetékes FEJhallgatók
- Nintendo Switch
- Lenovo Thinkbook, Yoga széria
- Szombathely és környéke adok-veszek-beszélgetek
- Milyen autót vegyek?
- További aktív témák...
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Kaspersky, BitDefender, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap - 15% AKCIÓ
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem.
- Lenovo X13 Yoga 2in1 Thinkpad WUXGA IPS Touch i5.1135G7 16GB 256GB Intel Iris XE Win11 Pro Garancia
- AKCIÓ!! HP Zbook Studio G8 i7-11850H 32GB 512GB Nvidia Quadro T1200 400NIT, 100% sRGB Garis!
- LG 55QNED813RE / QNED / 55" - 140 cm / 4K UHD / 120Hz & 4ms / HDR Dolby Vision / FreeSync + HDMI 2.1
- Gyors és kedvező csomagküldés Magyarországon és külföldre!
- ÁRGARANCIA! Épített KomPhone Ultra 7 265KF 32/64GB RAM RX 9070 XT 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs
Fferi50
