Keresés

Részletes keresés

Fferenc50 Creative Commons License 2024.02.19 0 0 37860

Szia!

Nem egészen értem. Mit jelent ez:

"azaz a cella tartalma és a változó nevei megegyeznek"

Egy cella tartalma nem lehet név és érték is egyúttal.


A mutatott utasítás 

 "CBool(Munka3.Cells(i, 5).Value) = True"

pedig nem ad semminek értéket.

A CBool utasítás átalakítja a paraméter értékét logikai értékké, a következők szerint:

Szöveg esetén hibajelzés (Type mismatch

0 esetén FALSE

Bármilyen más szám (negatív is!) esetén TRUE

Ha változónak szeretnél értéket adni, akkor annak a formája változónév = érték. Direktben cella tartalmat nem lehet változóként használni.

Egy lehetséges megoldás:

If cella.value (vagy text)="Kalap" then Kalap=valami (esetedben TRUE/False).

Ha mégsem jól értettem a kérdést, légy szíves tegyél fel egy példafájlt elérhetően.

Üdv.

Előzmény: _Nyuszi (37858)
pimre Creative Commons License 2024.02.19 0 1 37859

Kösz, de nem. Időközben megtaláltam a megoldást itt: https://www.extendoffice.com/documents/excel/5117-excel-active-cell-top-screen.html

A képlet, ami nem csak használni engedi a cellát, hanem meg is mutatja a képernyőn az a következő: Application.Goto ActiveCell, Scroll:=True

 

Előzmény: XtraP (37857)
_Nyuszi Creative Commons License 2024.02.19 0 0 37858

Köszi!

Azt hiszem, rosszul fogalmaztam meg.

Valami ilyesmit szeretnék:

for i = 5 to 82

    CBool(Munka3.Cells(i, 5).Value) = True

    (...)

Next i

 

Tehát a változó neveit felsorolom egymás alatt egy-egy cellában, és az éppen aktuális változó értékét szeretném igazra állítani (azaz a cella tartalma és a változó nevei megegyeznek). A tömb sajnos nem jó, mert később ezt logikai egyenletekben szeretném felhasználni és a változó neve sokkal-sokkal beszédesebb, mint a tömb egy-egy elemére hivatkozás.

Előzmény: Fferenc50 (37855)
XtraP Creative Commons License 2024.02.19 0 0 37857

Csak két tipp:

a) a munkalap "Set ws = ..." formában lett megadva?
b) nem lehet, hogy maga a munkalap nem az aktív? Azaz elsőként esetleg egy ws.Select ..?

Előzmény: pimre (37856)
pimre Creative Commons License 2024.02.19 0 0 37856

Egy egészen alapvetőnek látszó feladatot nem tudk megoldani. Munkalapokat másolok át egy kész munkafüzetből. Az egyik munkalapon háromszázvalahanyadik sor látszik.  Ugyanakkor a lekérdezésekkel kiderül, hogy valójában az A1 az aktív. Viszont ez nem látszik

A későbbi panel rögzítéshez szükségem lenne, hogy az első sort lássam, mert az N3 cellán állva szeretném a rögzítést. 

Kiválasztani, írni bele, olvasni, minden további nélkül tudnék, de képtelen vagyok elérni, hogy ráálljon a vezérlés.

A ws.Range("A1").Select parancs ellen nem tiltakozik, csak éppen nem áll rá. 

 

Kézzel persze meg tudom oldani, de programból kellene.  Már órák óta keresgélek, de nem találok megoldást.

Fferenc50 Creative Commons License 2024.02.18 0 0 37855

Szia!

Nem kell túlkomplikálni:

(Amennyiben szöveges érték van a cellában, akkor célszerűbb a Text tulajdonságot használni a Value helyett.)

 

KeJ_1=Munka3.Cells(23, 5).Text = "KeJ_1" 

Az összehasonlítás eredménye True/False lesz.

 

Üdv.

Előzmény: _Nyuszi (37854)
_Nyuszi Creative Commons License 2024.02.18 0 0 37854

Sziasztok!

Én is kérdeznék egyet: hogyan tudok a cella tartalmából a tartalomnak megfelelő változónak értéket adni?

Egy példa:

If Munka3.Cells(23, 5).Value = "KeJ_1" Then KeJ_1 = True

Ilyenből lenne kb. 90-100, a cella koordinátáját léptetném, az majd változó lesz.

A változók már léteznek, valami olyasmire gondoltam, mint a CBool(Munka3.Cells(23, 5).Value) = True, de ez _Nyúlván nem működőképes.

 

Tudtok valami ötletet erre?

XtraP Creative Commons License 2024.02.18 0 0 37853

Mi lehet az oka annak, hogy a VBA program alábbi utasítása néha nem törli a teljes tartományt?

 

MthSheet.Rows("1:13").Delete

 

Fizikailag ugyanarra a munkalapra ráeresztve kb 5-ből egyszer nem 13, csak 12 sort töröl, és hogy cifrázzam a dolgot, a "bennfelejtett" sor mindig a hajdani tizedik.  

 

Az alábbi verzió pontosan ugyanígy önállóskodik:

 

MthSheet.Rows("1:13").Select

Selection.Delete 

 

A 10-es sorban természetesen nem találok semmi extrát (az a sor amúgy üres is eredetileg, csak a teszteléshez felöltöttem mind a 13 sor első celláját, hogy lássam, melyik ragad bent) - arról nem beszélve, hogy "többnyire" azzal a sorral is megbirkózik.

 

Mi lehet a dolog mögött?

 

pimre Creative Commons License 2024.02.18 0 0 37852

Egész megdöbbentő és érthetetlen jelenséget tapasztaltam programírás közben:

 

Oszlopszámokból képzek oszlopneveket a következő függvény segítésével (az elvet Jimmytől kaptam évekkel ezelőtt):

 

Function oszlopnev(oszlszam As Long) As String 
Dim cellastring As String
cellastring = Cells(1, oszlszam).Address(rowabsolute:=True, columnabsolute:=False)
oszlopnev = Left(cellastring, InStr(cellastring, "$") - 1)
End Function

 

Évek óta használom, tökéletesen működik. Igazából most is, csak meglepetésemre az eredményt a VBA képernyőn nem jól jeleníti meg.

A cél a 41 és 41, valamint a 36 és 37 oszlopszámok összegét per jellel elválasztva betenni az immediate ablakban látható képletbe egy későbbi számítás alapjául. 

 

Meglepetésemre a "szoveg" változó fölé állva csak a képlet első fele jelenik meg, az immediate ablakban látszik a teljes képlet. Mielőtt az utóbbit lekérdeztem, hosszasan keresgéltem az okát, hogy hol hibáztam el az összefűzést, mire kiderült, hogy a képlet a szándékom szerint sikerült, csak nem látszik.

Érdekes módon az értékadás után a munkalap megfelelő cellájában szintén hibásan jelenik meg a képlet. Később a munkalapon már a jó adat látszik.

Ehhez hasonló összefűzögetést elég sokat csinálok ugyanebben a programban, és mind rendben van, ennek az egynek a kivételével.

 

Még annyit, hogy karakterenként megnéztem, nincs-e benne valami rejtett karakter, de semmi. 

 

Találkoztatok már hasonlóval?

 

 

Delila10 Creative Commons License 2024.02.16 0 0 37851

Teljesen jó az elképzelésed, én csak a felesleges részeket vettem ki a makródból, a felépítésen nem változtattam.

Előzmény: maciti (37850)
maciti Creative Commons License 2024.02.16 0 0 37850

Szuper! Köszi!

Igazán profi munka...

Én meg csak úgy "parasztosan" írtam...

Köszi még egyszer!

Előzmény: Delila10 (37849)
Delila10 Creative Commons License 2024.02.15 0 0 37849

Szia!

 

Klassz, de megpróbáltam kicsit egyszerűsíteni a makrókat a Module2-ben.

https://data.hu/get/14109334/Kimutatas_proba_1.xlsm

Előzmény: maciti (37848)
maciti Creative Commons License 2024.02.14 0 0 37848

Sziasztok!

Egy sorba rendezéssel, és formázással megoldódott, ha érdekel valakit…

link:

https://data.hu/get/14108770/Kimutatas_proba.xlsm

 

Előzmény: maciti (37846)
Eredő Vektor Creative Commons License 2024.02.14 0 1 37847

De hisz elmenti a munkafüzettel együtt. Megtalálod az Cellák Formázása / Szám / Egyéni (Valahol a lista legalján kell lennie)

Előzmény: Frenki02 (37840)
maciti Creative Commons License 2024.02.13 0 0 37846

Köszi!

Egy kicsit furán néz ki, mert nem egészen erre vágytam...
Ha nincs jobb ötlet akkor megszokjuk!

 

Előzmény: Delila10 (37845)
Delila10 Creative Commons License 2024.02.13 0 0 37845

A hossz mezőt át kell tenned az oszlopokhoz a kimutatásban.

Előzmény: maciti (37844)
maciti Creative Commons License 2024.02.13 0 0 37844

Sziasztok!

Segítségeteket szeretném kérni, az alábbi excel problémával kapcsolatban. Van egy néhány soros adatbázis, és abból készítenék egy rendszerezett táblázatot, mely hasonlóan néz ki mint egy kimutatás. Nagyon jó is lenne, addig amíg nincsenek azonos rekordok, mert azokat összevonja. Persze a kimutatásnak az a feladata, gondoltam ki lehet valahogy kapcsolni ezt az értékmezők számolásait, de nem sikerült. Tud valaki segíteni ez ügyben, vagy más megoldás is jó lenne, ami hasonlóan néz ki…

Előre is köszönöm…

 

minta:

 

https://data.hu/get/14108024/Kimutatas_proba.xlsx

m54-b Creative Commons License 2024.02.11 0 0 37843

Köszönöm!

 

Reméltem tudja az Excel, és ráérek bezáráskor foglalkozni vele.

Előzmény: Delila10 (37842)
Delila10 Creative Commons License 2024.02.11 0 1 37842

Egy eseményvezérelt makrót adhatsz a laphoz, ami a példa szerint az AX1 cellába írja be az utolsó bevitel helyét, és idejét.

 

Private Sub Worksheet_Change(ByVal Target As Range)
   Application.EnableEvents = False
   Cells(1, "AX") = Target.Address & " " & Format(Now, "yyyy.mm.dd hh:mm:ss")
   Application.EnableEvents = True
End Sub

Előzmény: m54-b (37841)
m54-b Creative Commons License 2024.02.10 0 0 37841

Létezik olyan vba változó, hogy melyik volt az utolsó módosított cella?

Frenki02 Creative Commons License 2024.02.09 0 0 37840

Segítséget szeretnék kérni.

Ha létrehozok egy új számformátumot, pl. "db" azt hogyan tudom elmenteni akár hozzárendelni egy kis parancsikont, hogy ne kelljen a későbbiekben újra előállítani?

VízÜgyes Creative Commons License 2024.02.09 0 0 37839

Igen, alapvetően így van, és próbáltam is ezt, de nem működik, marad a régi képlet.

Egyébként valószínűleg nem ugyanaz a verzióm van, mert nekem ezt így nem engedi. Formázás táblázatként lépés után tudok rá táblázatként hivatkozni.

De van ahol egyszerűen elneveztem a tartományt és úgy hivatkozom rá, ott is ugyanez történik.

Előzmény: Delila10 (37837)
VízÜgyes Creative Commons License 2024.02.09 0 0 37838

Nekem az összes táblázatom úgy működik, hogy be van képletezve, és ha sort szúrok be, bizonyos cellákba automatikusan bekerül a képlet, bármiféle makró nélkül. Azt gondolom, hogy azért, mert táblázatként van definiálva.

Egyébként most is azt csinálom, hogy amikor beszúrom a sorokat felhúzom a képleteket, hogy átírja a régi rosszat az új jóra, és épp ennek szükségességét akarom elkerülni.

Előzmény: pimre (37836)
Delila10 Creative Commons License 2024.02.08 0 0 37837

Ha átalakítod az adataidat tartalmazó területet táblázattá (a területen állva Beszúrás, Táblázat), megszűnik ez a gondod.

 

A táblázattá alakított tartományban 1 cellába beírt képletet az egész oszlop örökli, még a formátumát is, akár az aljára, akár a közepére szúrsz be új sort.

Előzmény: VízÜgyes (37834)
pimre Creative Commons License 2024.02.07 0 0 37836

Miért kellene beszúráskor bármit is beírnia az új sorba? Ha az kell. akkor a felette lévő képletet lehúzhatod, vagy az alatta lévőt bemásolhatod. Honnan kellene tudnia az Excelnek, hogy milyen képletek vannak az oszlop többi cellájában, és hogy te azok közül melyiket szeretnéd látni az új sorban? (Az más, hogy te tudod, hogy mindegyik azonos, ő nem tudja)

Egyébként nekem az furcsa, hogy nálad bármit betesz az új sorba. Nem fut véletlenül valami makró a munkafüzetben?

Előzmény: VízÜgyes (37834)
pimre Creative Commons License 2024.02.07 0 0 37835

Valamit javult a helyzet, bár így sem az igazi. Az ablakok látszólag egymáson vannak, de nem úgy rögzülnek, mint ahogy az alapállapot volt:

 

 

Azért köszönöm.

 

És bosszantó,hogy erre nem gondoltak Redmondban, vagy ha igen, akkor nem tették elérhetővé. És, hogy az alapállapot visszaállítása csak újrateleptéssel oldható meg.

Előzmény: Fferenc50 (37833)
VízÜgyes Creative Commons License 2024.02.07 0 0 37834

Sziasztok!

 

Tudnátok segíteni abban, hogy miért van az, hogy táblázatokban sor beszúrásakor automatikusan nem azt a képletet írja be, ami az oszlop többi cellájában van, hanem egy korábban használt képletet, mintha beégett volna neki? És ugyanez a helyzet a formázással is, sorok beszúrásakor az új sorokba tesz be automatikusan egy korábbi feltételes formázást.

Illetve ha tudja valaki, hogy ez mitől van, megoldást is tudna rá adni?

 

Köszi!

Fferenc50 Creative Commons License 2024.02.07 0 0 37833

Szia!

Sajnos nincs "alapértelmezés" beállítási lehetőség.

Némi kis macerával ismét beállíthatod a neked kellemes helyzetet.

Javaslat:

1. Jobb egérgomb - hide  minden ablakon (benne állva, nem a címén).

2. Egyenként: ablak - view  - jobb egérgomb az ablakon  mint fent - dockable elől pipa kivéve. Ezután mozgathatod, méretezheted az ablakot. Ha a "helyén van" jöhet a következő ablakra ugyanez.

Excel bezáráskor - ha üres munkalapod volt akkor is megkérdezi - nem kell menteni, megőrzi a beállítást.

Remélem, sikerül.

Üdv.

Előzmény: pimre (37832)
pimre Creative Commons License 2024.02.06 0 0 37832

A VBA-ban egy rossz mozdulattal elmozdítottam a helyéről a Locals ablakot, aztán, ahogy próbálgattam helyreigazítani (régebben sem sikerült hasonló esetekben) egyre rosszabb lett. Most éppen egymás alatt van a 3 ablak.

 

Az alapértelmezés, ahogy általában használni szeretem, ez (a laptopomról mentve):  

 

 

A mostani állapot az asztali gépemen:

 

 

Baromi kellemetlen. Létezik, hogy nincs visszaállítási lehtőség az alapértelmezett elrendezésre?

 

 

 

pimre Creative Commons License 2024.02.05 0 0 37831

Ha egy cellán belül akarod megcsinálni, akkor természetesen sehogy. Illetve csak makróval. Ugyanis nincs olyan függvény, ami a cella tartalmát módosítja, és visszamásolja saját magára.

 

Segédoszloppal megoldható:

 

Ha A1-ben van az adat, akkor a B1-ben a következő legyen

 

=JOBB(A1;1)&BAL(A1;HOSSZ(A1)-1)

 

Aztán visszamásolhatod a B tartalmát az A-ba.

 

Előzmény: Kexcel9 (37829)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!