Hirdetés
- weiss: Autó költségek
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- Geri Bátyó: Agglegénykonyha különkiadás – Bors
- Luck Dragon: Asszociációs játék. :)
- GoodSpeed: Te hány éves vagy?
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Klaus Duran: Minden drágul. Vajon a fizetések 2026-ban követi minimálisan?
- Cifu: Űrhajózás 2025 - Összefoglaló írás
- D1Rect: Nagy "hülyétkapokazapróktól" topik
-
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
-
Wyll
őstag
válasz
Fferi50
#29245
üzenetére
Igen, közben átgondolva rájöttem én is. Fordítási időben a függvény még kvázi nem is létezik, nem tud olyankor kód futni..
Az a baj, hogy ez egy elég speciális karakter.
A Segoe UI Symbol betűtípus (amit jó szívvel ajánlok mindenkinek, ha jeleket keres, mert gyakorlatilag szinte minden megtalálható benne) négy távoli unicode mezőjéről van szó (9632, 9633, 9640, 9660), amik pont kellenek a táblázatomba. (üres négyzet, teli négyzet, sraffozott négyzet, és háromszög) Viszont ezeket a speckó karaktereket sem a VBA szerkesztő, sem az immediate ablak nem tudja megjeleníteni
Ezért ilyen kerülőúton tudom csak beleírni őket a VBA kódba.Végül úgy csináltam ahogy te is írtad, hogy nem constant, hanem sima string variable lettek.
Lehetett volna mindenhova ChrW(9640)-et írni, de akkor mindenhol lefutna a függvény, lassul a kód. Úgyhogy inkább az elején egyszer beleteszem őket változóba, így inkább +memóriát áldozok erre.
Nem mintha ebben az esetben sokat számítana, de fő a tudatosság
-
Wyll
őstag
Hali!
Van egy ilyen VBA sorom (Excel 2010):
Const ures As String = ChrW(9633)
Azt kapom rá, hogy Compile error: constant expression required.
A ChrW(9633) nem konstans kifejezés? -
Wyll
őstag
Sziasztok!
Eszembejutott egy jó kérdés.
Aki ért kicsit a programozási nyelvekhez ill. paradigmákhoz, ti mit mondanátok, egy excel tábla celláinak programozása benne az (esetenként igen-igen bonyolult) képletekkel és az előre definiálható nevekkel milyen programozási paradigmát valósít meg vajon?Kifejezetten VBA nélkül értem, mert az ugye egy "hagyományos" procedurális/eseményvezérelt dolog.
-
Wyll
őstag
Kedves Delila és Fferi!

Hogyan lehetne leellenőrizni egy megosztott doksi esetében, hogy a legutóbbi szinkronizáció eredményeképp keletkeztek-e frissítendő (megváltozott) cellák?
Másképp: ellenőrizni, hogy vannak-e olyan cellák, amik egy eredményes szinkronizáció után (azaz amiben voltak valóban módosítások) színes kerettel ki lennének emelve?És a másik, hogy ezt az ellenőrzést hogyan lehet elindítani?
Mert ha jól sejtem, az AcceptAllChanges nemcsak elvégzi ezt az ellenőrzést, hanem egyből el is fogad minden esetleges változtatást.Tehát valami "sync check" kéne, majd az visszaad pl. egy tömböt és azt szeretném vizsgálni. (amúgy kb. csak annyit, hogy üres-e, vagy sem.) Meg lehet ezt valahogy?
*****
Mindezt SharePoint nélkül értem! Nem is tudom, mi az a sharepoint, de nekünk nincs olyan
Ez egy sima xlsm file a hálózatra feltéve. -
Wyll
őstag
Gyors gondolkodtató feladat:
egy ilyen leválogatást ti hogyan csinálnátok meg?Az volna benne az igazi feladat, hogy (ilyen fontossági sorrendben)
- az eredmény mindenképp egy lapon legyen, mert egyben akarjuk látni. (rejtett) segédlap(ok) lehetnek.
- esetleges új azonosítókra is egyből működjön; ha ez nem megy, akkor egy gombnyomás még belefér
- esetleg makró nélkül legyen megoldva -
Wyll
őstag
válasz
tgumis
#25566
üzenetére
Szűrőt lehet használni?
Abban az lenne a jó, hogy
- nem kéne hozzá függvényt írni,
- még gyorsabb is, mert nem feltétlenül kell pontosan beírni a keresett szöveget; vagy ha mégis, akkor elég csak a rendeléshez pontosan beírni a keresendőt, az így eredményül kapott max 6 sorból már szemmel is ki lehet választani a keresettet -
Wyll
őstag
Hogyan tudok a Ribbon-ra kitenni egy egyéni ToggleButton-t?
És persze egy saját makróval legyen kapcsolatban...
(pontosabban majd az eseményét módosítom)Lehet külön togglebutton-t valahogy beszúrni, vagy pedig a makrót kell beszúrni (ezt tudom hogyan kell), és valahogy a makrón belül elintézni, hogy ez egy togglebuttont eredményezzen a ribbonon?
-
Wyll
őstag
Hogyan lehet leellenőrizni egy megosztott doksinál, hogy a legutóbbi szinkronizáció eredményeképp vannak-e frissítendő cellák? Tehát hogy vannak-e olyan cellák, amik egy eredményes szinkronizáció után (azaz amiben voltak mdosítások) színes kerettel ki lennének emelve?
És a másik, hogy ezt a szinkronizációt hogyan lehet elindítani?
VBA-ról beszélek.
Tehát "szinkr.ellenőrzés", majd annak eredményének vizsgálata kéne. Van ilyen? -
Wyll
őstag
válasz
Fferi50
#25489
üzenetére
De igazából nem akkor akad ki, amikor (elsőre, kézzel indítva) lefut az időzítés, hiszen egyrészt olyankor még nem kapok hibaüzenetet, másrészt utána pont a beállított idő eltelte után újra le akarna futni, ami helyes.
Csak épp ilyenkor mégsem fut le, hanem jön a hibaüzenet.
Most amúgy odaírtam a value-t is, és nem javított a helyzeten.Ez inkább olyan, mintha nem találná a kért függvényt.. valami névhiba vagy stringhiba..

Gondoltam hogy esetleg hiányzik a zárójel, vagy ilyesmi, de nem..
Vagy önmagát ne tudná beidőzíteni? Ez csak egy string, nem függvénypointer.. -
Wyll
őstag
válasz
Fferi50
#25482
üzenetére
Még most is ugyanezt írja ki, pedig azóta konszolidáltam a kódot, és marhára nem csukom be a file-t!
Szépen az x másodperc lejártakor jön a hibaüzenet...Ennyi a lényeg:
Private Sub Workbook_Open()
Call frissito_idozito
MsgBox "Frissítés elindítva!"
End Sub
Sub frissito_idozito()
Dim kovetkezo As Range, gyakorisag As Range
Set kovetkezo = ThisWorkbook.Sheets("titkos").Range("A1")
Set gyakorisag = ThisWorkbook.Sheets("titkos").Range("A2")
MsgBox "Frissítés..."
'Call frissites
kovetkezo = Now + gyakorisag
Application.OnTime kovetkezo, "frissito_idozito"
End SubAkkor sem jó, ha zárójellel a végén írom a string-be a sub nevet.
-
Wyll
őstag
válasz
Fferi50
#25482
üzenetére
Igen, ez már megvolt ha visszaolvasol, pont ehelyett akartam áttérni makróra, mivel a beépített frissítés csak beolvassa a változásokat, de a linkeket nem update-eli, ami nekem nem elég, mert a linkek maguk nem változnak, az viszont igen, amit beolvasnak, de az meg már link update, nem szinkronizáció.
Ezért most kézileg kell az egészet újraépítenem, aminek két előnye lesz:
- 5 percnél gyakrabban is beolvashatom a változásokat
- azt teszek a loop-ba amit csak akarok, itt most persze a linkek update-je a lényeg -
Wyll
őstag
válasz
Fferi50
#25460
üzenetére
"Az éppen abban a pillanatban elindult frissítést viszont már nem tudod kikapcsolni, az le fog futni, csak a későbbi időpontot lehet "törölni"."
Igen, de amit te írtál, az csak akkor törli a későbbi időpontot, ha az már korábban bejegyződött.
Így ha azonos másodpercben zajlik az újraélesítés és a kilépés, akkor a kilépés nem fogja deaktiválni az immár a kilépés utánra datálódó időzítést. (Lehet hogy erre azért nem gondoltál, mert te még nem írtad bele az újraélesítést.)Nade ez igazából már részletkérdés, a lényeg az ötlet volt, amit köszönök.
Bár azért egy olyan aprócska gond azért van vele, hogy ez tulajdonképpen egy megosztott dokumentumba folyamatosan belefirkál, azaz módosítja magától akkor is, ha a felhasználók hozzá sem nyúltak..
Nem lehet, hogy jobb lenne az idő megjegyzésére egy globális változót használni? Lehet VBA-ban olyat egyáltalán?És egy jelenség;
a frissítés még nincs benne, egyelőre a rendszeres időzítést akarom szépen stabilizálni:Ez mi lehet?
-
Wyll
őstag
válasz
pepenek
#25455
üzenetére
Egyrészt az összefűzésre használható az
&
(összefűzés) operátor is, szerintem egyszerűbb ezt használni, ha sok az összefűznivaló. Pl:
"Termék neve: " & link & ", ami még változhat."
A stringben pedig idézőjelet duplaidézőjellel tudunk elhelyezni:
"Termék neve: " & link & ", ami még változhat. Speciális, ""barbatrükk"" eljárással készült termék."
Idézőjellel befejezni egy stringet ebből következően három idézőjellel lehet:
"Használt eljárás neve: ""barbartükk"""
-
Wyll
őstag
válasz
Fferi50
#25241
üzenetére
Szia!
Nagyon köszi a válaszodat, most jutottam csak odáig, hogy érdemben foglalkozzak vele. Egy felvetés: a
timevalue(kovetkezo) > Time
feltétel mindig igaz lesz, hiszen a kovetkezo az egy valódi dátum (Now + Timeserial), ellenben a Time függvénnyel, ami csak az adott napon belüli időt adja vissza, és utóbbi az excel dátumábrázolásában nullánál kisebb érték.
Szóval nem lehet hogy inkább atimevalue(kovetkezo) > Now
feltételt kéne használni?
***
Őőő, nem szóltam

If the time argument contains date information, TimeValue doesn't return it. ... -
Wyll
őstag
válasz
KERO_SAN
#25287
üzenetére
Két kérdés:
- Nem igazán értem, hogy ez miért jó megoldás... Külön-külön így egyik sem ad jó megoldást. Csak ha az egyik a másik végeredményét használná.
Esetleg egybeágyaztad őket?
pl. =JOBB(BAL(A1;5);4)- Persze még ez sem jó, mivel balról 5 karakter az nem kevés egy kicsit?
Nem azért, hogy a saját lovamat dicsérjem, de az én megoldásom bármekkora számra működik, a tiéd viszont csak 4 számjegyűekre, azaz még a saját példádra sem jó
-
Wyll
őstag
Háj óll egen!
Van egy közös használatú xlsm-ünk (nevezzük A-nak), és ebben egy csomó külső xlsm-re (nevezzük ezeket B-nek) mutató link.
Az van, hogy:
Amikor az egyik B-t módosítja A-nak az egyik felhasználója, akkor őnála nyilván A értékei is megváltoznak (a "kiolvasott" értékek). Ezért nyilván idővel A többi felhasználójánál sikoltani kezd az excel, hogy heló van. Persze valójában nem a cellákban lévő képletek (linkek) változtak, hanem azoknak az eredménye (amik ugye B-kből olvasódnak ki), így hiába fogadunk el akár automatikusan minden változtatást, az nem azonos a linkek frissítésével, tehát az értékek A többi felhasználójánál nem fognak frissülni.Három dolog kéne:
- hogyan lehet az ilyen linkeket frissíteni?
ezt már sikerült megtalálnom. összes link frissítése:
ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources- mi az, illetve van-e olyan esemény, amikor kiderül, hogy valaki valamit módosított? mert akkor a fenti sort abba egyből beletenném, és így lenne automata linkfrissítés is. valami ilyesmire gondolok:
Private Sub Workbook_SomebodyChangedSomething()
End SubAttól félek amúgy, hogy nincs
Ez esetben gondolom valamilyen manuális (VBA-s) ellenőrizgetés kell.. De valahogy azt is mindenképp automatizálni kéne. Erre ötlet? Nem lehet valahogy a már eleve automata x percenkénti frissítést kihasználni?- meg lehet-e azt csinálni VBA-ból valahogy, hogy az excel ablaka a tálcán ilyen sárgán elkezdjen villogni:
-
Wyll
őstag
Arra gondolj majd mindig, miközben a VBA-t tanulod, hogy kijelölni csak nekünk embereknek kell a cellákat, de az excel-nek nem. Az excelnek nem kell előbb kijelölni valamit, hogy azután tudja törölni a kijelölést; hanem egyből lehet neki azt mondani, hogy a valamit töröld.
Tehát pl.
Columns("G:L").Select
Selection.Delete Shift:=xlToLefthelyett:
Columns("G:L").Delete Shift:=xlToLeft
Ez igazából az excelnek meg a vba-nak az objektumorientáltságából következik, de nem akarok túl csúnyákat mondani. A lényeg, hogy ez a szemlélet az egész excel vba programozást átitatja.
Ja, és használd
gombot hsz írásakor! 
-
Wyll
őstag
válasz
sedyke
#25197
üzenetére
Szerintem itt ez a cikk elég jól körüljárja a
"Hogyan számoljuk meg excel-ben az egyedi értékek számát"
témát. Több módszert is mutat. Üres cellák figyelembevétele vagy nem vétele is benne van. Példamunkafüzet, videó is van. Hasonló slashing megoldásához is. -
Wyll
őstag
válasz
katka84
#25193
üzenetére
Nem feltétlen kell hozzá makró.
Elrejtheted a lapot, majd utána levéded a munkafüzet szerkezetét, amihez lehet jelszót is rendelni:Ekkor viszont nagyon meg kell jegyezned a jelszót.
Ha makrót írsz, akkor a makróban benne lehet maga a jelszó, így nem feltétlen kell megjegyezni, az persze más kérdés, hogy ez mennyire biztonságos... -
Wyll
őstag
válasz
Fferi50
#25100
üzenetére
Értem, és valóban működik is! (Nem probléma angolul beírni.) Köszönöm!

Persze számformátummal fogom megcsinálni!
Elegánsabb.Már csak egy (költői) kérdésem maradt:
"Ezt a sort így :=HA(valami = 0;"nincs kitöltve";valami) a VBA és az excel szövegként értelmezi."
Miért?
De ha belegondolok, akkor pont azért, mert a VBA számára a Formula property ha nem angol fv neveket tartalmaz, akkor text. -
Wyll
őstag
válasz
Polllen
#25099
üzenetére
Pedig ha megnézem a típust (rákattintok egérrel a szóban forgó cellára, és megnézem fent a ribbonon, hogy mit ír a számformátumának), akkor Általános-t ír.

Most vagy az van, hogy ez így van jól, és még kéne még egy utolsó művelet a VBA-ba (pl. hasamraütök: Run), vagy ez valami kis bug, de akkor is VBA-ból kell megoldanom

-
Wyll
őstag
VBA-ból módosítom egy cellának a formuláját:
Private Sub datumfuggveny(amit As Range)
Dim temp As String
temp = Right(amit.Formula, Len(amit.Formula) - 1) ' a kezdő egyenlőségjelet levesszük
amit.Formula = "=HA(" & temp & "=0;""nincs kitöltve"";" & temp & ")"
End SubAz érthetőség kedvéért ezt akarom a cella formulájának:
=HA(valami = 0;"nincs kitöltve";valami)
Eddig ok. Mi is ezzel a gond?
A gond az, hogy a makró lefutása után a cellában maga a =HA(valami = 0;"nincs kitöltve";valami) szöveg látszik, nem pedig a formula eredménye. Pedig ugye egyértelmű, hogy a formulát módosítottam.
Viszont ha rámegyek a cellára, nyomok egy F2-t (szerkesztés), és egyből entert nyomok, akkor kiszámolja a helyes eredményt.
Pedig a számolási beállítások automatikusra vannak állítva. Továbbá az F9 (újraszámolás) sem oldja meg a dolgot.Szóval mit csinálok, amikor F2 + enter-t nyomok, és azt hogyan lehetne VBA-ból?
****
Habár, most hogy gondolkozom, ezt amit akarok meglehetne csinálni egyedi formátummal is (nullára vonatkozó értékek), és akkor nem kéne itt függvényezni meg formulázni...

-
Wyll
őstag
válasz
Fferi50
#24876
üzenetére
Hmm, jó ötlet, nem tudtam, hogy a Range-nek address property-je is van

Valószínűleg csak otthon fogom tudni kipróbálni, ezért addig is egy kérdés:"kitoltendo" és "KELL" ugyanolyan alakú, sokcellás (1sor magas, 25 cella széles) range-ek.
A copy-paste ehhez pont jó, mert a "kitoltendo" összes celláját beállítja, de van egy olyan érzésem, hogy a kitoltendo.formula -ra ez már nem lesz így igaz, hanem egyenként kell beállítanom... Egyetértesz? Ha igen, hogy csinálnád?Amúgy(1): az enyém vajon miért nem működik?

Amúgy(2): itt van egy csávó, aki azt állítja, hogy bármennyire is furcsa, PasteSpecial helyett simán elég volna Paste-t használnom. Nyilván kipróbáltam, de így sem ment...
Szerinted (is) hülyeség? Ha igen, akkor megy neki a mínuszpont ![;]](//cdn.rios.hu/dl/s/v1.gif)
-
Wyll
őstag
Sziasztok!
Elég fontos volna. Hogyan lehet VBA-ban ezt megcsinálni:

Szerintem így:
dstbook.Worksheets(1).Range("KELL").Copy
srcbook.Activate
kitoltendo.Select
ActiveSheet.PasteSpecial link:=True
Application.CutCopyMode = FalseCsakhogy így nekem marhára nem cellahivatkozások jönnek létre.
Pedig azt szeretnék. -
Wyll
őstag
Sziasztok!
Van kezdetben egy főlap munkalapom, és egy BASIC munkalapom.
A főlap segítségével a júzer létre fogja hozni egyenként a BASIC munkalap sok-sok másolatát, mindet egy-egy egyedi névre átnevezve, és a főlapra ezen egyedi lapok bizonyos cellái be lesznek linkelve.
A BASIC lapon elég sok összetett képlet van, így annak másolatain is elég sok összetett képlet lesz.
Továbbá a BASIC laphoz tartozik még egy tonna bonyolultan definiált név is (amiket a képletek használnak), amik Munkalap szintűek, így aztán minden egyes másolathoz is tartozni fog egy-egy tonna, az adott másolatra érvényes név is.
Namost tesztelgetés közben azt vettem észre, hogy már 10 lap körül is igencsak érezhetően belassul egy-egy ilyen másolatnak a létrehozása. Ez nem túl biztató, mivelhogy az a terv, hogy nagyságrendileg 150 ilyen másolatot akar majd a júzer összesen létrehozni...
A file mérete ránézésre nem tűnik vészesnek, 510kB. Viszont a megnyitása már most is tart vagy 20-30 másodpercig.
A kérdésem, hogy mennyire bölcs dolog így ez az egész konstrukció?
Megáll-e a lassulás egy elfogadható szinten, vagy lineárisan, netán exponenciálisan csak romlani fog? -
Wyll
őstag
Beállítok egy változót, hogy a makrómat is tartalmazó, éppen aktív, kiinduló workbook egyik sheet-jére mutasson:
Set mysheet = ActiveSheet
Utána valamivel megnyitok egy másik file-t, innentől persze ez lesz az aktív. A kódnak ebben a részében használhatom-e a mysheet változót (objektumot), és az mire fog mutatni? Csak mert nekem hibát dob, és nem értem miért.. Én azt gondolom/szeretném, hogy a kiinduló file-om megfelelő sheetjére mutasson.
-
Wyll
őstag
válasz
m.zmrzlina
#24455
üzenetére
Akkor sorry, nem találkoztam még ilyennel, hogy miért tiltódik le a névkezelés...

-
Wyll
őstag
válasz
m.zmrzlina
#24453
üzenetére
Az elnevezett tartományokkal nagyon vigyázz, amennyiben nem kizárólag abszolút ($-os) hivatkozás(oka)t tartalmaznak!
Amúgy semmi különbség nincs ahhoz képest, mint ahogy a saját munkalapon csinálnád:
írod szépen a képletet, majd amikor kell a másik munkafüzet, átkattintasz rá, F3, kijelölöd a nevet, enter, majd visszakattintasz a függvényedhez, és írod szépen tovább.Szintaktikailag ugyanúgy kell írni, mintha egy cellahivatkozás lenne, nem kell idézőjel meg semmi, a másik file neve persze itt is szögletes zárólejben van, ahogy mindig.
Amúgy meg google. -
Wyll
őstag
Erre az érdekes problémára valakinek ötlet?

-
Wyll
őstag
Ha már volt szó feltételes formázásról, itt van egy érdekes feladat, amire én hirtelen nem tudok megoldást:
Egy kép többet mond ezer szónál:

A lényeg, hogy különböző számban lehetnek egymás alatt azonos tartalmú cellák, és a változó méretű de azonos tartamú "szakaszokat" kéne felváltva színezni, hogy elkülönüljenek egymástól. Ja, és persze VBA nélkül, mert "úgy túl könnyű lenne" - szóval persze sejtem, hogy vba-val meg lehet csinálni, de engem az érdekel, hogy elvileg egy mezei (non-VBA) user is meg tudná-e csinálni.
A hiányosság amúgy szerintem abban áll, hogy a formázásra nem lehet forrást megadni. Ha lehetne, akkor így lehetne okoskodni: "amennyiben a tartalmam egyenlő a felettem lévőével, akkor a formázásom is legyen azonos; ha nem akkor pl. egy megadott mintacelláéval egyezzen meg". A jelen körülmények között annyit lehet szerintem csinálni, hogy a szakaszok első elemét különböző színűvé tudom tenni, de nem az egész szakaszt.
Várom a meglátásokat

-
Wyll
őstag
válasz
bumlet
#24302
üzenetére
Ehhez kelleni fog egy segédoszlop, ugyanis önmagában nem lehet egy cellából (VBA nélkül) kivenni az abban lévő képletet. A formulák csak más formulák eredményeivel tudnak dolgozni, magukkal a más formulákkal nem.
A segédoszlop kezdődjön mondjuk Munka2!A1-ben. Ez tartalmazza a kívánt sor számát (akár képlettel kiszámolva, akár kézzel beírva, nem tudom, hogy hogyan keletkezteted), és innen már adja magát a dolog:
Munka2!A2 képlete: =A1+1
Ezt lehúzhatod, ameddig akarod, egy szép növekvő számsort fogsz kapni A1 értékétől kezdődően.Mellé a B oszlopba meg lehet írni a hivatkozást, ami ezeket a számokat használja fel:
Munka2!B1 képlete: =INDIREKT("Munka1!A"&A1)
Ezt lehúzod az A oszlop mellé, és kész.Ezután az A oszlopot akár el is rejtheted, habár módosítani mindig az A1-et kell majd. De persze ez is kikerülhető, ha a kezdőszámot egy látható cellába teszed, és A1 arra hivatkozik. Ez már csak esztétika.
-
Wyll
őstag
válasz
Fferi50
#24296
üzenetére
Mit értesz az alapcellán és a viszonyítási alapon? Mmint mi a különbség?
Szerintem pont ez a marha jó a relatív nevekben, hogy dinamikusan, bárhol használhatók!
Épp a múlt héten kellett írnom két elég nagy többszörösen összetett függvényt, és 1000x könnyebb volt benne tájékozódni nevekkel, mint cellahivatkozásokkal. Sőt, előre meg tudtam írni notepad-ban, nem kellett a cellákkal foglalkoznom. De egy csomó tutorial is van a neten relatív nevekkel. Nem hinném, hogy ellenjavallt lenne.Szerintem VBA-ban annyi lesz a gond, hogy a Range() csak így simán object qualifier nélkül az ActiveSheet-re vonatkozik, aminek a bal felső cellája (a viszonyítási pontja) pont az A1. Éppen ezért lehet megadni neki pl ("B3")-at, ami így tényleg a B3-as cellát fogja jelenteni.
De ha "balra mutató" (negatív offset) relatív nevet akarok használni, akkor meg kell adnom, hogy mihez képest.. Mindjárt megnézem. (vagy majd holanp
) -
Wyll
őstag
válasz
Fire/SOUL/CD
#24294
üzenetére
Az előző képet még a melóban csináltam. De nyugodtan elhiheted, hogy ott is csak két név volt

Viszont az azért ezen is látható, hogy az E3:F10 cellákban, de legalábbis a képen az F7 cellában proba (aosz-szal azonos) van, és helyesen az A7 értékét adja (illetve E3:F10-en belül A-nak azonos sorában lévő cella értékét adja) eredményül.
És azt gondolom, hogy a VBA Range("proba").Address -nek is ugyanezt kéne visszaadnia, ha ugyanazon a cellán állva futtatom. Az MSDN szerint ez teljesen legális használat. ("Similarly, you can use a named cell instead of A1..."). Bár relatív hivatkozásra ott sincs példa.
Btw. sajnos nem lehet egyszerre láttatni a névjegyzéket, a VBA szerkesztőt meg a messagebox-ot is.
-
Wyll
őstag
válasz
Fire/SOUL/CD
#24292
üzenetére
-
Wyll
őstag
válasz
Fire/SOUL/CD
#24290
üzenetére
Csakhogy nem neveztem el sem A1-et, sem $A$1-et semminek.
$A$3-at elneveztem aoszlop-nak, ez van a C3:D10-ben,
és $A3-at pedig elneveztem az E3-on állva(!) aosz-nak, ez van az E3:F10-ben.
Látszik, hogy mindkettő működik a cellákban.Viszont a vba kódot ActiveCell.Address = C7 mellett futtatva $A7-et kellett volna hogy kapjak.
-
Wyll
őstag
válasz
Fferi50
#24288
üzenetére
Az, hogy aosz egy relatív (részben $ nélküli) cellahivatkozás. (A oszlop azonos sorban lévő cellája.)
És cellákban használva jól működik, ahogy az látható is,
viszont VBA-ból szemmel láthatóan más címre oldódik fel, mint a worksheet celláiban. $A7-et kellett volna kapni végeredményül $A$1 helyett.De mondd, hogy elnézek valamit

-
Wyll
őstag
válasz
LordVader80
#24284
üzenetére
Pont így gondoltam én is! Örülök, hogy sikerült!

-
Wyll
őstag
válasz
Delila_1
#24282
üzenetére
Pedig az MSDN-en is ott van az egyértelmű példa, mégsem megy:
Én már ezt nem értem...

Lehet hogy az a baj, hogy relatív a hivatkozás? -
Wyll
őstag
válasz
Delila_1
#24276
üzenetére
[link]: "Természetesen elég két szín összesen, csak egymás után négyesével különüljenek el."
Természetesen lehetséges hogy létre kell hozni még egy - komplementer - feltételt is az előbb említett módon, ha nem jó az alap fehér:
=MARADÉK(V17;8)>=4Bár elkülönülni enélkül is elkülönül.
megj: Amióta a neveknél felfedeztem, hogy milyen oltári szuper, hogy lehetnek relatívak, azóta már mindenre ezt gondolom, és lám, tényleg

-
Wyll
őstag
válasz
Delila_1
#24273
üzenetére
Mégis meg lehet csinálni egyetlen szabállyal!!!!!!!!

Egy cellára megcsinálod a szabályt, figyelve hogy az önhivatkozás relaítv legyen (tehát $-ek nélkül), leokézod, majd a formátummásolóval továbbviszed a többi cellára is.
Ahogy te is mondod, a formázáskezelő a bal felsőre vonatkozót fogja mutatni, de mégis működik:
Elnézést, a sorok számai lemaradtak, az 1-es a 17-esben van, az alsó 16-os pedig a 32-esben.
Meg még dupla is lett. -
Wyll
őstag
válasz
Delila_1
#24268
üzenetére
Én meg ezen gondolkozom itt nagy erőkkel, hogy vajon a feltételes formázás hogyan lesz relatív a létrehozás helyéhez?!
Vagy miért csak a cellaértéken tud alapulni, miért nem tud a cellaértékre alkalmazott függvény eredményén alapulni?A feltételt már ki is találtam: =MARADÉK(<önmaga>;8)<4
(cella értékének 8-cal vett maradéka kisebb négynél)LordVader: nem fogalmaztál rosszul, én már elsőre is értettem

-
Wyll
őstag
A Munka1-be beszúrnék legfelülre egy új üres sort, és ide a B, C, D stb oszlopokba beírnám rendre az 1, 2, 3 stb számokat annak megfelelően, hogy hány periódus van. Így kialakulna egy olyan táblázat, aminek a baloldalán a keresett dátum található, a tetején meg a keresett periódus (Munka2-beli) sora. A többit a vizsgálófüggvény teszi hozzá, a következőképpen:
A táblázat B2 cellájába a következő függvényt írnám:
=HA(ÉS(INDIREKT("Munka2!A"&B$1)<=$A2;$A2<=INDIREKT("Munka2!B"&B$1));INDIREKT("Munka2!C"&B$1);"")
És ezt kitolnám a teljes táblázatra. Így szépen fel lesz írva egy dátum mellé, hogy mely periódusokba esik bele.
Tehát így:


Ez a megoldás viszont nem igazodik automatikusan a periódusok számához.
-
Wyll
őstag
válasz
ritterkrisz
#24241
üzenetére
ÖSSZEFŰZ() függvény, vagy az ezzel egyenértékű & operátor.
-
Wyll
őstag
Először is nagyon köszönöm az eddigi segítséget, ami itt kaptam, főleg Delila-tól és Fferi-től, sokat segítettetek!
Most újabb kérdésem volna, vajon miért dob hibát erre a soromra:
y = Range("rel_ev")
y az egy Long, rel_ev pedig egy név, mégpedig relatív:
=ÉV(Munka1!$G19)G19-ben pedig egy dátum van. Azazhogy minden sor G oszlopában egy dátum van.
-
Wyll
őstag
válasz
Fferi50
#24189
üzenetére
Igen, ez a "belelátós" módszer a 3D-s névvel (nem tudtam hogy így hívják) valóban működik (és én is pont ezt szeretném, és így is csináltam), de csak amíg be nem zárom a file-t. A legközelebbi megnyitáskor viszont rákérdez, hogy frissítse-e a hivatkozásokat, és ha ekkor nincs megnyitva a hivatkozott file, már HIV! lesz a hivatkozás értéke.

Gondolom pont ezért csinálod, hogy behelyettesíted az értékével.Viszont mi van, ha időközben megváltozott az az érték? Pont ez lenne egy hivatkozás értelme, hogy mindig a aktuális értéket tartalmazza. Pl. minden megnyitáskor újrafrissítem ezeket makróból?
-
Wyll
őstag
Az oszlopelrejtés <--> togglebutton összehangolás sikerült, köszönöm!
Most visszatérnék a Delila-val az INDIREKT() függvény-es dologra

Kérdésem: ha jól látom az van, ha az INDIREKT() fv argumentuma külső hivatkozás, akkor a hivatkozott fájl meg kell legyen nyitva a (fv lefutásának pillanataiban), hogy működjön, és ne HIV! végeredményt kapjunk.
Na most, ez nekem nem nagyon jó. Pont azt szeretném megvalósítani, hogy egy csomó hálózaton lévő különböző file-ból magától beolvasson egy csomó adatot a linkeken keresztül. Hogyan lehet ezt megcsinálni?

-
Wyll
őstag
válasz
Fferi50
#24148
üzenetére
Ez az egész inicializáláskor van, tehát a gomb állapota ilyenkor még tuti 0.
És azt akarom, hogy az legyen hogy
gomb benyomva <=> látszik az oszlop
gomb felengedve <=> nem látszik az oszlopTe pedig azt mondod most, ha jól értem, hogy az oszlop láthatóságát állítsam a gombhoz (ami ebben az esetben ugye 0, tehát rejtsem el az oszlopot), ne a gombot az oszlopéhoz. Csakhogy pont azt szerettem volna elérni, hogy megnyitáskor a gomb felvegye az oszlop állapotát, az ugyanis megőrződik az elmentett file-ban.

Persze értem, hogy mi a helyzet, hogy mindenképp lefut az eventhandler, így trükközni kellene, pl meg lehet jegyezni valahogy megnyitáskor az oszlop állapotát, utána szinkronizálni a gombbal, majd "visszaállítani" a kezdeti állapotot. Csak ez nem valami elegáns szerintem - de cáfoljatok meg

------------------------------------
Delila_1:
Az én click eseményem:
Private Sub togbutTranslate_Click()
Call AngolCellakOnOff
End Sub
Private Sub AngolCellakOnOff()
Range("b_forditocellak").EntireColumn.Hidden = Not Range("b_forditocellak").EntireColumn.Hidden
End SubHa másik modulban van a sub, az min változtat?
Kérnék szépen egy kis magyarázatot a példádhoz, mert sajnos nem nagyon értem

-
Wyll
őstag
Ha egy toggle buttonnak vba kódból értéket adok
Me.togbutTranslate.Value = Not (Range("b_forditocellak").EntireColumn.Hidden)
akkor az a baj, hogy végrehajtódik a hozzátartozó _Click() event is, amit én kifejezetten nem szeretnék.
(Ugyanis így pont elcsúszik a gomb benyomottsága és a b_forditocellak rejtettsége közötti szinkron, pedig épp ezt akarom itt beállítani.)Jelenleg így próbálom:
Application.EnableEvents = False
Me.togbutTranslate.Value = Not (Range("b_forditocellak").EntireColumn.Hidden)
Application.EnableEvents = Truede sajnos így is lefut a _Click() event

Ezt mellesleg onnan tudom, hogy debuggolva végigléptetem a folyamatot.Megoldásötlet?

-
Wyll
őstag
válasz
Delila_1
#24026
üzenetére
Most jövök rá, hogy a te #24020-as példád is tartalmaz hibát (szerintem):
=indirekt("konfig!B2" & "[sample.xlsm]Munka1!definialtnev")Ugyanis a konfig!B2 tartalmát nem indirekten kell értelmezni (hanem csak majd az annak a tartalmából és a még hozzáfűzött szövegből keletkező egészet), ezért szerintem nem kéne köré idézőjel:
=indirekt(konfig!B2&"[sample.xlsm]Munka1!definialtnev")Itt jön viszont, hogy valóban space is van benne, tehát szerintem így kéne:
=INDIREKT("'"&konfig!B5&"[sample.xlsm]Munka1'!B5")
... csakhogy így sem jó

Mellette egy cellában - teszt céljából - a
='\\eleresiut\[sample.xlsm]Munka1'!B5
viszont működik -
Wyll
őstag
válasz
Delila_1
#24020
üzenetére
Ááááá, nem jó

Se így:
=INDIREKT("konfig!B5"&"[sample.xlsm]Munka1!B5")
Se így:
=INDIREKT("eleresiut"&"[sample.xlsm]Munka1!B5")
Se így:
=INDIREKT(eleresiut&"[sample.xlsm]Munka1!B5")Az eleresiut cella helyesen \-re végződik, viszont van az elérési útban space. Az nem lehet gond?
-
Wyll
őstag
Van egy - szerintem - furmányos kérdésem. Egy ilyen hivatkozást szeretnék kreálni a kontroll.xlsm fájlomban:
='\\szerver\mappa szunettel\[sample.xlsm]Munka1'!definialtnev
Csakhogy konkrétan ez a '\\szerver\mappa szunettel\' út a kontroll.xlsm egy másik munkalapján van egy cellában (konfig!B2). Amire nem mellesleg definiáltam is már egy nevet: eleresiut.
Ezekből hogy lehet kihozni, hogy ugyanazt adja, mint a fenti képlet?Valami ilyesmire gondolok:
='eleresiut'[sample.xlsm]Munka1!definialtnev
-
Wyll
őstag
Vajon mi a baj?
Azt akarom, hogy egy userform-on lévő toggle button akkor és csak akkor legyen benyomva (value=1), amikor bizonyos oszlopok nincsenek elrejtve (hidden = false); illetve hogy a be vagy kikapcsolása egyben rejtse is el vagy jelenítse is meg a cellákat.
A rejtés/felfedés funkció működik is szépen, csak az inicializálás nem: ha a cellák el vannak rejtve, akkor sem lesz benyomott állapotú a userform indulásakor.
Private Sub togbutTranslate_Click()
If Range("b_forditocellak").EntireColumn.Hidden = True Then
Range("b_forditocellak").EntireColumn.Hidden = False
Else
Range("b_forditocellak").EntireColumn.Hidden = True
End If
End Sub
Private Sub UserForm_Initialize()
If Range("b_forditocellak").EntireColumn.Hidden = True Then
Me.togbutTranslate.Value = True
End If
Me.labVersion.Caption = "Jegyzőkönyv verziója: " & Worksheets("MAGYAR").Range("N2").Value
End Sub -
Wyll
őstag
Üdv
Hogyan lehet makrobol elindítani egy másik (már megnyitott) file másik makróját?
A következőt szeretném:
a.xlsm fileban elindítom az x makrót. Futása soran ez megnyitja b.xlsm file-t. Ott csinál ezt-azt (aktív a b.xlsm workbook), majd meghívja b.xlsm file y makróját. Y szépen lefut, majd visszaadja a vezérlést x-nek.
Mellesleg ekkor x is befejeződik, es b.xlsm maradjon aktív.Szoval ezt hogyan kellene?
-
Wyll
őstag
válasz
m.zmrzlina
#23412
üzenetére
köszönöm, ezt is megnézem - majd holnap

köszi szépen!
-
Wyll
őstag
Szaisztok!
Vannak-e az excel vba-nak filekezelő függvényei?
Szeretnék egy makrót, ami:
- leellenőrzi, hogy egy bizonyos nevű file létezik-e már,
- ha igen, akkor megnyitja
- ha nem, akkor ilyen néven hozzon létre egy file-t, és azt nyissa meg
(utóbbi műveletet inkább úgy kéne megvalósítani, hogy egy már biztosan létező alapfile-t nyit meg, amiben kitölt pár értéket, majd mentés másként, pont a megadott néven.)Szóval ezt meg lehet csinálni?
Ha igen, akkor ehhez a fontosabb parancsokat le tudná valaki írni nekem? -
Wyll
őstag
válasz
Fferi50
#23024
üzenetére
Szia!
Először is, nem vagyok vba guru, egyáltalán nem tanultam vba programozást

Ennek ellenére azt hiszem sikerült összehozni:Sub sajatmentes()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogSaveAs)
With fd
.InitialFileName = Range("gyariszam") & "_jegyzokonyv"
.FilterIndex = 2 'xlsm, azaz makróbarát munkafüzetként
.Show
.Execute
End With
Set fd = Nothing
End SubHogy tetszik?

Szerinted is jó és megfelelő az eredeti célra? -
Wyll
őstag
Sziasztok!
Azt szeretném megcsinálni Excel 2010-ben, hogy ha
- a munkafüzet nincs még elmentve, vagy
- el van már mentve, de a mentés máskéntre kattint a júzer
(tehát magyarul amikor felugrik a mentésablak),akkor ajánljon fel egy általam meghatározott filenevet a mentéshez, ami nem más, mint egy adott cella tartalma+egy énáltalan megadott string ("_jegyzőkönyv"), és kiterjesztésnek pedig a már meglévő .xlsm (makróbarát munkafüzet) kiterjesztés.
Próbálgattam már makrót írni rá innen-onnan összeollózott forrásokból, és erre jutottam:
Sub mentesmaskent2()
' mentesmaskent2 Makró
ActiveWorkbook.SaveAs Filename:=Range("gyariszam") & "_jegyzőkönyv" & ".xlsm"
End SubEz ugyebár nem dob fel mentés ablakot, csak megcsinálja.
Kérdésem, hogy
- ez így korrekt-e, vagy a működőképessége ellenére mindenképpen lenne hozzá javítási javaslatotok?
- meg lehet-e úgy csinálni, hogy egy mentés ablakba írja be előre magától a kért filenevet?Gyakorlatilag egy alapértelmezett mentési nevet kéne megadni. Már ha van ilyen..

-
-
Wyll
őstag
Van egy nagy, anonim közvéleménykutatás táblázatom, a felső sorban a kérdések, alattuk a válaszok (egy sor - egy válaszadó).
Hogy lehet megszámolni, hogy adott kérdés(ek)re adott válasz(okat)t produkáló válaszadóból hány darab van?
Szűréssel nem lehet megcsinálni?
(Hogy összeszámolja, hogy a(z esetleg többszörös) szűrésnek hány eredménye
van. Magyarul ahány sort nem rejt el végül a szűrés.)
Ha szűréssel nem megy, gondolom van erre valami jó bonyolult keresőfüggvény is...
Új hozzászólás Aktív témák
- LG UltraGear Gaming Monitorok -30%
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Full Prémium! Gamer PC-Számítógép!Rog Maximus XII! I9 10850K / RTX 3080 Suprim / 32GB DDR4 / 2TB SSD
- RAKTÁRKISÖPRÉS! Eladó projektorok!
- Samsung Galaxy S22 Ultra 256GB, Kártyafüggetlen , 1 Év Garanciával
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest
Ezért ilyen kerülőúton tudom csak beleírni őket a VBA kódba.
Ez egy sima xlsm file a hálózatra feltéve.




Ez esetben gondolom valamilyen manuális (VBA-s) ellenőrizgetés kell.. De valahogy azt is mindenképp automatizálni kéne. Erre ötlet? Nem lehet valahogy a már eleve automata 
gombot hsz írásakor!

![;]](http://cdn.rios.hu/dl/s/v1.gif)










