Keresés

Részletes keresés

Törölt nick Creative Commons License 2008.08.28 0 0 7765
Helphez nincs, a kezelőfelülethez van. Én 1 hét után leszedtem, mert idegesített.
Sajna meg kell tanulni angolul:(
Előzmény: Master of Amateurs :) (7764)
Master of Amateurs :) Creative Commons License 2008.08.28 0 0 7764

Sziasztok!

 

 Létezik megfelelően működő magyarítás VBE-hez vagy VB 6.0-hoz? (annyira nem

 tudok angolul, hogy kiértsem a help-jét.)

 Ha valaki ismer ilyen oldalt, pls dobjon meg a linkkel.

 

Köszönöm!

wawabagus Creative Commons License 2008.08.26 0 0 7763

Az excel gonoszkodik...életrekel magától és csinálja, amit akar

 

Előzmény: Törölt nick (7762)
Törölt nick Creative Commons License 2008.08.22 0 0 7762
Tényleg nem tölti ki. Igazad van.
Azért írtam azt, mert vannak terjedelmes táblázataim, és úgy emlékszem párszor bosszankodtam amiatt, hogy szűrt oszlopokban duplán kattintottam a cell ajobb alsó sarkára, és az egészet beképletezte, tehát azt is ami nem látszott a szűrés miatt.
Előzmény: wawabagus (7761)
wawabagus Creative Commons License 2008.08.22 0 0 7761

Nekem duplán kattintva sem tölti ki elvileg az összes sort...elvileg ugyanúgy működik, mint a lehúz...

 

Szerintem szivat engem ez a program...:-)

 

Köszi a segítséget!!

Előzmény: Törölt nick (7760)
Törölt nick Creative Commons License 2008.08.22 0 0 7760
Ha egérrel végighúzod, akkor a szűrt sorokat ki kell hagynia.
Ha duplán kattintassz a cella jobb alsó sarkára, akkor nem hagyja ki a szűrt sorokat és tölti fel az oszlopot.
Előzmény: wawabagus (7758)
wawabagus Creative Commons License 2008.08.22 0 0 7759

Annyira furcsán működik ez a demo verzió...

most próbálgattam egy test file-on...és előszörre rosszul csinálta, mindenhova bemásolta oda is ahova nem kértem...

Másodszorra viszont már jól...

Több dolog is úgy működik, hogy elsőre nem csinálja jól...pl a filterezett adatok átmásolását és másik lapra....viszi az egészet a filterezett helyett.

De ezt is csak elsőre csinálja rosszul, aztán már jól..

nem egészen normális dolog ez.

wawabagus Creative Commons License 2008.08.22 0 0 7758

Szia :-)!

A végig húzza teljesen azt jelenti, hogy hiába szűrtem, hogy csak a borokat lássam azért ő a a tejre is bemásolja?

Ha meg manuálisan, csak húzom, akkor nem másolja be?

Így kéne lennie? Jól értettem?

 

 

Előzmény: Törölt nick (7757)
Törölt nick Creative Commons License 2008.08.22 0 0 7757
2003-ban nem normális. Viszont ha kattintassz a jobb alsó sarokra, akkor "végighúzza" teljesen.
Előzmény: wawabagus (7755)
wawabagus Creative Commons License 2008.08.22 0 0 7756

  

 

Lécci-lécci,

tényleg mondja meg valaki, hogy én csinálok valamit rosszul, vagy mi van...

kéne tudnom, mielőtt valami nagy bonyodalmat okozok...

 

Normális dolog, hogy ha szűrő van bekapcsolva és úgy copyzom (lehúzom) a beírt dolgot, hogy az aktuálisan meg nem jelenő cellákban is átírja az adatot?

 

Remélem lehet érteni mire gondolok...

 

Pl.

Az oszlopban beállítom, hogy csak a borok legyen láthatok...mellé szeretném írni az egység árat...copyzom az árat lehúzással (vagy kattintással a jobb alsó sarokban) és nem csak a bor mellé írja be ezt az árat, de pl. a tejhez is...ennek nem szabadna történnie.

 

Vagy pl. törlök megszűrt sorokat és azt is törli, ami közte volt és épp nem szerepelt a filterben.

Pl. nem akarom, hogy a borok is benn elegyenek a listában...filter be, kijelölöm a sorokat és törlöm őket...erre azt is törli ami közöttük volt, pl  tej...

 

MIÉRT?????????

 

Lécci, világosítsatok fel, ha valami nagyon butát csinálok...mert egyszer ebből nagy probláma lehet...

 

Én csinálom rosszul?

 

Légyszí segítsetek!!!!!!!!

Nagyon köszönöm!!!!!!

Y

 

 

wawabagus Creative Commons License 2008.08.22 0 0 7755

Lécci-lécci,

tényleg mondja meg valaki, hogy én csinálok valamit rosszul, vagy mi van...

kéne tudnom, mielőtt valami nagy bonyodalmat okozok...

 

Normális dolog, hogy ha szűrő van bekapcsolva és úgy copyzom (lehúzom) a beírt dolgot, hogy az aktuálisan meg nem jelenő cellákban is átírja az adatot?

 

Remélem lehet érteni mire gondolok...

 

Pl.

Az oszlopban beállítom, hogy csak a borok legyen láthatok...mellé szeretném írni az egység árat...copyzom az árat lehúzással (vagy kattintással a jobb alsó sarokban) és nem csak a bor mellé írja be ezt az árat, de pl. a tejhez is...ennek nem szabadna történnie.

 

Vagy pl. törlök megszűrt sorokat és azt is törli, ami közte volt és épp nem szerepelt a filterben.

Pl. nem akarom, hogy a borok is benn elegyenek a listában...filter be, kijelölöm a sorokat és törlöm őket...erre azt is törli ami közöttük volt, pl  tej...

 

MIÉRT?????????

 

Lécci, világosítsatok fel, ha valami nagyon butát csinálok...mert egyszer ebből nagy probláma lehet...

 

Én csinálom rosszul?

 

Légyszí segítsetek!!!!!!!!

Nagyon köszönöm!!!!!!

Y

 

 

magyarpityu Creative Commons License 2008.08.22 0 0 7754

Const FullName As String = "C:\temp\proba.txt"
Open FullName For Append Access Read Write As #1
Write #1, ActiveCell.Value
Close #1

Na, megvan ez is :)) nem Write, hanem Print a file-ba írás, akkor nem lesz idézőjel (") a sorok elején és végén, hurrá!

Előzmény: magyarpityu (7752)
magyarpityu Creative Commons License 2008.08.22 0 0 7753

Szeretném az aktuális dátumot lekérdezni makróból

 

Dim ActDate As String

ActDate = Date

 

Nem értem, hogy nem találtam meg tegnap :))

Előzmény: magyarpityu (7752)
magyarpityu Creative Commons License 2008.08.21 0 0 7752
Szia!

Nem erre gondoltam. Ennél a kódnál:

Const FullName As String = "C:tempproba.txt"
Open FullName For Append Access Read Write As #1
Write #1, ActiveCell.Value
Close #1

a proba.txt-be az aktuális cellában szereplő szöveg kerül, de a szöveg előtt és után van "-jel, amit nem szeretnék a file-ba írni.

De más bajom is van. Szeretném az aktuális dátumot lekérdezni makróból, de nem találtam hozzá függvényt, sem az Application.WorksheetFunction-ban, sem máshol. Ha makróban rögzítem a Today függvényt, akkor ActiveCell.FormulaR1C1 = "=TODAY()" lesz a makróban, de én nem cellába szeretném írni a képletet, egyszerűen csak String-be szeretném visszakapni a makró futtatásakor érvényes dátumot.
Előzmény: Delila_1 (7751)
Delila_1 Creative Commons License 2008.08.21 0 0 7751

Az idézőjelek eltüntetésére:

 

szoveg = Cells(1, 1).Value
szoveg = Right(szoveg, Len(szoveg) - 1)
szoveg = Left(szoveg, Len(szoveg) - 1)

Előzmény: magyarpityu (7749)
Delila_1 Creative Commons License 2008.08.21 0 0 7750
Ha már az utolsó sort sikerült megtalálnod, onnan felfelé indítanék egy for-next ciklust (step -1). A cella adatának hosszát (len) vizsgáltatnám, és azt, hogy nem nulla-e az értéke. Amikor egyik feltétel sem igaz, az akkori aktuális sorszámig jelöltetném ki a nyomtatási területet.
Előzmény: roac (7748)
magyarpityu Creative Commons License 2008.08.21 0 0 7749

Sziasztok! Megint a segítségeteket szeretném kérni!

 

Egy könyvtárban szövegfile-ok vannak, egy Excel táblázatban pedig az adatok vannak, amiket a file-okba szeretnék írni szöveges formátumban. A táblázat minden sora más-más file-ba kerül. Ha adott nevű file nincs a megadott könyvtárban, akkor létrehozom és beírom az adatsort, ha van ilyen file, akkor a végére szúrom a sort. Több problémám is van. Hogyan nyitom meg úgy a file-t, hogy olvasni és írni is tudjak bele, de a tartalma ne vesszen el, illetve hogyan lehet szöveget beírni file-ba, hogy az idézőjelek (") ne jelenjenek meg a szöveg előtt és után?

roac Creative Commons License 2008.08.21 0 0 7748
Kozben sikerult megoldani a gondot, viszont mivel vannak sorok amelyek kepleteket tartalmaznak es ezek sorok soha nem uresek, mivel alapertelmezetten is 0-at tartalmaznak. Ugy kellene, h ures soroknak szamitsanak azok amelyek csak 0-kat tartalmaznak.
Előzmény: roac (7747)
roac Creative Commons License 2008.08.21 0 0 7747
Sziasztok!

Egy excel sablont keszitek, amihez szuksegem lenne egy funkciora, ami nyomtataskor automatikusan a legutolso adatot tartalmazo sorig nyomtatja a dokumentumot.

Talaltam ra egy makrot egy angol nyelvu oldalon, de nem sikerul futtatni, illetve nem latom, h segite. A 80ig nyomtatna, annak ellenere, hogy adat csak az elso nehany sorban van.

A makro a kovetkezo:

Sub Set_Print_Area()
Dim x As Long, lastCell As Range
x = ActiveSheet.UsedRange.Columns.Count
Set lastCell = Cells.SpecialCells(xlCellTypeLastCell)
ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), lastCell).Address
End Sub

Ha 80. sor utan irok adatot es ujra futtatom a makrot, akkor tuvabbugrik a kijeloles, amennyiben ujra futtatom a makrot. Megoldhato, h automatikusan erzekelje az uj adatok bevitelet es ne kelljen ujrafuttatni a makrot?

koszonom a segitseget
wawabagus Creative Commons License 2008.08.19 0 0 7746

Egy remek kis oldalt :-), talán másnak is segít

http://fns.hu/freestuff/excel_fx_crossref/excel_fx_crossref.htm

 

wawabagus Creative Commons License 2008.08.18 0 0 7745

Sziasztok!

Lenne 2 kérdésem, hátha tud valaki segíteni. Please!

 

Az új excelről van szó.

 

1. Ha szűröm az adataimat és úgy copy-zok valamit az oszlopban (jobb alsó csücsök lehúz, vagy kattint), akkor oda is bemásolja a dologat, ami nincs is szűrve. Ezt nem csinálta a régi verzió. Ti is találkoztatok ezzel?

 

2. Szintén szűrésnél, ha a szűrött adatokat szeretném átmásolni egy másik lapra, akkor visz mindent, pedig nekem csak a szűrött kell...ezt csinálta először, aztán, ha már szűrést állítok be akkor már működik...nem értem miért csinálja ezt.

 

Ki a hülye? Én vagy az új excel :-DDD?

 

Törölt nick Creative Commons License 2008.08.18 0 0 7744
Igen, ez jónak tűnik! Köszönöm szépen!
Előzmény: Törölt nick (7743)
Törölt nick Creative Commons License 2008.08.18 0 0 7743
Akkor próbáld meg ezt.
Előzmény: Törölt nick (7742)
Törölt nick Creative Commons License 2008.08.18 0 0 7742
Köszönöm, de őszintén szólva, ez sokat igazából nem segített.
Előzmény: Törölt nick (7741)
Törölt nick Creative Commons License 2008.08.18 0 0 7741
'OrgPlusWOPX.4
' is an object of the application Microsoft Organization Chart



Forrás
Előzmény: Törölt nick (7740)
Törölt nick Creative Commons License 2008.08.18 0 0 7740

Sziasztok!

 

Egy régebbi ecxel fájlban egy ábra és a következő beállítás található: "=BEÁGYAZ("OrgPlusWOPX.4";"")". Azt szeretném megkérdezni, hogy tudja-e valaki, hogyan lehet ezt szerkeszteni, ill. mit kell beállítani, esetleg telepíteni ennek érdekében?

 

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

Jozsef Creative Commons License 2008.08.16 0 0 7739
A magyar verzióban van egy elég bosszantó hiba (anno úgy emlékszem elmondta egy tanár, hogyan lehet megoldani, de sajnos nem emlékszem már rá)
Miután kiválasztottad az INT-et, a korlátozó feltétel mezőbe írj be egy tetszőleges számot pl. 0-t. A számot semmire se használja, legfeljebb nem kapsz hibajelzést.
Előzmény: Biry07 (7738)
Biry07 Creative Commons License 2008.08.15 0 0 7738
Ha már itt járok, akkor egy kérdés, méghozzá Excel/Solver témában...

A magyar verzióban van egy elég bosszantó hiba (anno úgy emlékszem elmondta egy tanár, hogyan lehet megoldani, de sajnos nem emlékszem már rá)

A probléma:

Ha solverben hozzáadsz 'korlátozó feltétel'-t, akkor beállítható a :

Cellahivatkozás; =<>intbin ; Korlátozó feltétel

Ez nagyszerűen működik is, kivéve az INT-et.
Ha kiválasztod, hogy a 'módosuló celláid' csak egész számok lehetnek, akkor a Solver automatikusan kitölti:
módosuló cellák ; int ; egész érték ;
Az Ok gombra kattintva azonban közli: "A korlátozó feltétel szám, egyszerű hivatkozás vagy numerikus értéket adó képlet lehet."

Angol verzióban úgy emlékszem nincs ilyen probléma, és úgy rémlik valahogy a magyarban is meg lehet oldani a problémát....

A válaszokat előre is köszönettel,
Biry
Biry07 Creative Commons License 2008.08.15 0 0 7737
_vadaszg_!


a 2007-et nem ismerem, de az előzőekben ott a közös használat opció. (eszközök menü)

Ebben az esetben egyszerre nyithatják meg többen a fájlt, és szerkeszthetik is. A tábla minden mentésnél "update"-lődik, azaz a user által beírt adatok bekerülnek a fájlba.
(az már csak hangulat kérdése, hogy a user milyen gyakorisággal nyomja meg a ctrl+s (mentés), avagy az automatikus mentést alacsony értékre állítod)
Abban az esetben, ha véletlenül ugyanabba a cellába 2 user mást-mást írt be, akkor feldobja a kérdést, hogy melyik verziót mentse.
Nálam nagyszerűen működik 3 kollegína is dolgozik benne aktívan, egyszerre. (alapvetően megvannak az egyes 'területekért' felelős emberkék - némi átfedéssel)
A makrókkal vigyázni kell, nem mindegyik akar futni közös használatban, de azért egy csomó dolgot le lehet makrózni...

Én nagyon szeretem, a kollégáim már kevésbé... :D
Ugyanis visszamenőleg akár 30 napra is logolva van: ki, mikor, melyik cellát, milyen értékről, milyen értékre módosította....

Biry
Előzmény: _vadaszg_ (7727)
Törölt nick Creative Commons License 2008.08.15 0 0 7735
Workbooks("akármi.xls").Saved = True
Workbooks("akármi.xls").Close
vagy

Application.DisplayAlerts = False
Workbooks("akármi.xls").Close
Előzmény: Gavriel (7731)
wawabagus Creative Commons License 2008.08.15 0 0 7734
Ok :-)!
Előzmény: Delila_1 (7733)
Delila_1 Creative Commons License 2008.08.15 0 0 7733

Nincs mit.

Ha rátalálnál az ikonok átformálására, tedd ki a fórumra, biztosan másokat is érdekel.

Előzmény: wawabagus (7730)
wawabagus Creative Commons License 2008.08.15 0 0 7732

Sziasztok!

Excel legújabb verzióban...

Tudja valaki esetleg, hogyan lehet megoldani az, hogy "freez"-eljem a munkalapot de nem az első oszlopnál, hanem akárhányadiknál... 

Eddig csak olyan lehetőséget találtam, hogy az első oszlopot/sort freezeli...

Halál idegesítő...

Köszi!!

Y

wawabagus Creative Commons License 2008.08.15 0 0 7730

Szia!

Köszi,  ezt a saját parancssort már megtaláltam korábban. Ki is tettem dolgokat...csak gondoltam lehetne nagyobban is :-)...

Hopeless :-)

Na, köszi!!!!

Y

Előzmény: Delila_1 (7726)
_vadaszg_ Creative Commons License 2008.08.15 0 0 7729
és folyamatos szinkronizálásra van lehetőség? A lényeg nem is az, hogy egyszerre írnak a táblázatba, hanem hogy több gépen meg van nyitva az excel, és néha-néha beleírnak dolgokat. Szóval nem folyamatos egyszerre írás lenne...
Előzmény: Törölt nick (7728)
Törölt nick Creative Commons License 2008.08.14 0 0 7728
1 felhasználó tudja csak szerkeszteni EGYSZERRE
Előzmény: _vadaszg_ (7727)
_vadaszg_ Creative Commons License 2008.08.14 0 0 7727
Sziasztok,

Olyan kérdésem lenne, hogy van egy excel (excel 2007) táblázat, melyet szeretnénk egy időben több gépről egyszerre szerkeszteni. Hogyan oldható ez meg?

Válaszaitokat előre is köszönöm!

Gábor
Delila_1 Creative Commons License 2008.08.14 0 0 7726

Szívesen.

 

Azt nem tudom, hogyan csökkenthetnéd, viszont a Gyorselérési eszköztárra ki tudod tenni azokat az ikonokat, amiket sűrűn használsz. A gyors...-on jobb klikk, kiválasztod a testreszabást. Ott bejelölheted, hogy ez az eszköztár a menüszalag alatt (kéznél) legyen.

 

Tettem ki a saját kis makróim közül is párat, de sehol sem találom, hogy lehetne módosítani az ikonok rajzát, így mindegyik egyforma képet mutat. Nem is használom ezt a 2007-et, csak ha muszáj. A rongyos régi verziókban úgy alakítottam az ikonokat, ahogy akartam (bizonyos határokon belül).

 

A makróimat úgy tettem ki, hogy a "Választható parancsok helye" legördülőből kiválasztottam a makrókat.

Előzmény: wawabagus (7725)
wawabagus Creative Commons License 2008.08.14 0 0 7725

Szia :-)!

Na, sikerült végre...köszi!!

Hát, nekem agyamra megy ez a verzió, de lassan kezdem megszokni.

Persze, hogy nagyobb kihívás elé állítsam magam még ráadásul angolul installáltam, mert miért ne...nekem ez nem jelenthet problámát, tök mindegy milyen nyelven van...

Aztán legszívesebben falhoz vágtam volna a gépet, mikor egy szaros rutin dolgot tök hosszú ideig csináltam, mert nem találtam mi hol van...

 

És esetleg nem jöttél rá arra, hogyan lehetne "személyre szabni" ezt az ikon hegyet, amiből nekem kb csak 10-re lenne szükségem a 100 helyett?

 

Annyira jó ötlet lett volna tőlük, ha ilyet is kitalálnak.

Talán lehet is, de a kulcs kérdés hogyan :-DDDDD? 

Köszi!

y

Előzmény: Delila_1 (7723)
Delila_1 Creative Commons License 2008.08.14 0 0 7724
Sikerült megtalálnom: Microsoft Office gombnak hívják azt a csicsás gombot.
Delila_1 Creative Commons License 2008.08.14 0 0 7723

Kiválasztod az Excel (vagy milyen) gombot, jobbra lent Az Excel beállításai, balra fent Népszerű elemek, jobbra középen az Új munkafüzet létrehozása csoportban a Használandó betűtípus.

Ugyanitt a betű mérete, a lapok száma, és az alapértelmezett nézet is megadható.

 

Tényleg észbontó ez az új felület.

A helyesírás ellenőrzését a például a NYELVI !!! beállításoknál találod.

Előzmény: wawabagus (7722)
wawabagus Creative Commons License 2008.08.14 0 0 7722

Sziasztok!

Tudja valaki hol tunám az új excelben megtalálni az a funkciót (beállítások).

Szeretném beállítani, hogy alapból Verdana 10-es legyen a font.

Minden máshol van ebben az új verzióban és ezt még nem sikerült megtalálnom.

Talán ti tudjátok!

Ezer köszönet!!

Y

Törölt nick Creative Commons License 2008.08.12 0 0 7721

Nekem tegnap még annak tűnt... Ez is frappáns megoldás, az igaz!

Egyébként, inkább érdekes, hogy a pontosvesszővel tagolt *.csv fájlokat az excel alapból „felismeri”, simán megnyitja, beimportálja, de ha ezt rögzítem markróba, már nem jól csinálja, egy oszlopba teszi az összes adatot…  Mindegy, már van három jó megoldás a problémára.

 

Előzmény: Törölt nick (7720)
Törölt nick Creative Commons License 2008.08.12 0 0 7720
Belekontárkodom egy kicsit csak annyit hozzászólva, hogy én régebben csináltam ilyet úgy, hogy megnyitottam a csv-t és szövegből oszlopok funkcióval szédaraboltam. Simán makróba is rögzítettem akkor.

Vagy tényleg ennyire bonyolult lenne ez?
Előzmény: Törölt nick (7716)
Törölt nick Creative Commons License 2008.08.12 0 0 7719
Köszi, válaszoltam.
Előzmény: magyarpityu (7717)
magyarpityu Creative Commons License 2008.08.12 0 0 7718
Nagyon jó, köszi :)))
Előzmény: Törölt nick (7716)
magyarpityu Creative Commons License 2008.08.12 0 0 7717

Nekem a vesszőknél vágja a sorokat, bármit is állítok be a Workbooks.OpenText függvénynél a DataType:=xlDelimited beállítás mellett. Elvileg (illetve dehogy elvileg, a help szerint) néhány elválasztó karaktert alapból be lehet állítani, illetve az Other és OtherChar mezőkben bármi megadható lenne elválasztó karakternek, pont mint a szövegfile megnyitásnál, mikor tagolt adattípus opciót választunk. Sajnos ez nem működik, talán valamit még be kell állítani, hogy ne íródjon felül az alapból beállítottal amit mi adunk meg elválasztó karakternek, vagy csak hibás az Excel, esetleg a magyarítás során került bele ez a hiba.

 

A makró berántja a szövegfile-t, majd a vesszők helyén újra összefűzi a sorokat, végül egyesével megkeresi a pontosvesszőket és aszerint darabolja a sorokat cellákba. De nem jól működik, ha több vessző is van egyás mellett. Ha nálad ilyen előfordul, akkor töprengek még kicsit ezen.

 

Amúgy mail ment.

Előzmény: Törölt nick (7715)
Törölt nick Creative Commons License 2008.08.12 0 0 7716

Sziasztok!

Találtam két különböző megoldást a pontosvesszővel tagolt *.CSV fájlok megnyitására, gondoltam, hátha valakinek még hasznos lehet:

1.)

Sub CSVFájlMegnyitás1()

Open "ide jön a fájl neve az eléréssel együtt" For Input As #1
sor = 1
Do Until EOF(1)
Line Input #1, adat
cellak = Split(adat, ";")
For oszlop = 0 To UBound(cellak)
Cells(sor, oszlop + 1) = cellak(oszlop)
Next
sor = sor + 1
Loop
Close 1

End Sub

2.)

2.1.) Makró rögzítéssel - Adatok - Külső adatok importálása - Adatok beolvasása - Fájltípus: szövegfájlok - a szövegbeolvasó varázslóval a szükséges beállítások
2.2.) Az eredémény eljárást egy kicsit átalakítva:

Sub CSVFájlMegnyitás2()
Dim MRCSVElérés As String ' ez nincs a rögzített eljárásban

MRCSVElérés = "TEXT;" & "ide jön a fájl neve az eléréssel együtt"

With ActiveSheet.QueryTables.Add(Connection:= _
MRCSVElérés, Destination:= _
Range("A1"))
.Name = "valami"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1250
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierNone
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With


End Sub

Törölt nick Creative Commons License 2008.08.12 0 0 7715
Ez sajna nem jó, egy oszlopba (A) olvassa be az adatokat, vagyis nem a pontosvesszővel tagoltnak megfelelően, jelen esetben hat különbözőbe.
Előzmény: Törölt nick (7713)
Törölt nick Creative Commons License 2008.08.12 0 0 7714
Köszönöm a segítséget! borakaKUKACindexPONThu
Előzmény: magyarpityu (7711)
Törölt nick Creative Commons License 2008.08.12 0 0 7713
Helyesebben

Sub Teszt
Workbooks.Open Filename:= "C:\valami.csv"
End Sub
Előzmény: Törölt nick (7712)
Törölt nick Creative Commons License 2008.08.12 0 0 7712
Esetleg így is meg lehetne próbálni:

Sub Teszt
Workbooks.Open Filename:= "C:valami.csv"
End Sub
Előzmény: magyarpityu (7711)
magyarpityu Creative Commons License 2008.08.11 0 0 7711
Más gép, más oprendszer... Ha megadod a mail-edet, átküldöm és töröltetjük az előző két beírást. De szerintem lesz egyszerűbb megoldás.
Előzmény: Törölt nick (7708)
magyarpityu Creative Commons License 2008.08.11 0 0 7710
Az előbb elrontottam, tehát:


Sub InsertCSVFile()

'Adatfile megnyitása
Dim FullName As String

FullName = Application.GetOpenFilename("Text Files (*.csv), *.csv," & _
"All Files (*.*), *.*")

If FullName = "False" Then Exit Sub

'Szövegfile beolvasása
On Error Resume Next
Workbooks.OpenText Filename:=FullName, DataType:=xlDelimited, Semicolon:=True
If Err.Number > 0 Then
MsgBox "Nem sikerült megnyitni " & Chr(34) & FullName & Chr(34) & _
" file-t." & Chr(10) & "Hiba (" & Err.Number & "): " & Err.Description, _
vbCritical
Exit Sub
End If

'Ha az Excel jól működne, akkor idáig tartana a makró :-))
'de mert bugzik, kézzel kell a sorokat a cellákba tördelni

Dim i As Long, j As Long
Dim StartPos As Integer, EndPos As Integer, sor As String
Dim LastCell As Range, LastRow As Long
With ActiveWorkbook.ActiveSheet
Set LastCell = .Cells(1, 1).SpecialCells(xlLastCell)
LastRow = LastCell.Row
For i = 1 To LastRow
sor = .Cells(i, 1)
j = 2
While Len(.Cells(i, j)) > 0
sor = sor & "," & .Cells(i, j)
j = j + 1
Wend
.Cells(i, 1) = sor
Next i
Range(.Columns(2), .Columns(LastCell.Column)).Delete
For i = 1 To LastRow
StartPos = 1
EndPos = 0
j = 1
sor = .Cells(i, 1)
Do
EndPos = Application.WorksheetFunction.Search(";", sor, StartPos)
.Cells(i, j) = Mid(sor, StartPos, EndPos - StartPos)
j = j + 1
StartPos = EndPos + 1
Loop Until Err.Number > 0
.Cells(i, j - 1) = Right(sor, Len(sor) - StartPos + 1)
Err.Clear
Next i
End With
On Error GoTo 0

End Sub
Előzmény: Törölt nick (7708)
magyarpityu Creative Commons License 2008.08.11 0 0 7709

Fél válasz következik, mert a frappánsan megszorításnak nem tesz eleget a következő makró.

 

 

Sub InsertCSVFile()

'Adatfile megnyitása
Dim FullName As String

FullName = Application.GetOpenFilename("Text Files (*.csv), *.csv," & _
   "All Files (*.*), *.*")

If FullName = "False" Then Exit Sub

 

'Szövegfile beolvasása
On Error Resume Next
Workbooks.OpenText Filename:=FullName, DataType:=xlDelimited, Semicolon:=True
If Err.Number > 0 Then
   MsgBox "Nem sikerült megnyitni " & Chr(34) & FullName & Chr(34) & _
      " file-t." & Chr(10) & "Hiba (" & Err.Number & "): " & Err.Description, _
      vbCritical
   Exit Sub
End If

 

'Ha az Excel jól működne, akkor idáig tartana a makró :-))
'de mert bugzik, kézzel kell a sorokat a cellákba tördelni

 

Dim i As Long, j As Long
Dim StartPos As Integer, EndPos As Integer, sor As String
Dim LastCell As Range, LastRow As Long
With ActiveWorkbook.ActiveSheet
   Set LastCell = .Cells(1, 1).SpecialCells(xlLastCell)
   LastRow = LastCell.Row
   For i = 1 To LastRow
      sor = .Cells(i, 1)
      j = 2
      While Len(.Cells(i, j)) > 0
         sor = sor & "," & .Cells(i, j)
         j = j + 1
      Wend
      StartPos = 1
      EndPos = 0
      j = 1
      Do
         EndPos = Application.WorksheetFunction.Search(";", sor, StartPos)
         .Cells(i, j) = Mid(sor, StartPos, EndPos - StartPos)
         j = j + 1
         StartPos = EndPos + 1
      Loop Until Err.Number > 0
      .Cells(i, j - 1) = Right(sor, Len(sor) - StartPos + 1)
      Err.Clear
   Next i
End With
On Error GoTo 0

End Sub

Előzmény: Törölt nick (7708)
Törölt nick Creative Commons License 2008.08.11 0 0 7708

Sziasztok!

 

Segítséget szeretnék kérni, makróból történő pontosvesszővel (;) tagolt *.csv fálj megnyitásában. A makrórögzítővel hiába rögzítem, nem működik... Hogy lehet ezt frappánsan megoldani?

 

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

Törölt nick Creative Commons License 2008.08.08 0 0 7707
Na, elkapotta gépszíj és kipróbáltam. Jó.

De itt egy egyszerűbb, ez is így csinál:
=HA(B2=1;INDEX(A:A;HOL.VAN(1;B:B;0);1);0)
Az első sorban legyen vmi oszlopcím, és a második sortól kell a fenti képlet.
Előzmény: Törölt nick (7705)
Törölt nick Creative Commons License 2008.08.08 0 0 7706
mihez kell ez, ha nem titok?
Előzmény: Laci Laci (7704)
Törölt nick Creative Commons License 2008.08.08 0 0 7705
Nem próbáltam ki, de talán:
=HA(HA(B1=1;A1;0)=A1;INDEX(A:A;HOL.VAN(1;B:B;0);1);0)
Előzmény: Laci Laci (7704)
Laci Laci Creative Commons License 2008.08.08 0 0 7704

 

Az előzőben oszlopokban voltak a számok, de mikor beküldtem, összekuszálódott, most megpróbálom sorokban, remélem nem fog ez is összekeveredni

 

4 5 6 4 5 6 7 8 9 4 2 4 5 6

0 0 0 0 0 0 1 1 1 1 1 0 0 0

0 0 0 0 0 0 7 7 7 7 7 0 0 0

 

Laci Laci Creative Commons License 2008.08.08 0 0 7703

Sziasztok,

 

Kérdésem a következő lenne,

 

Van három oszlop A B és C

 

4 0 0 5 0 0 6 0 0 4 0 0 5 0 0 6 0 0 7 1 7 8 1 7 3 1 7 4 1 7 2 0 0 4 0 0 5 0 0 6 0 0

 

A oszlopban számok, ha B oszlopban 1 előfordul, akkor C oszlopban az a szám kellene, ami A- ban volt akkor, amikor B ben az 1 először előfordult. Ez folyamatosan mindaddig amíg B ben folyamatosan 1 van egymás után.

 

Egyszerű logika ez, de most valahogy nem akar eszembe jutni. Valószínű hasonlóan lehetne, mint az előzőt.

 

Köszi előre is

 

Laci

wawabagus Creative Commons License 2008.08.08 0 0 7702

:-)

Köszi!!!!!!!!!!

Már megtaláltam.

Megörjít az új excel...

Ki nem állhatom

Előzmény: Sánta Kutya (SK) (7701)
Sánta Kutya (SK) Creative Commons License 2008.08.08 0 0 7701
vlookup?
Előzmény: wawabagus (7700)
wawabagus Creative Commons License 2008.08.08 0 0 7700

SOS SOS!!!

Hogy van az Fkeres parancs angolut? (utálom az új verzóját az excelnek)

Please!!!

Nagyon köszönöm!!

Y

Törölt nick Creative Commons License 2008.08.08 0 0 7699
van ott több hiba is, ha még keresgélsz. Mondjuk ezt nem ismertem.
Előzmény: Master of Amateurs :) (7698)
Master of Amateurs :) Creative Commons License 2008.08.07 0 0 7698

Sziasztok!

 

 Asszem találtam egy hibát az Excelben. Ha egy objektum/vezérlő (pl. Gomb) formázásánál bejelöljük "Az objektum helye és mérete nem változik" rádiógombot, nem lehet TELJES sikert elérni. :( Ugyanis amikor a TELJES táblát törlöd, egy picit elmozdul az 1. sor irányába az objektum. Igaz, hogy, ha sokszor törölsz "all"-t, az első sor aljánál megáll, de mi van, ha a képernyő közepénél szeretném tartani a gombot??? :(

 

Válaszotokat köszi!

 

Üdv!

Laci Laci Creative Commons License 2008.08.06 0 0 7697

Sziasztok,

 

szuperek és zseniálisak vagytok.

 

Szép napot

 

Laci

Előzmény: magyarpityu (7692)
Csacskamacka Creative Commons License 2008.08.06 0 0 7696
Hát ez 2003-as...
Előzmény: magyarpityu (7694)
Delila_1 Creative Commons License 2008.08.06 0 0 7695
Magyarpityu válaszához annyit, hogy a PC World 2008. júl-i számában a 118. oldalon Weisz Tamás cikkében megtalálod, hogyan lehet szűkíteni a hosszú listákat.
Előzmény: Csacskamacka (7693)
magyarpityu Creative Commons License 2008.08.06 0 0 7694
Az Excel 2000-ben van egy 1000 soros korlát, de csak a legördülő menüre. Azaz ott van a többi is, ha szűkíted a kijelölést és az illeszkedő elemek száma nem nagyobb 1000-nél, akkor az előbb nem látható sorok is megjelennek. Hátha az újabb változatokban már nincs benne ez a korlát...
Előzmény: Csacskamacka (7693)
Csacskamacka Creative Commons License 2008.08.06 0 0 7693

Sziasztok Táblázatguruk!

 

Autoszűrővel kapcsolatban merült fel egy olyan problémám, hogy egy 1057 soros listából csak az első 1004-es sorig jeleníti meg az adatokat.

 

Kérdésem, hogy vajon maximálva van-é az autoszűrt sorok száma vagy ez mi ez?

 

Előre is köszi!

 

CsM

magyarpityu Creative Commons License 2008.08.06 0 0 7692

Akkor jó, mert pont ezt csinálja amit robbantómester írt :))

 

Lássuk csak, hogyan is van ez!

 

B1: ==HA(A1=-5;1;0) tehát az első cellát beállítjuk 1-re vagy 0-ra aszerint, hogy A1-ben -5 volt-e vagy sem

 

B2: =HA(A2=-5;1;HA(A2=2;0;B1)) vadászunk a -5-re, ha találtunk az A oszlop aktuális cellájában, akkor hurrá, legyen ott B-ben 1, ha nem, akkor nézzük, nem 2 van-e A-ban, mert akkor 0 lesz B-ben. Ha sem -5-öt, sem 2-t nem találtunk, akkor megismétli a felette álló értéket, tehát 0-t ha a legutóbbi 2 óta nem volt -5, vagy 1-et, ha a legutóbbi -5 óta nem volt 2.

Előzmény: Laci Laci (7691)
Laci Laci Creative Commons License 2008.08.06 0 0 7691

Nekem úgy kellene, hogy

 

5

6

7

4

3

-5

-6

-7

-8

-4

-3

-4

-3

-2

-1

-0

1

2

3

4

5

 

ha vannak a következő számok az A oszlopban, akkor csak a pirosaknál legyen 1 a B oszlopban. Akkor is ha teljesen más számokkal kezdődik A oszlop. Ez akkor is működjön, az  1 et akkor is mutassa, ha később újra bekövetkezik az esemény. Tehát akkor legyen  B oszlopban 1, ha talál egy -5 öt és utánna folyamatosan mutasson 1 et addig míg 2 -őt nem talál A oszlopban.

 

utána ne legyen 1 megint míg újra -5 nem jön. De ha jön legyen B oszlopban  mindaddig 1, míg újra 2 őt nem talál A oszlopban.

Előzmény: magyarpityu (7690)
magyarpityu Creative Commons License 2008.08.06 0 0 7690
Kiegészítve még azzal, hogy B1: =HA(A1=-5;1;0) és B2-től jön a képleted.
Előzmény: Törölt nick (7689)
Törölt nick Creative Commons License 2008.08.05 0 0 7689
helyesen:
=HA(A2=-5;1;HA(A2=2;0;B1))
Előzmény: Törölt nick (7688)
Törölt nick Creative Commons License 2008.08.05 0 0 7688
Ja, 'sszem értem
talán:
=HA(A2=-5;1;HA(A2=2;0;C1))
Előzmény: Törölt nick (7687)
Törölt nick Creative Commons License 2008.08.05 0 0 7687
Hát ezt nem annyira értem, de ha a -5 és 2 közötti intervallumra kell az 1, skkor pl:
=HA(NEM(VAGY(A2<=-6;A2>=3));1;0)

"A" oszlopban vannak a számok és "B" oszlopba kell ez a képlet.
Előzmény: Laci Laci (7686)
Laci Laci Creative Commons License 2008.08.05 0 0 7686

Sziasztok, még egy kis változtatásra lenne szükségem,

 

Ha A oszlopban a számok következő képpen vannak.

 

5

6

7

4

3

-5

-6

-7

-8

-4

-3

-4

-3

-2

-1

-0

1

2

 

szóval olyan függvényt szeretnék megalkotni,  ami egyet ad eredményül minden sorban, ha észleli -5 öt, lásd piros számok. Mindaddig egyet ad eredményül, míg 2 vel nem találkozik. Nem baj, ha a számok -5 alá csökkennek még pl -6 -7 -8 esetében, vagy nem folyamatosan nőnek, pl -4 után -3 következik, majd újra -4 és aztán emelkedik 2 ig

 

Válaszotokat előre is köszönöm

Előzmény: magyarpityu (7680)
Törölt nick Creative Commons License 2008.08.04 0 0 7685
Nem tőlem, de azért szívesen ;)
Előzmény: magyarpityu (7683)
Laci Laci Creative Commons License 2008.08.04 0 0 7684

Szia Magyarpityu, köszönöm szépen a választ, nagyon ígéretesnek tűnik.

 

Sajna ma nem tudom megnézni, most a munkahelyemen nyüglődök, nem tudok excelezni hajnal 1-ig, mint múlt héten. Akkor beteg voltam.

 

Szép napot

 

Laci

Előzmény: magyarpityu (7680)
magyarpityu Creative Commons License 2008.08.04 0 0 7683
Fantasztikus, köszönöm! Magamtól nem jöttem volna rá, megint tanultam Tőled :)))
Előzmény: Törölt nick (7682)
Törölt nick Creative Commons License 2008.08.04 0 0 7682
Előzmény: magyarpityu (7681)
magyarpityu Creative Commons License 2008.08.04 0 0 7681

Sziasztok!

 

Van egy gondom ismét :)) A UserForm_Initialize függvényben beállítgatok dolgokat és, hogy amíg a ListBox-ok nincsenek feltötlve, ne hívódjanak meg a ListBox-ok Change eseménykezelői, tiltom az eseményeket az Application.EnableEvents = False utasítással. Azaz csak tiltanám, mert ennek ellenére ahogy soronként töltöm a ListBox-okat, minden új .Add hívás után meghívódik a _Change metódus is. Vajon mit rontottam el?

magyarpityu Creative Commons License 2008.08.04 0 0 7680
A számok legyenek az A oszlopban, akkor B oszlop első cellája legyen B1: =HA(A1=-5;1;0) a további cellák pedig B2: =HA(A2=-5;1;HA(ÉS(A2>A1;B1=1);1;0)) B2-t kell végighúzni A oszlop utolsó eleméig.
Előzmény: Laci Laci (7676)
Master of Amateurs :) Creative Commons License 2008.08.04 0 0 7679
Köszönöm szépen!
kagabor Creative Commons License 2008.08.04 0 0 7678

Bocsánat * 1000!

 

Meg tudtam csinálni autószűrővel! Azt hittem, ennél bonyolultabb lesz.

 

Bocsi, hogy előbb kérdeztem, minthogy ezt megpróbáltam volna!

Üdv: kagabor

Előzmény: kagabor (7677)
kagabor Creative Commons License 2008.08.04 0 0 7677

Szervusztok!

 

Szeretném a segítségeteket kérni. Van egy Excel táblázatom, amiben szerepen több, mint 4000 sor. Azokat a sorokat szeretném elmenteni / kigyűjteni, amiknek egy adott oszlopban az érték kisebb, mint 0. Adjatok tanácsot légyszi, hogy hogy csinálhatnám ezt meg!

 

Köszönöm szépen előre is!

Üdv: kagabor

Laci Laci Creative Commons License 2008.08.02 0 0 7676

Köszi ezt az újabb kiegészítést is,

 

A helyzet most a következő:

 

Egy HA kritériumot szeretnék elkészíteni, de ez nem olyan egyszerű, egy kicsit furfangos.

 

=HA(ÉS(A3<-5;A3>A2);1;0)

 

Ez lenne a képlet, de nekem ez így nem jó. Itt ugye arról van szó, hogy ha A2 és A3 A2 höz képest emelkedik, akkor HA függvény eredménye 1, de ugyanakkor az emelkedés -5 től induljon.

 

Igen ám ez mind szép és jó, csak én azt szeretném, hogy ha a vizsgált számok között az emelkedés tovább tart, akármeddig, akkor is IGAZ at adjon a képlet, tehát jelen esetben 1 et eredményül.

 

Tehát a képlet az A oszlopban szereplő számok közül adja azokat, amelyeknek eredménye mondjuk -5 óta folyamatosan emelkedik. De az emelkedést csak -5 től kezdje és kövesse nyomon mindadig, amíg tart.

 

Tehát ha a számok A oszlopban következők

 

1

5

6

7

8

4

3

-4

-3

-5

-4

-3

-2

-1

0

1

2 

 

Akkor csak a piros számoknál adjon a HA függvén 1 et eredményül. 5 6 7 8 esetében nem, mert itt az emelkedés nem -5 nél kezdődik, nem számít,hogy ezek is egymás után emelkednek.

 

Válaszotokat előre is köszönöm

 

Laci

 

 

Előzmény: magyarpityu (7672)
Törölt nick Creative Commons License 2008.08.01 0 0 7675
.Row
Gáz ez az index, hogy nem lehet szerkeszteni többet az elküldöttet.
Előzmény: Törölt nick (7674)
Törölt nick Creative Commons License 2008.08.01 0 0 7674
>Egy apró javítás
Attól függ, hogy .Rows, vagy .Address kerül az "ucso" változóba.
Előzmény: Delila_1 (7673)
Delila_1 Creative Commons License 2008.08.01 0 0 7673

Nem kell bővítményként menteni, ez nem Function.

 

Indítás: Eszközök/Makró/Makrók, vegy ezek helyett Alt+F8.

A fejövő ablakban kiválasztod a makródat a címe szerint, indít (vagy dupla klikk a címre).

 

Egy apró javítás a tartomány kijelöléséhez:

Range("B4:B" & ucso).Rows.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp

Előzmény: Master of Amateurs :) (7670)
magyarpityu Creative Commons License 2008.08.01 0 0 7672

A szám kétjegyűvé varázslásának ötletet Delila adta. Mindketten benne voltunk :))

 

Function Szamsor() As String
   Const MaxElem As Integer = 20 'Véletlen szám tartománya: 1 .. MaxElem
   Const ElemDb As Integer = 8   'Ennyi számot írunk egy cellába
   Dim Lista(MaxElem) As Integer
   Dim i As Integer, j As Integer
   i = 0
   While i < ElemDb
      j = Int(MaxElem * Rnd + 1)
      If Lista(j) = 0 Then
         Lista(j) = 1
         i = i + 1
      End If
   Wend
   For i = 1 To MaxElem
      If Lista(i) = 1 Then Szamsor = Szamsor & Right("0" & i, 2) & "     "
   Next i
   Szamsor = Left(Szamsor, Len(Szamsor) - 5)
End Function

Előzmény: Laci Laci (7671)
Laci Laci Creative Commons License 2008.08.01 0 0 7671

Sziasztok,

 

Delila1 tényleg Magyarpityu segített, de neked is köszi, azért te is nagyon sok jót írtál hozzá.

 

Most már eljutottunk odáig, hogy van egy makró arra, hogy véletlenszerűen adjon számokat egy bizonyos választékból, jelen esetben 1-20 ig. Csak meghatározott dababszámú legyen ez a véletlen szám, tehát jelen esetben 8 db. Ráadásul nincs ismétlődés a véletlen számok közöt

 

Most már csak arra lenne szükség, hogy ezek a véletlen számok emelkedő sorrendben jelenjenek meg.

 

Szép napot

 

Laci

Master of Amateurs :) Creative Commons License 2008.08.01 0 0 7670

Már megint elakadtam. :(

 

A kész makrót tartalmazó munkafüzetet elmentettem bővítményként az Office megfelelő mappájába. Az Excelben látszik is, a bővítménykezelő ablakában, de, ha kiválasztom, nem történik semmi. :(

 

Mit kell tennem, hogy le is fusson a makró?

Master of Amateurs :) Creative Commons License 2008.08.01 0 0 7669

Köszönöm szépen!

 

Delila_1 Creative Commons License 2008.07.31 0 0 7668
Teljesen jó. :-)
Előzmény: Törölt nick (7667)
Törölt nick Creative Commons License 2008.07.31 0 0 7667
van :)
Kicserélném Replace-val üresre a "törlendő" szöveget tartalmazó cellákat, a többit már tudod.
Előzmény: Delila_1 (7666)
Delila_1 Creative Commons License 2008.07.31 0 0 7666
Van arra is hasonló jó tipped, hogy a "törlendő" szöveget tartalmazó cellákat, ill. azoknak a sorait hogy lehet ugyanebből a tartományból kiírtani?
Előzmény: Törölt nick (7665)
Törölt nick Creative Commons License 2008.07.31 0 0 7665
ucso = Range("B65536").End(xlUp).Address
Range("B4:" & ucso).Rows.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
Előzmény: Törölt nick (7664)
Törölt nick Creative Commons License 2008.07.31 0 0 7664
Ha nem akarod kézzel kiválasztani a tartományt, akkor lehet fejleszteni még annyit rajta, hogy a 4. sortól az utolsóig válassza ki magától. (ahogy Delila írta lentebb: ucso = Range("B65536").End(xlUp).Row)
És akkor már ciklus nélkül is meg lehet csinálni, ami sokkal gyorsabb.
Előzmény: Törölt nick (7663)
Törölt nick Creative Commons License 2008.07.31 0 0 7663

Pl így:

Selection.Rows.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp

ki kell jelölnöd a kézzel hozzá a "B" oszlopban egy tartományt.

Előzmény: Master of Amateurs :) (7659)
Delila_1 Creative Commons License 2008.07.31 0 0 7662
Csak Magyarpityu segített.
Előzmény: Laci Laci (7660)
Delila_1 Creative Commons License 2008.07.31 0 0 7661
Sub feleslegessor()
    ucso = Range("B65536").End(xlUp).Row
    sor = 4
    Do
        If Cells(sor, 2) = "" Or Cells(sor, 2) = "törlendő" Then
            Cells(sor, 2).Delete shift:=xlUp
            sor = sor - 1
            ucso = ucso - 1
        End If
        sor = sor + 1
    Loop While sor < ucso
End Sub
Előzmény: Master of Amateurs :) (7659)
Laci Laci Creative Commons License 2008.07.31 0 0 7660

Köszi Delila1 and Magyarpityu, most tudtam megnézni, szuperul működik.

 

Laci

Előzmény: Delila_1 (7658)
Master of Amateurs :) Creative Commons License 2008.07.31 0 0 7659

Sziasztok!

 

 Szeretnék írni egy olyan makrót, ami egy táblázat "B" oszlopának celláit

 vizsgálva töröl bizonyos sorokat.

 Azokat a sorokat kéne törölnie, amiknek a "B"akárhányadik"" cellája üres, vagy 1

 adott értéket tartalmaz (pl.: törlendő). Az első vizsgálandó sor a 4.

 

 Van egy elég gyenge próbálkozásom, de inkább maszatolásnak nevezhető, semmint

 programnak:

 

Sub feleslegessor()

Dim i As Integer

i = 4

Range("B" & i).Select

Do

If Range("B" & i) = "" Then
       
    Selection.Rows(i).Delete Shift:=xlUp
           
End If

i = i + 1

Loop Until Range("B" & i) = ""

End Sub

 

Igazából rohadt nagy bénaságot sikerült kreálnom ahhoz képest,

aminek indult a dolog, és már nem tudok kikeveredni belőle.

 

Segítségeteket előre is köszönöm!

 

ui: Az autószűrő programozásával megtudom oldani, de kultúráltabb megoldást szeretnék.

Delila_1 Creative Commons License 2008.07.31 0 0 7658
Megint igazad van.
Előzmény: magyarpityu (7657)
magyarpityu Creative Commons License 2008.07.31 0 0 7657
A Szamsor makró nem Sub, hanem Function, ilyenkor nem kell a cellába írással foglalkozni, mert a cellában a makró visszatérési értéke megjelenik. Ezért ad vissza Szamsor String típust. Lérte kell hozni egy modult a VBAProjekt alatt, idemásolni a makrót, ezután a Szamsor függvény neve megjelenik a Függvény beillesztése ablakban és úgy használható, mint bármelyik másik függvény.
Előzmény: Delila_1 (7656)
Delila_1 Creative Commons License 2008.07.31 0 0 7656

Klassz, de a végéről lemaradt az eredmény cellába írása. Az End Function elé betenném ezt a két sort (az A oszlopba ír)

 

    sor = Range("A65536").End(xlUp).Row + 1
    Cells(sor, 1) = Szamsor

Előzmény: magyarpityu (7654)
Jozsef Creative Commons License 2008.07.31 0 0 7655
Hogy lehet azt elérni, hogy az eredmény 01 vagy 02 vagy 03 és így tovább legyen.
Nem formátumon keresztül.
Nekem nem a formátum a lényeg, hanem hogy a későbbiekben más képletek 01 vagy 02 stb formátumú szöveggeket tudjanak használni és ezekkel más műveleteket elvégezni.


=SZÖVEG(KEREK(VÉL()*(20-1)+1;0);"00")

ennek az eredménye a számodra szükséges szöveg (nem szám!)
Előzmény: Laci Laci (7646)
magyarpityu Creative Commons License 2008.07.31 0 0 7654

Lehet van egyszerűbb megoldás, de makróval pl. így:

 

Function Szamsor() As String
   Const MaxElem As Integer = 20 'Véletlen szám tartománya: 1 .. MaxElem
   Const ElemDb As Integer = 8   'Ennyi számot írunk egy cellába
   Dim Lista(MaxElem) As Integer
   Dim i As Integer, j As Integer
   i = 0
   While i < ElemDb
      j = Int(MaxElem * Rnd + 1)
      If Lista(j) = 0 Then
         Szamsor = Szamsor & Right("0" & j, 2) & "     "
         Lista(j) = 1
         i = i + 1
      End If
   Wend
   Szamsor = Left(Szamsor, Len(Szamsor) - 5)
End Function

Előzmény: Laci Laci (7652)
Delila_1 Creative Commons License 2008.07.31 0 0 7653

Azt nem tudom, hogy kellene kiszűrni az egyformákat, csak azt, hogy ha az összefűzendő adatok közé a ; helyett az &-et teszed, a függvényt ki sem kell írni.

 

=RIGHT("0"&RANDBETWEEN(1;20);2)&"     "&RIGHT("0"&RANDBETWEEN(1;20);2)&"     "&RIGHT("0"&RANDBETWEEN(1;20);2)&"     "&RIGHT("0"&RANDBETWEEN(1;02);2)&"     "&RIGHT("0"&RANDBETWEEN(1;20);2)&"     "&RIGHT("0"&RANDBETWEEN(1;20);2)&"     "&RIGHT("0"&RANDBETWEEN(1;20);2)&"     "&RIGHT("0"&RANDBETWEEN(1;20);2)

 

A RIGHT("0"&RANDBETWEEN(1;20);2) már így szerepelt.  A hosszú képleted végéről levettem az utolsó, szóközöket tartalmazó karakterláncot.

Előzmény: Laci Laci (7652)
Laci Laci Creative Commons License 2008.07.31 0 0 7652

Köszi Delila & Magyarpityu, nagyon jól működik,

 

Viszont most megragadnám az alkalmat még ehez egy újabb kérdés feltételére:)

 

=CONCATENATE(RIGHT("0"&RANDBETWEEN(1;20);2)&"     ";RIGHT("0"&RANDBETWEEN(1;20);2)&"     ";RIGHT("0"&RANDBETWEEN(1;20);2)&"     ";RIGHT("0"&RANDBETWEEN(1;02);2)&"     ";RIGHT("0"&RANDBETWEEN(1;20);2)&"     ";RIGHT("0"&RANDBETWEEN(1;20);2)&"     ";RIGHT("0"&RANDBETWEEN(1;20);2)&"     ";RIGHT("0"&RANDBETWEEN(1;20);2)&"     ")

 

Bátorkodtam angolul írni a képleteket, mert az excel 2007 ami sok képletet tud összefűzni nekem angolul van meg. Ez egyébként összefűz függvény.

 

Na, eredmény jelen esetben 8 db 1-től 20 -ig generált tök véletlen szám, aminek a formátuma két karakter.

 

 

18     09     20     02     20     15     05     08

 

Mindez nagyon szép és jó, már csak azt szeretném elérni, hogy olyan véletlen számokat kapjak, amik nem ismétlődnek.

 

Na ehhez mit szóltok

 

Tehát ami kelle például

 

18     09     20     02     15     05     08

 

Köszi

 

Laci

 

 

Előzmény: Delila_1 (7651)
Delila_1 Creative Commons License 2008.07.30 0 0 7651

Köszi :-)

Előzmény: magyarpityu (7650)
magyarpityu Creative Commons License 2008.07.30 0 0 7650
Szenzációs! Egyszerű és szép :))
Előzmény: Delila_1 (7649)
Delila_1 Creative Commons License 2008.07.30 0 0 7649
Az alsó képlet helyesen: =JOBB("0"&RANDBETWEEN(0;20);2)
Előzmény: Delila_1 (7648)
Delila_1 Creative Commons License 2008.07.30 0 0 7648

Sokkal könnyebb a vél() helyett a RANDBETWEEN használata, ami egész számokat ad a paramétereként megadott legkisebb és legnagyobb számok között.

 

A =RANDBETWEEN(0;20) 0 és 20 közötti egész számokat ad, nem kell szorozgatni, és kerekítgetni.

 

Az elé tett 0-át másképpen így is meg lehet oldani:

=BAL("0"&RANDBETWEEN(0;20);2)

Előzmény: Laci Laci (7646)
magyarpityu Creative Commons License 2008.07.30 0 0 7647

Több módon lehet.

 

1. Ha A oszlopban vannak a véletlen számok (A1 cella tartalma =KEREK(VÉL()*19+1;0) ), akkor B oszlopban kiegészíted nullával, ha kell (B1 cella tartalma =ÖSSZEFŰZ(HA(A1<10;"0";"");A1)

 

2. Ha egy külön munkalapra kimásolod a számokat, pl Munka1-en A1 = '01 ... A20 = 20, akkor így lesz két számjegyű véletlen szám =INDEX(Munka1!$A$1:$A$20;KEREK(VÉL()*19+1;0))

Előzmény: Laci Laci (7646)
Laci Laci Creative Commons License 2008.07.30 0 0 7646

Sziasztok,

 

Van következő képlet:

 

=KEREK(VÉL()*(20-1)+1;0)

 

Ez ugye 0-tól 20 ig ad számokat eredményül véletlenszrűen, sőtt ezeket még kerekíti is 0 számjegyig.

 

Értelem szerűen 10 alatt az eredmény 1 karakternyi, tehát 1 vagy 2 vagy és így tovább.

 

Hogy lehet azt elérni, hogy az eredmény 01 vagy 02 vagy 03 és így tovább legyen.

 

Nem formátumon keresztül.

 

Nekem nem a formátum a lényeg, hanem hogy a későbbiekben más képletek 01 vagy 02 stb formátumú szöveggeket tudjanak használni és ezekkel más műveleteket elvégezni.

 

 

Válaszotokat előre is köszi

 

 

Laci 

sajo1 Creative Commons License 2008.07.29 0 0 7645
Igen koszonom

A pontositas miatt meg annyi hogy a 97 es annal oregebbek csak usztak egy jot az eredmenyuk nem szamitott bele a vegeredmenybe.
tehat ki kellett gyomlalni a 97, 96... stb szuletetteket de a feladat szempontjabol ez mar nem szamitott, ilyen nem volt sok, azonban a te listadon a 3.dik a 2.dik. es a 7.dik eloreugrik a 6.dik helyre.
Ne csodalkozz ha ez lesz kint a honlapjukon ha egyaltalan kijavitjak...
Törölt nick Creative Commons License 2008.07.29 0 0 7644
Csak az jutott eszembe, hogy sorbaállításhoz van egy függvény is: SORSZÁM
Előzmény: sajo1 (7629)
magyarpityu Creative Commons License 2008.07.29 0 0 7643

Szia!

 

honnan tudod hogy lanyom van ? egyebkent igen a 2. helyezett lany az enyem

 

A 7557-ben írtad! A dobogós helyért külön gratula!

Előzmény: sajo1 (7642)
sajo1 Creative Commons License 2008.07.29 0 0 7642
Kedves Jozsef koszonom neked is a megoldast kiprobalom azt is ha lesz idom , (sajnos dolgoznom is kell)

magyarpityu honnan tudod hogy lanyom van ? egyebkent igen a 2. helyezett lany az enyem

meg1szer koszi mindenkinek aki segitett
Megtetszett az Excel, lehet hogy meg kellene tanulni hasznalni..:)

Laci Laci Creative Commons License 2008.07.29 0 0 7641

Na jó robbantómester,

 

sirály, király, vedd aminek akarod a megnevezést. A lényeg, hogy megint jó képletet írtál vissza és hogy segítettél és köszi.

Előzmény: Törölt nick (7640)
Törölt nick Creative Commons License 2008.07.29 0 0 7640
A király az a királylány apja.
Pl:
HA(HIBÁS("ide másold a képletet idézőjel nélkül");"Nincs benne";"ide is másold be a képletet")


Előzmény: Laci Laci (7626)
magyarpityu Creative Commons License 2008.07.29 0 0 7639
Ja, és a legfontosabb! Gratula a lányodnak! :))
Előzmény: sajo1 (7638)
sajo1 Creative Commons License 2008.07.29 0 0 7638
kedves magyarpityu nagyon koszonom a segitseged tokeletes a megoldas sajnos en ott elakadtam hogy egyesitett cellak miatt sirt a rendezesnel.. :)
Meg1szer nagyon koszonom
magyarpityu Creative Commons License 2008.07.29 0 0 7637
Kapkodok, vigyázat! Fordítva írtam, sorbarendezni először nemek szerint, utána pontszám szerint kell! De Jozsef megoldása szebb, gyorsabb és egyszerűbb kimutatással.
Előzmény: magyarpityu (7635)
Jozsef Creative Commons License 2008.07.29 0 0 7636
Kicsit reszelni kell a táblázaton:
1. Az oszlopoknak fejlécet kell adni pl. helyzés, Név, idő pontszám stb.
Mindegyik oszlopnak legyen neve!!!
2. A versenyszámok sorait töröld ki 50 m. fiú pillangó stb. A nevek tömören egymás után álljanak!
3. Áll bele az adatok közepébe, Adatok/Kimutatás vagy kimutatás diagram menüpont
4. A sorokra húzd rá a nevet, az adatokra a pontszámot, és már kész is vagyunk.
Előzmény: sajo1 (7629)
magyarpityu Creative Commons License 2008.07.29 0 0 7635

A fenti képletet végigírtam mind az 510 sorba, az összes versenyszám valamennyi versenyzője mellett, így megvan a LEN pontszám. A lányok neve mellé F betűt, a fiúké mellé M betűt írtam az R oszlopba, megvan a nemek szerinti elkülönítés.

 

Ezután, mivel a versenyszámok elnevezései egyesített cellák és ezek gondot okoznak sorbarendezésnél, megszüntettem itt a cellák közötti egyesítést. Most már nagyságrendbe lehet rendezni a neveket, elsődleges kulcs az összesített pontszám (Q oszlop), másodlagos kulcs a nemek R oszlopa. Most kész a lista, szüntessük meg az ismétlődéseket!

 

S oszlopba ez kerül: =HA(D4=D3;"";"OK") ,vagyis minden név első előfordulása mellett megjelenik az OK felirat. Most leszűrök OK-ra és az eredményt kimásolom egy új lapra.

 

Eredmények (tényleg eltér...):

 

Praczkó Dóra: 1469
Bényei Lilla: 1433
Czina Zsófia: 1414
Federics Nikolett: 1383
Szokol Szonja: 1299
Farkas Adél: 1268

Drigán Zoltán: 1087
Tekauer Márk: 1079
Mészáros Richárd: 1061
Kutasi Máté: 1043
Ligárt Albert: 1007
Pintér Dániel: 981

Előzmény: sajo1 (7633)
sajo1 Creative Commons License 2008.07.29 0 0 7634
Kedves magyarpityu nagyon kosz a segitseget
sajo1 Creative Commons License 2008.07.29 0 0 7633
Sajnos nem jovok ra mivel egy nev tobbszor szerepel hogy tudom sorbarendezni (jelzem tok laikus vagyok excel ugyben) es mar belefaradtam egy kicsit ...
sajo1 Creative Commons License 2008.07.29 0 0 7632
Bocs most latom hogy mar elkuldted a megoldast nekem ez majdnem 2 oramba kerult
sajo1 Creative Commons License 2008.07.29 0 0 7631
Annyit haladtam . hogy =SZUMHA($D$4:$D$509;D4;$P$4:$P$509) fuggvennyel mindenki neve melle sikerult kiiratnom az osszesitett eredmenyet de sajnos nem sikerul eredmeny szerint sorbarendezni mert egy nev tobbszor fordul elo a tablazatban .
Valoszinuleg most mindenki halalra rohogi magat a benasagomon de en teljesen laikus vagyok ehhez.
magyarpityu Creative Commons License 2008.07.29 0 0 7630

Jól indultál, de ezt írd a Q oszlopba: =SZUMHA($D$2:$D$509;D4;$P$2:$P$509) Ezt végighúzni minden versenyző neve mellett, majd lányokat-fiúkat különválasztani, végül Q oszlop szerint rendezés és kész.

Előzmény: sajo1 (7629)
sajo1 Creative Commons License 2008.07.29 0 0 7629
Kedves listatagok

Van egy excel tabla amiben egy rakas nev mellettuk az elert pontszamok ezeket kell osszeadni az azonos nevhez tartozo pontszamokat es sorba allitani pontszam szerint .
Odaig eljutottam hogy alkalmazom a szumha fuggvenyt
=szumha(D2:D509;"Mészáros Richárd";P2:P509) de ezzel minden nevet kezzel kell beirni mindig az adott cellara allva es ugye ez megint sok kezi munka amit el tudna vegezni egy program is.
Az excel tabla itt talalhato:
http://www.dunaferrse.hu oldalon
Solymár István Emlékverseny 2008.07.26 EREDMÉNYEK letöltése
azaz http://dunaferrse.hu/eredmenyek/eredm.xls

A lanyom is reszt vett ezen a versenyen es sajnos elszamoltak a vegen a LEN pontok alapjan a helyezeset amit ugye szova tettem amire kijavitottak de meg tobb hibat csempesztek be masok rovasara.
Gondoltam kuldeni kellene nekik egy scriptet amelyik kiszamolja a sorrendet.
Sajnos nem szoktam programozni es tegnap este eddig jutottam , viszont az ido surget mert ma felkuldik az eredmenyeket az orszagos kozpontba (orszagos uszoverseny).

Ha valaki megsugja a legegyszerubb megoldast a feladatra megkoszonom.

Arra gondoltam hogy le kellene valogatni a nveket egy masik tablaba es azt megadni valtozonak az szumha fuggvenynek es utana persze valahogy ki kell iratni nevvel egyutt az eredmenyt megfelelo sorrenbe rendezve.


Sánta Kutya (SK) Creative Commons License 2008.07.29 0 0 7628
Jajjajj, tudtam én, hogy este 11 után nem kell agymunkát végezni... :-)
Előzmény: magyarpityu (7627)
magyarpityu Creative Commons License 2008.07.29 0 0 7627
A NAP(A1) függvény visszaadja az A1 cellában lévő dátum napját, esetedben 2008. július 5-hez az 5-öt. Ha 29-ét írtál volna, akkor 29-et adott volna vissza. A SZÖVEG függvény "nnnn" formátummal ebből a számból képez napot, veszi az érték modulo 7-et és kiírja az ehhez tartozó nevet. Neked nem ez kell, hanem a HÉT.NAPJA(A1) függvény, ami a dátumhoz nem a napot adja vissza, hanem a nap sorszámát :))
Előzmény: Sánta Kutya (SK) (7625)
Laci Laci Creative Commons License 2008.07.29 0 0 7626

Szia Robbantómester,

 

Király vagy, szuperul működik, viszont, ezt a #ÉRTÉK kikiktatást a HA függvénnyel nem teljesen értem, lehet mert már majdnem hajnali egy.

 

Üdv

 

Laci

Előzmény: Törölt nick (7624)
Sánta Kutya (SK) Creative Commons License 2008.07.28 0 0 7625
Nagyon fircsa dolog történik! Az ufók megszállták a földet?
Az A1 tartalma: 2008. július 5. (dátumfotmátum)
Az A2 tartalma: =SZÖVEG(NAP(A1);"nnnn")
Erre csütörtököt mond! Pedig ez a nap szombatra esett! Jó, meg tudom oldani, ha kettőt hozzádok a napokhoz, de mégis, érthetetlen.
Törölt nick Creative Commons License 2008.07.28 0 0 7624
pl:
=HA(SZÖVEG.KERES("*01*";A1;1)>0;"Van benne")

Ha az eredmény #ÉRTÉK, akkor nincs benne, de ezt is lehet kezelni még egy ha függvény beágyazásával.

Vagy:
=FKERES("*01*";A:A;1;0)=A1

Ha az eredmény IGAZ, akkor van benne, ha #HIÁNYZIK, akkro nincs benne.
A hibaértéket szintén kezelheted fent leírtak szerint
Előzmény: Laci Laci (7623)
Laci Laci Creative Commons License 2008.07.28 0 0 7623

Köszi Robbantómester, most már megoldódott.

 

Na most a következő kérdés lenne.

 

Itt vannak alábbi számok.

 

01     02     03     04     05     06     07     08     09     10     11     12     13     14     15 

 

De ezek összefűz függvény eredményei. Az összefűz függvényben HA függvények vannak összefűzve és ott ezek az eredmények "01"&"     " és "01"&"     " és így tovább ként szerepelnek.

 

Tehát, ha a feltétel igaz, a függvény kiadja 01 et 02-őt és így tovább plusz mindegyik után még öt szünet jelet, de egy cellában.

 

Azt hogy lehet megtudni függvénnyel, hogy a fenti egy cellában lévő végeredményben szöveg tartalmaz-e egy adott dolgot, pl 01, vagy 13

 

Köszi mindenkinek előre is.

 

Laci 

 

Törölt nick Creative Commons License 2008.07.28 0 0 7622
Hát ne az ÖSSZEFŰZ() függvényt használd hanem az & jellel fűzd össze
Előzmény: Laci Laci (7618)
Laci Laci Creative Commons License 2008.07.28 0 0 7621

Köszi Magyarpityu,

 

Megpróbálom

 

Laci

Előzmény: magyarpityu (7619)
holló Creative Commons License 2008.07.28 0 0 7620
Kimutatás web-es importálásához készítek táblázatot.
Ennek egyik cellájába már előre megírt html részt kell bemásolni.
Az a gond, hogy másolás után a html tagolása szerint nem egy cellába, hanem a felsorolás száma szerinti cellába kerül a szöveg.
Hogyan lehetne megoldani, hogy a html szöveg csak egy cellába kerüljön?
magyarpityu Creative Commons License 2008.07.27 0 0 7619
Tüneti kezelés, de én azt csinálnám, hogy a kilométeres képletet több részre vágnám, egy-egy cellába csak annyit, amennyi elfér (ha max. 30 lehet, akkor legfeljebb annyit), majd ezeket a cellákat fűzöm össze és kész. 200 szövegdarab összefűzése megoldható 8 cellában (7-ben a képlet részei és a nyolcadikban az előző 7 összefűzve). Esetleg makróval összefűzni a szövegeket, akkor nincs ez a korlát.
Előzmény: Laci Laci (7618)
Laci Laci Creative Commons License 2008.07.27 0 0 7618

Sziasztok,

 

A problémám a következő lenne. Több mint 30 függvényt szeretnék összefűzni az összefűz képlettel. A 2003-as excelben maximum csak 30 at lehetett. De rájöttem, hogy a 2007-el már több mint 200-at.

 

Vagyis lehetne, de nem működik. A következő történik. 2003-as excelben született filet megnyitottam a 2007-essel.

 

Erre mikor az összefűzést meg akartam ejteni, ezt a kiírást kaptam, ugyanis a 2007-excelem angol.

 

More arguments have been specified for the funktion then are allowed in the current file format

 

Persze itt én elmentettem ezt a filet 2007-es excel fielként, de a probléma ennél a filenál is ugyanúgy fenn áll.

 

Válaszotokat előre is köszi

 

Laci

 

tbando Creative Commons License 2008.07.27 0 0 7617
Hisztogramot akarok csinálni. De úgy, hogy én határozom meg a rekeszeket. Teszem is, ahogy a Sugó javasolja. De ez a kurva mindig átírja a saját izlése szerint. Állítólag van rá megoldás, hogy az én rekeszeimet töltse fel. De hogyan kell ezt beállítani? 
Jozsef Creative Commons License 2008.07.25 0 0 7616
Kimutatásvarázslóval egyszerűen megcsinálható, erre találták ki. Adatok/Kimutatás vagy kimutatás diagram menüpont.
Előzmény: donci2 (7614)
Sánta Kutya (SK) Creative Commons License 2008.07.25 0 0 7615
A SZUMHA fügvvénnyel lehet összeadni az egy számlához tartozó összegeket, és a DARABTELIvel megszámlálni az egyforma számlaszámokat, ami az osztó lesz. Célszerű beágyazni egy HA függvénybe az átlagot, hogy ha egy számlán nem volt aznap forgalom, akkor ne kapjál zéróosztó hibát.
Remélem, jól értettem a kérdést.
Előzmény: donci2 (7614)
donci2 Creative Commons License 2008.07.25 0 0 7614
Sziasztok!

Van egy excel kérdésem, de sajna nem találok rá szép megoldást. Talán Ti tudtok mondani valami okosságot.

Van egy tábla, mely tartalmaz az egyszerűség kedvéért három oszlopot:
Nap Számlaszám Ft
1 1 10
1 2 20
2 3 30
3 4 40
3 5 50

Ebből kellene egy kimutatást gyártani úgy, hogy mennyi volt a napi átlag számlánként. Azaz a következőt várnám:
Nap ÁtlagFt db ÖsszFt
1 15 2 30
2 30 1 30
3 45 2 90


A nem szép megoldás: az alaptáblába +1 oszlop csupa 1 értékkel. ennek az összesítése, majd ezzel osztom az összFt-t. Majd a részletek eltüntetése. Itt ugyebár a részleteknél nem lesz értelmezhető az átlagFt, csak a napi összesítő sorban. Ha valakit érdekel leírom részletesen.

Any info would be appreciated :)
magyarpityu Creative Commons License 2008.07.24 0 0 7613
Lehet, de más megoldásra jöttem rá :))

A makróim többnyire a ThisWorkbook.Activate utasítással kezdődnek, pont azért, hogy mikor pl. egy Excel alá behúzott szövegfile-t nézegetek, akkor is le tudjam futtatni a makrót, ami ilyenkor nem az aktuális file-ban dolgozik, hanem a háttérben üldögélő Excel táblázatban, és az eredmények sem az aktuális file-ba kerülnek, hanem a helyükre. Erre akkor van szükség, ha a makróhoz olyan adat kell, ami csak egy adott helyen van, azokat más file-ban hiába is keresné, vagy ha kifejezetten abba a file-ba kell az eredményeket beírni, amiben a makró van. Ez addig rendben is volt, amíg a makrókat az Excel menüből indítottam, mert ott eleve filenév.xls!makronév formában érhetők el a nem aktuális munkafüzetek makrói. Így ha több megnyitott munkafüzetben van ugyanolyan nevű makró, akkor azok eleve nem keveredhetnek össze, mert azonos nevű file-ok úgysem lehetnek egyszerre nyitva.

Ha tehát menüből olyan makrót szerenék indítani, ami kötődik az adott file-hoz (azaz nem olyan, hogy pl. beszínezi az aktuális cellát), akkor meg kell mondani, melyik példány fusson. Átírom a menüt létrehozó makrót úgy, hogy vizsgálja meg, van-e már kint ilyen menü, ha igen, akkor ne fejezze be a kódot (ahogy most van megírva), hanem az adott menüpont popup legördülő menü legyen, ahol a futó példányok nevei lesznek felsorolva, és onnan kell kiválasztanom, hogy melyik file-ba szeretnék dolgozni. Mikor elkezdtem beírni a hozzászólást, még más ötletem volt, ezt most találtam ki, remek móka lesz megírni, köszi az együtt gondolkodást! :))

Előzmény: Törölt nick (7612)
Törölt nick Creative Commons License 2008.07.24 0 0 7612
Lehet azt a makrót úgy megírni, hogy az ActiveWorkbook és ActiveSheet objektumokra hivatkozzon?
Előzmény: magyarpityu (7611)
magyarpityu Creative Commons License 2008.07.24 0 0 7611

Most, hogy a kibővített főmenüből indítom a makróimat, egy új hiba született :(( Ha több munkafüzet is nyitva van ugyanabban az Excel példányban, és ezekben megvannak ezek a makrók (csak az adatok mások), akkor a menüpont nem az éppen aktuális munkafüzet makróját indítja el, hanem azét, amelyik feltette a menüt (amelyiket először nyitottam meg). Most tehát a makróknak csak az a példánya fut, amelyik abban a munkafüzetben van, ami feltette a menüt, és így a makró nem az aktuális munkafüzet adataival számol, hanem az elsőként megnyitottal, mert erre a makróra hivatkozik a menüpont. Marad az Eszközök/Makró/Makrók? Hmm...

magyarpityu Creative Commons License 2008.07.24 0 0 7610

Megvan :))  Menu(2).BeginGroup = True

Előzmény: magyarpityu (7609)
magyarpityu Creative Commons License 2008.07.24 0 0 7609

Sziasztok!

 

Megint a segítségeteket szeretném kérni! Az Excel menüt kibővítettem egy új menüponttal, hogy a saját makróimat közvetlenül a főmenüből indíthassam. Már ott is rezeg a léc, hogy nem tudom, jól írtam-e meg a kódot (jónak tűnik mert megjelenik a menü és elindulnak a makrók, bár elég fura, hogy a menüpontok msoControlButton típusúak, pedig nem is gombok). És vajon az Excel főmenü mindig a CommandBars(1) lesz, vagy névre keressek rá (ami azért veszélyes, mert ha más Excelben más neve van, akkor nem találja meg a makró)?

 

De nem is ez a fogfájásom. Hanem szeretném csoportosítani a menüpontokat, és itt-ott elválasztó vonalat (separator-t) szeretnék beilleszteni, de nem tudom, azt hogyan kell. Ebbe most eléggé belegabajodam, szóval a kód így néz ki, talán abból világosabb, mit szeretnék:

 

Sub CreateSajatMenu()
   Const SajatMenuName As String = "Saját makrók"
   Dim i As Integer
  
   Dim MainMenu As CommandBar
   Set MainMenu = CommandBars(1)
  
   Dim MenuPont(5) As String, Menu(5) As CommandBarButton
   MenuPont(0) = "Első pont"
   MenuPont(1) = "Második pont"
   MenuPont(2) = "Harmadik pont"
   MenuPont(3) = "Negyedik pont"
   MenuPont(4) = "Ötödik pont"

 

   Dim SajatMenuCommand As CommandBarPopup
   For Each SajatMenuCommand In MainMenu.Controls
      If SajatMenuCommand.Caption = SajatMenuName Then Exit Sub
   Next SajatMenuCommand

 

   Set SajatMenuCommand = MainMenu.Controls.Add(msoControlPopup)
   With SajatMenuCommand
      .Caption = SajatMenuName
      For i = 0 To 4
         Set Menu(i) = .Controls.Add(msoControlButton)
         With Menu(i)
            .Caption = "&" & MenuPont(i)
            .OnAction = MenuPont(i)
         End With
      Next i
   End With
End Sub

 

(bocs, ha ideszemeteltem) Szerintetek hogyan kell megoldani, hogy (mondjuk) a második és harmadik pont között legyen egy elválasztó sor?

Törölt nick Creative Commons License 2008.07.24 0 0 7608

Sziasztok!

 

Azt szeretném megkérdezni, hogy lehet beállítani azt, hogy az Adatok -> Érvényesítés -> Beállítások -> Érvényességi feltétel -> Megengedve: Lista kiválasztásakor a cellára lépve az első listaelem jelenjen meg?

 

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

Karika1177 Creative Commons License 2008.07.24 0 0 7607
Köszönöm szépen a segítséget, kipróbálom, és beszámolok az eredményről!

üdv
K.
Előzmény: Delila_1 (7606)
Delila_1 Creative Commons License 2008.07.23 0 0 7606
Érvényesítés
Delila_1 Creative Commons License 2008.07.23 0 0 7605
Itt a kép.
Delila_1 Creative Commons License 2008.07.23 0 0 7604

A Munka2 lapon a sárga háttérrel jelzett területnek nevet adsz a Beszúrás/Név/Név megadása menüben (én a termék nevet adtam).

 

A Munka1 lap A oszlopában kijelölöd a kívánt számú sort, az Adatok/Érvényesítés/Beállítások fülön a Megengedve legördülőből kiválasztod a listát, a Forráshoz pedig beírod: =termék.

 

A melléklet képen (reményeim szerint) látszik a Munka1 B3 képlete, amit jobbra- és lehúzol addig, ameddig szükséges.

Előzmény: Karika1177 (7603)
Karika1177 Creative Commons License 2008.07.23 0 0 7603
Sziasztok,

kezdő kicsi emberke vagyok excelben.

Sok soros táblázatot kellene készítenem, amely némely oszlopában választható legördülő menü kellene, ami alapján ő automatikusan kitölti a vonatkozó cellákat.

Konkrétan: van egy 10*30-as segédtáblázatom (külön munkalapon szeretném tárolni), 10 különféle termék, amelyeknek van 30 tulajdonsága (számok mind).

Azt szeretném, hogy a táblázatomba elég legyen a legördülő menüből kiválasztani mondjuk a 7-es terméket, és ő automatikusan töltse ki a 30 sornyi adatot, ne kelljen mindig bepötyögni.

Van ilyen?
Delila_1 Creative Commons License 2008.07.23 0 0 7602

Szia!

 

Rögzítsd makróba a 3 oszlopod rendezést.

A lapfülön, amelyik a rendezendő adatokat tartalmazza, jobb klikk, Kód megjelenítése. A VBE jobb oldalán kapott üres lapra másold be:

 

Sub Worksheet_Change(ByVal Target As Excel.Range)
    If (Target.Column = 1) Then
    '*** Ehelyett másold be a rögzített rendezést *******
        Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    '********************************************
    End If
End Sub

Itt az If (Target.Column = 1) Then sor az A oszlopba írásra reagál. Ha nem az kell,  az 1-et írd át a kérdéses oszlop sorszámára. A ***-ok közötti rész helyére másold be a rögzített rendezést, mert ez csak az A oszlop szerint rendez. 

Előzmény: 23125H (7601)
23125H Creative Commons License 2008.07.23 0 0 7601
Sziasztok!

Most tanulgatom az excelt és a következő problémám adódott:
Van egy táblázatom tele adatokkal, amiket 3 rendezési elv alapján sorba rendeztem. A kérdésem az, hogy be lehet-e állítani úgy, hogy automatikusan rendezzen a megadott elvek alapján, ha változik a táblában az adat, és ne kelljen mindig minden adat változásnál külön rendezgetni. Hogyan?
Köszönöm előre is.
magyarpityu Creative Commons License 2008.07.23 0 0 7600

Sziasztok!

 

Azt szeretném kérdezni, hogyan lehet rávenni az Excel-t, hogy a UserForm-on elhelyezett elemek ControlTipText szövegeit ne egy sorba jelenítse meg, hanem mondjuk a Label-eknél szokott módon egy adott szélességű tartományba tördelje be? Esetleg használjak sortörés karaktereket? Valahol nem lehet megadni, hogy legfeljebb hány betűt írjon egy sorba és eszerint tördelje a szöveget? Nekem 200 betűs (megszámoltam) ControlTipText-et is egy sorba írt, szépen végigér a monitoron :))

stromba Creative Commons License 2008.07.22 0 0 7599

 

próbáld ki ezt a vba kódot:

 

 

Sub passwordbreaker()

'a szerző: brettdj / www.experts-exchange.com

Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
On Error Resume Next
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126


ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then
MsgBox "One usable password is " & Chr(i) & Chr(j) & _
Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
ActiveWorkbook.Sheets(1).Select
Range("a1").FormulaR1C1 = Chr(i) & Chr(j) & _
Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next

End Sub

Előzmény: v63 047 (7598)
v63 047 Creative Commons License 2008.07.22 0 0 7598
Elnézést, rátaláltam a magyarra is, olvasgattam, remélem majd a jelszót feltudom törni!
Előzmény: v63 047 (7597)
v63 047 Creative Commons License 2008.07.22 0 0 7597
Köszönöm a választ, ahhoz le kell tölteni az egész Open Office-t? Mennyire biztosnágos ez? Nem fogja szétcseszni a 2003-as Excellt? Köszönöm!
Előzmény: Jozsef (7596)
Jozsef Creative Commons License 2008.07.22 0 0 7596
Első próbálkozásként próbáld meg OpenOffice Calc-cal megnézni. Itt a topikon már sokaknak segített ez jelszóproblémánál.
Ha nincs a gépeden, letölthető a www.openoffice.org honlapról.
Előzmény: v63 047 (7595)
v63 047 Creative Commons License 2008.07.22 0 0 7595
Szép napot!

Van egy Excel-es táblázatom, és van benne alul egy olyan lapfül amire, ha rámegyek az az egész lap le van jelszavazva, és sajnos nem tudom modósítani. :-((( Olvastam, vannak ilyen-olyan jelszótörő progik, csak sajnos kemény pénzbe kerülnek. Tudnátok nekem valami jót ajánlani ami működik is és ingyenes (ha van ilyen)? Köszönöm szépen, elnézést ha OFF téma.
Master of Amateurs :) Creative Commons License 2008.07.22 0 0 7594

Köszönöm, József!

 

(azt hiszem, sokkot kaptam... :) )

Törölt nick Creative Commons License 2008.07.22 0 0 7593
Szerintem ez nem Excel probléma. Inkább VGA driver vagy ilyesmi. Nézd meg egy másik gépen, hogy ugyanez a fájl reprodukálja-e a jelenséget.
Előzmény: magyarpityu (7592)
magyarpityu Creative Commons License 2008.07.22 0 0 7592

Sziasztok!

 

Egy UserForm-on elhelyeztem egy ListBox elemet és a listaelemek szürke pontsorral határolva jelennek meg. Azt szeretném kérdezni, ennek mi lehet az oka? Hátha lényeges, ideírom, a UserForm-on van egy MultiPage, ennek egyik Page lapján van ez a ListBox. A TabIndex és a TabStop be van állítva (erre gyanakodtam, de nem ez a hiba). Mellékelek egy képei is a jelenségről:

 

A ListBox elemei miért vannak bekeretezve?
Sánta Kutya (SK) Creative Commons License 2008.07.22 0 0 7591
Hú, ha ezt a reptéren hallották volna! Nehogy még valaki úgy értse, hogy a repülőgéppel. Érdekes látvány lenne, csak precíz kivitelezést igényel. :-DDD
Előzmény: Delila_1 (7590)
Delila_1 Creative Commons License 2008.07.22 0 0 7590

"trimmel ang drótszőrű kutyák szőrét levágja, ritkítja"

Idézet Bakos Ferenc "Idegen szavak és kifejezések" c. könyvéből :) 

Előzmény: Sánta Kutya (SK) (7589)
Sánta Kutya (SK) Creative Commons License 2008.07.21 0 0 7589
Ez most kicsit mellbevágott, bár a trim függvényt én magam írtam be a minap, de ezt az igét, hogy "trimmelni", eddig csak a repülőknél hallottam. :-)
Előzmény: Jozsef (7584)
Jozsef Creative Commons License 2008.07.21 0 0 7588
Ha nincs benne az y érték, ez még akkor is lekezeli:
=HA(NEM(HIBÁS(HOL.VAN(B1;OFSZET(A1;A1-1;0;1;255);0)));HA(NEM(SZÁM(KÖZÉP(CÍM(SOR(OFSZET(A1;A1-1;0;1;255));HOL.VAN(B1;OFSZET(A1;A1-1;0;1;255);0);4);2;1)));BAL(CÍM(SOR(OFSZET(A1;A1-1;0;1;255));HOL.VAN(B1;OFSZET(A1;A1-1;0;1;255);0);4);1);BAL(CÍM(SOR(OFSZET(A1;A1-1;0;1;255));HOL.VAN(B1;OFSZET(A1;A1-1;0;1;255);0);4);2));"nincs ilyen elem")
Előzmény: Jozsef (7587)
Jozsef Creative Commons License 2008.07.21 0 0 7587
1. Ha A1-van, hogy hányadik sor(x), B1-ben keresendő érték:
=HA(NEM(SZÁM(KÖZÉP(CÍM(SOR(OFSZET(A1;A1-1;0;1;255));HOL.VAN(B1;OFSZET(A1;A1-1;0;1;255);0);4);2;1)));BAL(CÍM(SOR(OFSZET(A1;A1-1;0;1;255));HOL.VAN(B1;OFSZET(A1;A1-1;0;1;255);0);4);1);BAL(CÍM(SOR(OFSZET(A1;A1-1;0;1;255));HOL.VAN(B1;OFSZET(A1;A1-1;0;1;255);0);4);2))

Tetszik?! :)
A 2. ugyanezen elvek alapján...
Előzmény: Master of Amateurs :) (7586)
Master of Amateurs :) Creative Commons License 2008.07.21 0 0 7586

Sziasztok!

 

 Milyen kóddal lehet megadni azt, hogy:

 

 1.:

 Ha az "x". sor valamely cellája tartalmazza "y"-t, akkor térjen vissza az oszlopcímkével (pl. "D")

 

 2.:

 Ha az "x". oszlop valamely cellája tartalmazza "y"-t, akkor térjen vissza az sor számával (pl. "345.")

 

Segítségeteket előre is köszönöm!

 

Törölt nick Creative Commons License 2008.07.21 0 0 7585
Igen, így már pompás! Köszönöm szépen a segítséget!
Előzmény: Jozsef (7584)
Jozsef Creative Commons License 2008.07.21 0 0 7584
trimmeld le, a Windows API alavetően C nyelvi adatstruktúrával dolgozik a stringnek ott a karaktertömb felel meg. Ha kódba bele nézel, akkor 254 szóköz van lefoglalva a név helyének.
ezt írd be:
MsgBox Len(Trim(adatfile))
Előzmény: Törölt nick (7583)
Törölt nick Creative Commons License 2008.07.21 0 0 7583
Még egy kérdésem lenne:

If GetOpenFileName(opfile) Then
adatfile = opfile.lpstrFile
Else

után az MsgBox Len(adatfile) miért nem ad megfelelő eredményt?
Előzmény: Jozsef (7580)
Törölt nick Creative Commons License 2008.07.21 0 0 7582
Köszi, megjegyzem.
Előzmény: Sánta Kutya (SK) (7579)
Törölt nick Creative Commons License 2008.07.21 0 0 7581
Igen, pontosan ezt szerettem volna! Köszönöm szépen a segítséget! :-)
Előzmény: Jozsef (7580)
Jozsef Creative Commons License 2008.07.21 0 0 7580
A problémám az, hogy nem tudom megadni egy központi tárhely és azon belül egy könyvtár elérését, vagyis, hogy ne kellejen ezeket állandóan kiválasztani, hanem ezt ajánlja fel a GetOpenFilename eljárás, és innen lehessen kiválasztani egy *.txt kiterjesztésű fájlt. Tudna valaki segíteni?

Nézd meg 4690 hsz.-t vagy keress rá a GetOpenFilename-re ebben a topikban.
Az itt lévő megoldásban a
opfile.lpstrInitialDir = CurDir
sorba a CurDir helyett a saját könyvtárad elérhetőségére változtasd meg.
Én egyébként mindig ezt Windows API-hoz tartozó dialógusablakot használom, mert ezen aztán minden testreszabható.
Üdv
József
Előzmény: Törölt nick (7577)
Sánta Kutya (SK) Creative Commons License 2008.07.21 0 0 7579
Duplán kell írni. \\-->\
Előzmény: Törölt nick (7578)
Törölt nick Creative Commons License 2008.07.21 0 0 7578
A ChDir után a szerver előtt 2db., utána a könyvtárneve előtt pedig 1 db. backslash karakter van...
Előzmény: Törölt nick (7577)
Törölt nick Creative Commons License 2008.07.21 0 0 7577
Sziasztok!

 

Segítséget szeretnék kérni egy fájlmegnyitási problémában. Az alábbi eljárással próbálkozom, de idáig sikertelenül:

 

  ChDir "\szerverkönyvtárneve"

  Fájltípus = "Szöveg fájl (*.txt), *.txt"

  Felirat = "Szövegfájl kiválasztása"

  Szövegfájl = Application.GetOpenFilename(Fájltípus, , Felirat)

 

A problémám az, hogy nem tudom megadni egy központi tárhely és azon belül egy könyvtár elérését, vagyis, hogy ne kellejen ezeket állandóan kiválasztani, hanem ezt ajánlja fel a GetOpenFilename eljárás, és innen lehessen kiválasztani egy *.txt kiterjesztésű fájlt. Tudna valaki segíteni?

 

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

Jozsef Creative Commons License 2008.07.21 0 0 7576
Nekem ez nem működik. Hiába Trim, ha átmásolom értékként, ott van a szóköz.
Azért nem működik a TRIM, mert igazából nem szóköz, hanem egy 160 ASCII kódú karakter van a végén.
Esetleg megpróbálhatod ezzel a képlettel is:
=DÁTUMÉRTÉK(CSERE(A4;12;1;""))
Előzmény: neofrix baszmacs (7570)
Delila_1 Creative Commons License 2008.07.20 0 0 7575

Sheets.Select

 

Ilyen egyszerű.

Előzmény: Delila_1 (7572)
Delila_1 Creative Commons License 2008.07.19 0 0 7574

Sajna nem jó. Makróban kellene.

A rögzítéssel ezt kaptam:

Sheets(Array("Munkalap1", "Munkalap2", "Munkalap2")).Select

Próbáltam For Next-ben összefűzni a lapok bekért nevét (meg idézőjeleket, és vesszőket), de a Sheets(Array(összegyűjtött)).Select-et nem fogadja el.

Előzmény: Sánta Kutya (SK) (7573)
Sánta Kutya (SK) Creative Commons License 2008.07.19 0 0 7573
Bekötöd a szemedet, aztán lenyomod a ctrl-t, és összevissza kattintgatsz a fülekre? :-)
Előzmény: Delila_1 (7572)
Delila_1 Creative Commons License 2008.07.19 0 0 7572

Sziasztok!

 

Hogy lehet egy füzetben ismeretlen számú és nevű lapot együttesen kijelöln?

neofrix baszmacs Creative Commons License 2008.07.18 0 0 7571
Hopp, ez működik! Köszönöm mindenkinek!
Előzmény: Jozsef (7569)
neofrix baszmacs Creative Commons License 2008.07.18 0 0 7570
Nekem ez nem működik. Hiába Trim, ha átmásolom értékként, ott van a szóköz.
Előzmény: Sánta Kutya (SK) (7568)
Jozsef Creative Commons License 2008.07.18 0 0 7569
Próbáld meg át alakítani a következő képlettel:
=DÁTUM(BAL(A4;4);KÖZÉP(A4;6;2);KÖZÉP(A4;9;2))
Utána visszamásolhatod az eredeti helyre Irányított beillesztés/Értékettel

Előzmény: neofrix baszmacs (7567)
Sánta Kutya (SK) Creative Commons License 2008.07.18 0 0 7568
Ha az a-ban vannak, akkor pl. B1=TRIM(A1) stb. Ez legalább megmutatja, hogy tényleg szövegformátumban van-e. Aztán esetleg ki lehet másolni a kapott értékeket irányított beillesztéssel (az "értéket" bejelölésével), és törölni a nyers adatokat.
Előzmény: neofrix baszmacs (7567)
neofrix baszmacs Creative Commons License 2008.07.18 0 0 7567
Köszönöm Jozsef, tényleg ott a szóköz, és ha kiveszem onnan, akkor helyreáll a dátum formája.

Most már csak egy apróság: hiába próbálom, hogy keresse meg a szóközöket és cserélje ki őket semmire, azt írja, nem talál egy szóközt sem.

Persze, kitörölgethetném kézzel is, de akkor megint jön az a kínos érzés, hogy neandervölgyi vagyok a csúcstechnológiához, ami lehet, hogy igaz, de csoda kellemetlen. ;-)
Előzmény: Jozsef (7566)
Jozsef Creative Commons License 2008.07.18 0 0 7566
kezdem szégyelni, hogy a teknika századát követő évszázadban újra be kell írogatnom a dátumokat. Tud valaki segíteni?
A probléma igen egyszerű: az OTP-től jövő dátum végén ott van egy szóköz, (ami persze nem látszik elsőre), emiatt szövegként értelmezi az Excel. Le kell törölni és utána már megformázható a kívánt formátumba.
Előzmény: neofrix baszmacs (7565)
neofrix baszmacs Creative Commons License 2008.07.18 0 0 7565
Sziasztok!

Szokásos dátum-problémába futottam, és nem bírok vele. A bank küldi a dátumokat egyik formátumban, nekem meg egy másikban kellenének, és nem tudom átalakítani. És már kezdem szégyelni, hogy a teknika századát követő évszázadban újra be kell írogatnom a dátumokat. Tud valaki segíteni?

Itt van a két formátum.

Köszönet!
elleen Creative Commons License 2008.07.17 0 0 7564
Köszönöm a segítséget!
Előzmény: Sánta Kutya (SK) (7563)
Sánta Kutya (SK) Creative Commons License 2008.07.16 0 0 7563
Jelöld ki az eredménycellákat, és a formátum menüben a feltételes formázásnál állítsd be. A logikája hasonló a HA függvényhez, csak nem értéket ad vissza, hanem formázást.
Előzmény: elleen (7562)
elleen Creative Commons License 2008.07.16 0 0 7562
Sziasztok, tudna valaki segíteni, hogy egy HA függvénynél hogyan tudom pl. piros színnel kiíratni az egyik lehetőséget? =HA(D2-B2-90>0;"van";"nincs") tehát, hogy a "nincs" pirosan jelenjen meg, de a "van" maradjon fekete. Köszi!
Törölt nick Creative Commons License 2008.07.15 0 0 7561
Természetesen nincs.
Ismét köszönöm a segítségedet!
Előzmény: Törölt nick (7560)
Törölt nick Creative Commons License 2008.07.14 0 0 7560
Eszközök->Makró->Biztonság->Megbízható közzétevők->A Visual Basic Projekthez való hozzáférés megbízható: van pipa?
Előzmény: Törölt nick (7559)
Törölt nick Creative Commons License 2008.07.14 0 0 7559
Sziasztok, azt szeretném megtudni, hogy a következő sorra miért kapom ezt a hibaüzenetet:
"Nincs jogosultság a Visual Basic projekt programozási elérésére,"

ActiveWorkbook.VBProject.VBComponents.Remove_ ActiveWorkbook.VBProject.VBComponents("Module1")

(nincs levédve jelszóval sem)
Bandhy Creative Commons License 2008.07.13 0 0 7558
Köszi, azzal próbálkozom majd.
Előzmény: Törölt nick (7556)
Mad árka Creative Commons License 2008.07.13 0 0 7557
Köszönöm!
Előzmény: Bandhy (7554)
Törölt nick Creative Commons License 2008.07.13 0 0 7556
Hogy jó helyre is menjen:
Irányított szűrővel - és ott jelöld be: "egyedi rekordok megjelenítése"
Előzmény: Bandhy (7552)
Törölt nick Creative Commons License 2008.07.13 0 0 7555
Irányított szűrővel - és ott jelöld be: "egyedi rekordok megjelenítése"
Előzmény: Mad árka (7553)
Bandhy Creative Commons License 2008.07.13 0 0 7554
Mad árka: próbáld meg az alt-enter kombinációt.
Mad árka Creative Commons License 2008.07.13 0 0 7553
Üdv ismét! Excelben, ha entert nyomok, normál beállítások mellett, ahogy az szokásos, a következő cellára ugrik lefelé. Ha több, enterrel elválasztott sort szeretnék beírni egy cellába, mit üssek? A fejemen kívül. :) Úgy emlékszem, valahol át lehet állítani a programot, hogy az entert azt ne sorugrásnak vegye, de én szeretném megtartani ezt a funkciót, s csak "időszaki" billentyűparanccsal elérni, hogy a cellán belül maradjon.

Köszönöm a segítséget.
Bandhy Creative Commons License 2008.07.13 0 0 7552
Sziasztok! Adva van egy táblázat, sok-sok adattal, mint pl. név, e-mail cím, telefonszám, rendelési tétel, akármi. Hogyan tudom kiszűrni (esetleg automatikusan törölni) egy táblázatból a duplán szereplő e-mail címeket és csak az egyiket megtartani, amik különböző névhez tartoznak? (Pl. Béla - 123@freemail.hu és Józsi - 123@freemail.hu közül csak az egyiket kellene megtartani).
Törölt nick Creative Commons License 2008.07.11 0 0 7549
tedd be duplán a backslash-t, akkor látszik.
Előzmény: Gavriel (7547)
Master of Amateurs :) Creative Commons License 2008.07.10 0 0 7543

Sziasztok!

 

 Mondjátok meg pls, hogy szerintetek melyik a legjobb VB kódszerkesztő!

 A Visual Basic 6.0?

 

Köszi!

chop Creative Commons License 2008.07.09 0 0 7542
Az elso megoldas sok adatnal eleg maceras, de a halado mar tokeletes! Koszi!
Előzmény: Jozsef (7540)
Delila_1 Creative Commons License 2008.07.09 0 0 7541
Nincs mit.
Előzmény: repuleskepekben (7537)
Jozsef Creative Commons License 2008.07.09 0 0 7540
Masik forumon mar kerdeztem, es azt mondtak, hoyg nem lehet megcsinalni, de azert megkerdem itt is. Van egy ilyesforma tablazatom:

Rossz fórumon kérdezted :))
Meg lehet oldani:
Fapados módszer:
1. A Diagramvarázslóval csinálsz egy PontXY diagramot a számpárokból
A Diagram beállításai lépésben, a Feliratok fülön, bekapcsolod az X vagy Y érték megjelenítését.
2. Ha kész a diagram, a diagramterületen a pont mellett megjelenő számra addig kattintasz, amíg szerkeszthetővé válik, és átírod a feliratot a kívánt betűre.

Haladó módszer:
1. Letöltöd és felrakod a következő Excel kiegészítést : http://www.appspro.com/Utilities/ChartLabeler.htm
2. Miután készítesz egy PontXY diagramot a számokból, ráállsz, az Eszközök/XY Chart Labels/Add labels menüponttal, megadod neki a feliratot tartalmazó tartományt.

Profi módszer
Írsz egy makrót, aminek megadsz három tartományt, a VBA kód a fapados módszert automatizálja. Ennek megírására most nincs időm :(
Üdv
József
Előzmény: chop (7529)
Törölt nick Creative Commons License 2008.07.09 0 0 7539
ja már értem, miért kell ide Find. A Match-el nehéz lenne megkeresni az utolsó találat sorát.
Előzmény: Törölt nick (7538)
Törölt nick Creative Commons License 2008.07.09 0 0 7538
Igen, ez gyorsabb mint stromba függvénye.
A Find helyett nem érdemes inkább Application.Match függvényt használni?
Azért kérdem mert több forrásból is inkább ezt javasolják (én is ezt szoktam használni).

Mi a véleményed?
Mondjuk ennél kezelni kell a hibát is...
Előzmény: Törölt nick (7533)
repuleskepekben Creative Commons License 2008.07.09 0 0 7537
Köszönöm szépen.Ez eszembe sem jutott volna!
Előzmény: Delila_1 (7536)
Delila_1 Creative Commons License 2008.07.09 0 0 7536

Elírtam, helyesen

 

=fkeres(e2;b2:c21;2;hamis)

Előzmény: Delila_1 (7535)
Delila_1 Creative Commons License 2008.07.09 0 0 7535

Utolsó paraméterként az Fkeresben a Hamis (False) paramétert add meg a rendezetlen listához.

 

G2-> =fkeres(e2;b2:b21;1;hamis)

Előzmény: repuleskepekben (7534)
repuleskepekben Creative Commons License 2008.07.09 0 0 7534

Üdv mindenkinek!

 

A következő segítségre lenne szükségem.

Van tartomány amiben vannak különböző értékek (B2:B21)

Van mellette egy másik tartomány (C2:C21)

Van egy cella (E2),aminek az értéke megtalálható a (B2:B21) tömbben.

A kérdésem az lenne, hogy hogyan lehet azt megoldani, hogy mondjuk az E2-es (fehér cella) értéke ha 135, akkor a mellette lévő (C2:C21) tömbből a mellette lévő értéket, azaz a 6 os számot adja  eredményül, és ezt az eredményt írja ki a sárga cellába.Ha a fehér cella értéke nem a 135,hanem a 131, akkor a sárga cella értéke 10 legyen, azaz a 131 mellett lévő 10-es szám.

Próbálkoztam már a FKERES függvénnyel, de érdekes eredményeket ad eredményül, és ahogy próbálkoztam, azért lehetett ez,mert a B2:B21 tartomány nincs sorrendben.

 

Előre is köszönöm a segítségeket.

 

Törölt nick Creative Commons License 2008.07.08 0 0 7533
Én az alábbi verziót javaslom, mert
1) a Find metódus soxor gyorsabb, mint akármelyik cellákon végrehajtott ciklus,
2) ha nincs Találat, akkor a függvény automatikusan #ÉRTÉK! hibával tér vissza, tehát ezt nem kell külön lekezelni.

Function ULookup(Mitkeres As Variant, Holkeres As Range, Oszlop As Long)
Dim Találat As Range
If Oszlop > Holkeres.Columns.Count Then Oszlop = 260
Set Találat = Holkeres.Columns(1).Find(What:=Mitkeres, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious)
If Találat.Offset(, Oszlop - 1) = "" Then
ULookup = ""
Else
ULookup = Találat.Offset(, Oszlop - 1)
End If

End Function

Az utolsó If..Then..Else azért van, mert anélkül a függvény nullát ad vissza ott, ahol üres sztringet kellene. Ezt esetleg egy elágazásnál elegánsabban is fel lehet oldani, de most ez jutott eszembe.
Előzmény: Törölt nick (7518)
tbando Creative Commons License 2008.07.08 0 0 7532
Kösz. Az összekapcsolt cellák volt az első ötletem nekem is. Voltak is ilyenek, de nem ez volt a hiba. Időközben ugyanis rájöttem. Az átmásolandó füzetben több lap is aktívvá volt téve. Így ezekről is másolni akart az 1 aktivlapos füzetbe, ami érthetően nem sikerült. Elég triviális hiba, de már vagy egy hete bosszankodtam miatta. Aztán hogy elküldtem a kérdést, véletlenül ráhibáztam a megoldásra. 
Előzmény: Jozsef (7528)
stromba Creative Commons License 2008.07.08 0 0 7531
ezt már egy párszor kilinkeltem :)

<a href="http://msexcel.uw.hu/Files/Excel_2003_Functions_(onlinehelp).xls " target="_blank">Excel függvények angolul/magyarul/németül/franciául</a>
Előzmény: Laci Laci (7526)
stromba Creative Commons License 2008.07.08 0 0 7530
Szia robbantómester

Igen, meg lehet csinálni for each .... next loop-pal is. A for each ciklus egy array (collection) minden elemén végigmegy - sorrendben - tehát azt a sort kell hogy megtaláld ahol a 'Mitkeres' érték legutoljára előfordul.

Az array ebben az esetben a Holkeres tartomány első oszlopa lesz, a for - next each ciklus pedig ezen tartomány minden elemén (cellján) végigmegy, és keresi azokat az elemeket ahol a cella értéke megegyezik a 'Mitkeres' értékével. A for... next each ciklus végeredményeként annak a sornak a számát kell megkapnunk, ahol ez utóbbi adott, ebből pedig már képezhető a függvény végeredménye.
Remélem ez így segít, mivel szeretnél játszani ezért nem adom meg a megoldást. Szólj ha a fentiek alapján nem menne.

Jó szórakozást hozzá!






Előzmény: Törölt nick (7525)
chop Creative Commons License 2008.07.08 0 0 7529
Masik forumon mar kerdeztem, es azt mondtak, hoyg nem lehet megcsinalni, de azert megkerdem itt is. Van egy ilyesforma tablazatom:

A 1 5
B 5 6
C 2 2
D 4 2

A szamokat szeretnem egy koordinata rendszerben abrazolni ugy, hogy az egyes koordinatakhoz automatikusan hozzarendelodjenek a hozzatartozo betuk. Meg lehet ezt csinalni?

Koszi.
Jozsef Creative Commons License 2008.07.08 0 0 7528
Az információ nem illeszthető be, mert nem azonosak a kijelölt területek. Mit kéne átállítani?
Esetleg, ahová másold, ott lehet, hogy összenyitott cellák találhatóak.
Előzmény: tbando (7527)
tbando Creative Commons License 2008.07.08 0 0 7527
Egy másik gépen készült fileba akarok átmásolni egy cellatömböt a saját gépemről. A szokásos módon, CTRL-C, CTRL-V. De hibaüzenettel nem engedi: Az információ nem illeszthető be, mert nem azonosak a kijelölt területek. Mit kéne átállítani?
Laci Laci Creative Commons License 2008.07.08 0 0 7526

Megnéztem most, de nem magyar az excelem, angolul meg nem találtam meg ezeket a függvényeket, majd az otthoni gépemen megnézem magyar excellel.

 

köszi a válaszodat

Előzmény: Törölt nick (7523)
Törölt nick Creative Commons License 2008.07.08 0 0 7525
Stromba,
az a kérdésem, hogy ezt lehetséges e

For Each Holkeres In Mitkeres
formában vhogy kivitelezni?

A For Each ciklusnak is az a tulajdonsága, hogy mindig a tartomány elején kezd?
Csak sima For ciklusban lehet x = x-1 értékadást megjátszani?

Nem kell kész megoldás, mert akkor nem lesz mivel játszanom :)
Előzmény: stromba (7519)
Törölt nick Creative Commons License 2008.07.08 0 0 7524
Köszönöm stromba, azt a képletet kipróbálom. Nem gondoltam hogy lehet iylet beépített függvénnyel is.
Előzmény: stromba (7519)
Törölt nick Creative Commons License 2008.07.08 0 0 7523
De lehet mankóoszlop nélkül is egyben:


=ÖSSZEFŰZ(HA(ISEVEN(A2)*A2=0;"";A2&";");HA(ISEVEN(A3)*A3=0;"";A3&";");HA(ISEVEN(A4)*A4=0;"";A4&";"))
Előzmény: Laci Laci (7521)
Törölt nick Creative Commons License 2008.07.08 0 0 7522
Pl ha A1-től vannak sorban a számok, akkor b1-be:
=ISEVEN(A1)*A1
C1-be:
=ÖSSZEFŰZ(HA(0=B1;"";B1&",");HA(0=B2;"";B2&",");HA(0=B3;"";B3&",")) stb...
Előzmény: Laci Laci (7521)
Laci Laci Creative Commons License 2008.07.08 0 0 7521
Közben egy következő kérdés,

 

Hogy lehet azt egy függvénnyel megoldani, hogy számok közül mondjuk 1-100- ig számok

 

Bizonyos számok, pl: 7, 38, 4, 23, 78, 12, 26, 7, 34, 56, 29, 61, 48, 36, 82, 49, 69, 36, 73, 46, 59, 23, 47, 41

 

Egy bizonyos kritériumnak megfelelnek-e pl páros-e. Ha igen, akkor mutassa meg az összes ilyen számot, ami ennek a kritériumnak megfelel vesszővel elválasztva, egy cellában.

Laci Laci Creative Commons License 2008.07.08 0 0 7520

Szia József,

 

Köszi válaszodat, még emésztgetem.

Előzmény: Jozsef (7515)
stromba Creative Commons License 2008.07.08 0 0 7519
nem kell vba funkció
http://www.cpearson.com/Excel/TablesAndLookups.aspx "Arbitrary lookup"

ha mégis kell

Function ULookup(Mitkeres As Variant, Holkeres As Range, Oszlop As Variant)

Dim i, x As Long
Dim ErrorValue As String
ErrorValue = "#N/A" 'hibaüzenet ha nincs

x = Holkeres.Rows.Count ' a tablazat osszes sora
If x = 65536 Then x = x - 1 'Excel 2007-ben nem kell

For i = 1 To x + 1 'osszes sor
If Holkeres.Cells(x - i + 1, 1) = Mitkeres Then
ULookup = Holkeres(x - i + 1, Oszlop)
GoTo Vege
Else
End If

Next i

If ULookup <> "" Then ULookup = ErrorValue

Vege:

End Function

syntax: ULookup("érték",A1:C10,3)


Előzmény: Törölt nick (7518)
Törölt nick Creative Commons License 2008.07.07 0 0 7518
Hogy állnátok neki egy olyan függvény megírásának, ami annyiban tér el az FKERES beépített függvénytől, hogy nem a megadott tartomány első sorától keres lefelé, hanem fordítva. (Tehát az utolsó sortól keres felfelé)
?
Or Kán Creative Commons License 2008.07.06 0 0 7517
Még emésztem, de nagyon köszi.

:)
Előzmény: stromba (7516)
stromba Creative Commons License 2008.07.06 0 0 7516

http://www.cpearson.com/excel/vbe.aspx

 

Copy A Module From One Project To Another

Előzmény: ndrv (7512)
Jozsef Creative Commons License 2008.07.06 0 0 7515
Szia!
Hogy lehetne itt megoldani mondjuk 60 eseményre ugyanezt?

Többféleképpen meg lehet oldani. Ha jól értem a feladatot, azt kell megnézni, hogy egy vízszintes tartományban szerepel-e a C46 érték.
1. HOL.VAN függvény
=HOL.VAN(C46;FM45:FQ45;0)
Ha a képlet eredmény nem hibás, akkor megtalálható a tartományban. Mellékhatásként megkapod, hogy hányadik pozícióban található meg először.
2. Tömbképlet
=SZUM((FM45:FQ45=$C$46)*1)
beírás után lezárás Ctrl+Shift+Enter(!!!)
Ha az érték nem 0, akkor megtalálható a tartományban, mellékhatásként megkapod hányszor szerepel az érték.
Midkettő működik számokra, szövegekre is.
Üdv
József
Előzmény: Laci Laci (7514)
Laci Laci Creative Commons License 2008.07.06 0 0 7514
Sziasztok,

 

Kérdésem az lenne, hogy hogy lehetne a VAGY függvényt nem csak 5 esemény vizsgálatára használni, vagyis ,hogy lehetne megoldani, hogy több mint 5 eseményt figyeljen.

 

Például itt egy függvény:

 

=OR(FM45=C46,FN45=C46,FO45=C46,FP45=C46,FQ45=C46)

 

Hogy lehetne itt megoldani mondjuk 60 eseményre ugyanezt?

 

Válaszotokat előre is köszi

 

Laci

Törölt nick Creative Commons License 2008.07.06 0 0 7513
SendKey segítségével talán...
De nem lehet jelszóval védett a VBA projekt
Majd az okosabbak megmondják, bár nem értem, hogy erre miért lehet szükség.
Előzmény: ndrv (7512)
ndrv Creative Commons License 2008.07.05 0 0 7512
Sziasztok!

Azt szeretném megkérdezni, hogy modul lapot lehet-e copy-zni makróból, valamilyen visual basic utasítással?
Mad árka Creative Commons License 2008.07.05 0 0 7511
Virtuális sörvendégem vagy, köszönöm.
Előzmény: Sánta Kutya (SK) (7510)
Sánta Kutya (SK) Creative Commons License 2008.07.05 0 0 7510
F2
Előzmény: Mad árka (7509)
Mad árka Creative Commons License 2008.07.05 0 0 7509
Nagyon köszönöm! Megmentettél a munka közbeni méteres szakáll kinövésétől. :)

-

Még egy kérdésem volna. Amikor rámegyek egy mezőre, amelyben már van szöveg (pl. "alma"), hogyan tudom egér nélkül megoldani, hogy beleírhassak (pl. "alma és körte") anélkül, hogy az eredeti szöveg átíródjék? (A cél az volna, hogy az egérhez való kapkodás nélkül írhassak.)
Előzmény: Sánta Kutya (SK) (7508)
Sánta Kutya (SK) Creative Commons License 2008.07.05 0 0 7508
másolás
szerkesztés/irányított beillesztés
transzponálás
Előzmény: Mad árka (7507)
Mad árka Creative Commons License 2008.07.05 0 0 7507
Sziasztok! Szerkesztési kérdésem volna. Van egy sornyi adatom, minden cellában egy szó. Szeretném ezeket oszlopba rendezni (hogy abc-rendbe tudjam tenni). Megoldható ez valahogy Excelben? Az adatrendezés funkciót ismerem, csak azt szeretném, hogy a sorból oszlop keletkezzen.

Köszönöm.
magyarpityu Creative Commons License 2008.07.04 0 0 7506

Sziasztok! Tanácsot szeretnék kérni! Egy form-on ListBox kombinált listát használok MultiSelect = fmMultiSelectMulti tulajdonsággal, azaz bármelyik listaelem ki-be kapcsolható. Igazából nekem három állapotú listaelemek kellenének, tehát nem elég az igen-nem opció, hanem ezekhez egy harmadik lehetőség is jó lenne. Ezt milyen elemekkel lehet megoldani, ezetleg a ListBox valamilyen beállításával tudja ezt? Vagy például a listaelem előtti jelölőnégyzet (ListStyle = fmListStyleOption esetén) nemcsak üres vagy kipipált lenne, hanem mondjuk egy a windows-ból ismert szürke állapota is lenne.

 

Arról van szó, hogy a lista minden tagja egy-egy további al-listát tartalmaz, és ezeknek az elemeknek a csoportos kinyomtatását szeretném makrózni. Az igen-nem állapot jelenti, hogy a listaelemhez tartozó al-lista minden eleme ki lesz-e nyomtatva, vagy egyik sem. Viszont ha egy listaelem al-listájának nem kell minden elemét nyomtatni, akkor nem szeretnék sem igen, sem nem opciót kiadni, akkor lenne ez a harmadik állapot és a nyomtatást nem a csoportos nyomtatás beállítása határozná meg, hanem az al-listákban a minden elemre egyedileg beállított érték lenne érvényes. A makró egyébként csak az al-listák nyomtatási beállításait adja meg, így nem kell a felhasználónak (nekem) szűrögetni és listánként egyesével beállítgatni az értékeket, csak ráküldöm a makrót, bejelölöm az engem érdeklő elemeket és szevasz. De nem feltétlenül kell mindig az összes listaelemre elvégezni ezt a beállítást, a harmadik opció jelentené, hogy hagyjuk változatlanul a listához tartozó al-lista beállításait.

 

Bocsánat, a gyakorlatban ez sokkal egyszerűbb, mint ahogy most megpróbáltam elmondani a bánatomat...

lambo83 Creative Commons License 2008.07.04 0 0 7505

ÓÓÓÓ, ez jóóó!

Thank you! Igazából először nem akartam listát csinálni, mert az egyébként megy, de az a megoldás nem tetszett, ez jó! Köszönöm!

I LOVE EXCEL!

Előzmény: magyarpityu (7504)
magyarpityu Creative Commons License 2008.07.04 0 0 7504
Van olyan, hogy Adatok/Érvényesítés... ablak Beállítások fül Megengedve listából a "Lista" opciót választva megadható, hogy az adott cellába milyen értékek kerülhetnek. Ekkor a cellába kattintva lesz egy lenyíló ablak a választható szövegekkel. Az is beállítható, mi legyen, ha a listában nem szereplő szöveget írsz a cellába.
Előzmény: lambo83 (7502)
lambo83 Creative Commons License 2008.07.04 0 0 7503

Jahhh! Ha már itt vagyok, még egy jó feladat!

 

 

Szóval! Oylan kellene mint az FKERES, csak úgy, hogy ne egy cella legyen képletre, hanem mondjuk egy oszlop, illetve abban adott sor és ne csak az első eredményt adja meg, mint az FKERES, hanem ahány egyezőt talál annyi sorba rakja ki a lehetőségeket. Vagy ezt tudja valahogy FKERES? Mert mondjuk úgy megoldhatták volna a készítők, hogy  "HAMIS" helyett mondjuk azt írom be, hogy 2 és akkor ez azt jelentené, hogy a 2. találat és így tovább. Vagy van erre másik függvény?

lambo83 Creative Commons License 2008.07.04 0 0 7502

Sziasztok!

 

 

Igazából eléggé benne vagyok egy nagy feladatban excelben, és eléggé elmerültem már benne, de egy olyan dolgon akadtam fenn, ami lehet hogy tök alap. Szóval annyi lenne a kérdésem, hogy megoldható-e, hogy egy cellába íráskor feldobjon lehetőségeket. SZóval mondjuk úgy mint, amikor egymás alatti cellákba írsz és amit egyszer már írtál azt feldobja "enterezésre". Ugyanez kellene csak úgy, hogy a lista egy másik munkalapban van. ????????????? Lehetséges?????????

 

Kőőőőőőőőőőőőőszi

Master of Amateurs :) Creative Commons License 2008.07.04 0 0 7501
Én is köszönöm!
magyarpityu Creative Commons License 2008.07.04 0 0 7500

Köszönöm! :))

Előzmény: Törölt nick (7499)
Törölt nick Creative Commons License 2008.07.04 0 0 7499
Talán más különbség is van, de annyi mindenképpen, hogy ha VeryHidden, akkor menüből (Formátum->Lap->Felfedés) nem tudod láthatóvá tenni. Ha csak Hidden, akkor igen.
Előzmény: magyarpityu (7497)
Törölt nick Creative Commons License 2008.07.04 0 0 7498
Töltsd le ezt, és nézd meg vele, hátha valahogy bekerült az automatikusan induló dolgok közé.
Előzmény: Master of Amateurs :) (7496)
magyarpityu Creative Commons License 2008.07.04 0 0 7497
Sziasztok! A munkalap objektum (Worksheet) Visible tulajdonsága lehet xlSheetVisible, xlSheetHidden, xlSheetVeryHidden. Mi a különbség az utóbbi kettő között?
Master of Amateurs :) Creative Commons License 2008.07.03 0 0 7496
Szerintetek mitől van az, ha lezárom a számítógépem, és utána bejelentkezem, megnyílik a Visual Basic Editor. Nem tudom mihez kötni a dolgot, mert akkor is szokta csinálni, ha semmilyen Office dokumentum nincs megnyitva. Furcsa és idegesítő jelenség.
Master of Amateurs :) Creative Commons License 2008.07.01 0 0 7495

Ezzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz.. :)

NAGYON SZÉPEN KÖSZÖNÖM az ismételt segítséget!

Törölt nick Creative Commons License 2008.07.01 0 0 7494
Futtasd ezt azon a lapon, ahol a címek vannak felsorolva.


Sub teszt()
Dim Rng As Range, cel As Range, sEMail As String
Set Rng = Range("A1", Range("A" & Rows.Count).End(xlUp))
For Each cel In Rng
With cel
sEMail = .Offset(, 4)
If InStr(sEMail, ";") > 0 Then
.Offset(1).EntireRow.Insert
.EntireRow.Copy .Offset(1)
.Offset(, 4) = Trim(Left(sEMail, InStr(sEMail, ";") - 1))
.Offset(1, 4) = Trim(Mid(sEMail, InStr(sEMail, ";") + 1))
End If
End With
Next
End Sub
Előzmény: Master of Amateurs :) (7493)
Master of Amateurs :) Creative Commons License 2008.07.01 0 0 7493

Újabb kérdéssel fordulok hozzátok, mellyel lehet, hogy feladom a leckét :)

 

Excel adatbázisból rendszeresen készítek Word körlevelet, mellyel a következő problémám van:

 

pl.

"A" oszlop tartalmazza a nevet

"B" oszop tartalmazza az életkort

"C" oszop tartalmazza az átlagkeresetet

"D" oszop tartalmazza a gyermekek számát

"E" oszlopba FKERES-sel bemásolom a nevek alapján az e-mail címeket

 

Azokat a rekordokat, ahol több cím szerepel, annyiszorosan kell többszöröznöm, ahány cím tartozik a névhez. Ezután manuálisan kitörölgetem a felesleges címeket, úgy, hogy az "E" oszlop celláiban csak egy cím szerepeljen (mindegyikből lesz).

Az e-mail címek alapból "; " -l vannak elválasztva.

 

Gyakorlatban:

ALAPBÓL:

"A"

Karcsika

"B"

20

"C"

70000

"D"

0

"E"

karcsika@karoly.hu; karesz@karoly.hu

 

UTÁNA:

"A"

Karcsika

"B"

20

"C"

70000

"D"

0

"E"

karcsika@karoly.hu

 

"A"

Karcsika

"B"

20

"C"

70000

"D"

0

"E"

karesz@karoly.hu

 

Azért ilyen kínlódós, mert a Word nem ismeri fel a címzettet, ha a forrás egy cellájában több cím szerepel.

 

Ennek a leegyszerűsítésére van valami ötletetek?

SEGÍTSETEK PLS, mert már megbolondulok, (kb.:napi 80 rekorddal kell eljátszanom ezt)!

Köszönöm!

Master of Amateurs :) Creative Commons License 2008.06.30 0 0 7492
Köszi, Stromba! :)
Andris_2 Creative Commons License 2008.06.29 0 0 7491
Ez az!!! Nagyon köszönöm!
Előzmény: Törölt nick (7490)
Törölt nick Creative Commons License 2008.06.29 0 0 7490
INDIREKT()
?
Előzmény: Andris_2 (7488)
xbatomi Creative Commons License 2008.06.29 0 0 7489
Bocsi csak ki akarom próbálni, hogy Így is működik e ez a link a fórumban.

Andris_2 Creative Commons License 2008.06.29 0 0 7488

Sziasztok,

 

egy kis segítségre lenne szükségem egy hozzáértőtől!

 

Egy tartományban szereplő maximum értéket szeretnék megkeresni a MAX() függvénnyel, de a tartomány az nem egy fix tartomány hanem időnként változik.

 

Odaáig megvagyok, hogy a tartomány egy cella tartalmazza szövegként (pl: $B$1:$B$9) de ezt nem tudom megadni a MAX függvény argumentumaként, mivel nem találtam olyan függvényt, ami a szöveget tartományra való hivatkozássá alakítaná át.

 

Ha pl. a B21 -es cellám szöveges tartalma ez a bizonyos $B$1:$B$9, akkor a MAX(B21) függvény nem a kívánt értékket, hanem 0-át ad eredményül.

 

 

Meg tudná esetleg valaki mondani, hogy hogyan kell ezt a tartományt a MAX() függvénynek megadni, úgy hogy működjön a dolog?

 

Előre is köszi!

 

stromba Creative Commons License 2008.06.28 0 0 7487

Ha jól értem, akkor vba könyvre van szükséged.

 

3 angol nyelvű excel könyv:

http://rapidshare.com/files/125559266/Excel.rar    pwd:stromba

 

magyarul:

http://www.libri.hu/hu/book/computer_informatika/programozas/az_excel_programozasa

Előzmény: Master of Amateurs :) (7476)
magyarpityu Creative Commons License 2008.06.27 0 0 7486
Ez fantasztikus! Már kézzel végigpötyögtettem egyenként a sorokat, de most kipróbáltam, és tényleg :))) Köszi szépen! Mi mindent lehet tőletek tanulni...
Előzmény: Törölt nick (7485)
Törölt nick Creative Commons License 2008.06.27 0 0 7485
Hát az látszik, hogy félreértettem a kérdést :)
Hanem a ciklusmag utasításait egyszerre is beljebb "lökdösheted".
Kijelölöd az összes érintett sort, és TAB.
Ugyanez kifelé: kijelölöd az összes érintett sort, és Shift+TAB.
Előzmény: magyarpityu (7484)
magyarpityu Creative Commons License 2008.06.27 0 0 7484

Hali! Sajnos jobb híján marad a goto használata. Nagyjából erről van szó:

 

Name = List.Cells(Index, 2)

While Len(Name) > 0

   if UCase(List.Cells(Index, 15)) = "NO" Then GoTo ciklus_vege

 

   'itt jön a ciklusmag

   'sok-sok utasítás, számítások, formázások, stb

 

ciklus_vege:

   Index = Index + 1

   Name = List.Cells(Index, 2)

Wend

 

A GoTo ciklus_vege helyett szerettem volna valami elegánsabb megoldást találni. Esetleg ez lenne jó:

 

While Len(Name) > 0

   if Not (UCase(List.Cells(Index, 15)) = "NO") Then

 

      'itt jön a ciklusmag

      'sok-sok utasítás, számítások, formázások, stb

 

   End if

   Index = Index + 1

   Name = List.Cells(Index, 2)

Wend

 

De lusta vagyok a ciklusmag utasításokat beljebb lökdösni :)))

Előzmény: Törölt nick (7480)
magyarpityu Creative Commons License 2008.06.27 0 0 7483
Köszi szépen, már be is építettem a helyére :))
Előzmény: Törölt nick (7479)
Törölt nick Creative Commons License 2008.06.27 0 0 7482
Hm... második ránézésre lehet, hogy hülyeséget írtam...
De talán ad ötletet.
Előzmény: Törölt nick (7480)
Delila_1 Creative Commons License 2008.06.27 0 0 7481

Rákattintasz az adatsorra, majd arra a szakaszra, amelyiknek a színét meg akarod változtatni. Jobb klikk, adatpont formázása.

 

A két kattintás között hagyj egy kis szünetet, másképp duplaklikknek értelmezi az Excel.

Előzmény: mattila07 (7477)
Törölt nick Creative Commons License 2008.06.27 0 0 7480
Milyen ciklust használsz? For...Next vagy Do...Loop?
For..Next ciklusban pl.

For i=1 to 100
'kód
If UCase(cellatartalom) = "NO" Then I=100
'kód
Next

Do...Loop ciklusban pedig

Dim Continue As Boolean
Continue = True
Do While Continue = True
'kód
If UCase(cellatartalom) = "NO" Then Continue = False
'kód
Loop

Előzmény: magyarpityu (7478)
Törölt nick Creative Commons License 2008.06.27 0 0 7479

 

Nagybestűre pl. így:

 

For i = 1 To 10
   Cells(i, 5) = UCase(Cells(i, 5))
Next

Előzmény: magyarpityu (7478)
magyarpityu Creative Commons License 2008.06.27 0 0 7478

Sziasztok! Egy problémám van, de az két kérdést generált :)) ebben kérek segítséget.

 

1. Hogyan lehet makróból egy cella tartalmát csupa nagybetűssé átalakítani? A makró végigfutja a táblázatot és a vizsgát oszlopból az aktuális sornak megfelelő elem tartalmát kiolvassa, majd azt összehasonlítja a "no" szöveggel. Azám, de ha a cellában "No" vagy "NO" szerepelt, akkor már nem lát egyezést. Tehát a cellát nagybetűssé kellene konvertálni (nem kell megőrizni ezt a szöveget) és ezt a "NO" szöveggel összehasonlítva máris nem számít az eredeti szöveg kis- vagy nagybetűs típusa.

 

2. Egy izmosabb ciklusban a ciklus elején egy ellenőrzést végzek, és ha az előbb "no" értékket találtam, akkor nem fut le a ciklusmag, hanem következik az újabb iteráció. A C vagy Java programnyelvekben erre használják a continue utasítást, de vajon ennek van megfelelője az Excel makrónyelvben? Jó lenne elkerülni a goto utasítást és nem akarok (ha nem muszáj) újabb if-else elágazást (már így is sokszorosan egymásba ágyazott utasításhalmaz van a ciklusban).

mattila07 Creative Commons License 2008.06.27 0 0 7477

Hi all!

Van egy vonal diagrammom, hogy lehet azt megcsinálni hogy a felmenő vonal kék színű a lefelé menő vonal piros színű legyen!?

Master of Amateurs :) Creative Commons License 2008.06.26 0 0 7476

Sziasztok!

 

 Ha van valamelyikőtöknek van egy leírása, listája hogy melyik application mit csinál,

 legyen kedves elküldeni nekem mail-en (m.o.a@freemail.hu), mert eddig autodidakta

 módon tanultam (kb 1 hónapja :)) a makróim felturbózását, de megakadtam, mert

 egynéhány alkalmazása nagyon vészjóslónak/veszélyesnek. Nem szeretném kinyírni

 a rendszerem + szeretném, ha fellendülne egy kicsit a tanulásom tempója.

 

 Fentiek fényében kérlek Titeket, hogy legyetek kedvesek általatok hasznosnak vélt

 anyagokat küldeni az e-mailemre, hogy én is mielőbb közétek kerülhessek (mint

 segítő, nem elsősorban segítségkérő).

 

 Előre is köszönöm a "tudattágításom" megsegítését :D!!!

 

Törölt nick Creative Commons License 2008.06.26 0 0 7475
Készítettem egy pivottáblát. Vannak benne üres sorok, és ezeket kell eltüntetnem, de nem tudom hogyan.
Első oszlopában szállítók vannak, ezek mellet 3-3 pénznem. Viszont szállítónként nincs használva mindegyik pénznem, ezért azok a sorok üresen maradnak, és ezeket kell eltüntetnem.
Tudtok segíteni ebben?
Laci Laci Creative Commons License 2008.06.24 0 0 7474

Szia József!

 

Köszi a válaszod, nagyon hasznos volt.

Előzmény: Jozsef (7460)
Törölt nick Creative Commons License 2008.06.24 0 0 7473
Legegyszerűbb: F2; F9; ENTER
Előzmény: Laci Laci (7459)
Master of Amateurs :) Creative Commons License 2008.06.24 0 0 7472
JIMMY THE HAND: KÖSZÖNÖM SZÉPEN! :)
magyarpityu Creative Commons License 2008.06.24 0 0 7471
Az igazi persze az lesz, ha megtanulok olyan progit írni, ami kommunikál az Excel-lel. Mert sok oka lehet, ha nem nyitható meg az eredmény-file, mondjuk ha a progi nem állította elő, de ezt a progi tudja, csak valahogy az Excel-nek meg kellene mondania :))
Előzmény: Törölt nick (7470)
Törölt nick Creative Commons License 2008.06.24 0 0 7470
"valamennyi idő el kell teljen, míg a kilépett program "elengedi" az eredményfile-t, nem lehet azonnal hozzáférni"

Szerintem ezt is le lehet tesztelni ugyanazzal a módszerrel:

Do
megnyitom az eredményfájlt
Loop While Err.Number > 0
Előzmény: magyarpityu (7469)
magyarpityu Creative Commons License 2008.06.24 0 0 7469

Igazad van, nem kell! Viszont rájöttem, miért is vetettem el, hogy rögtön beolvassam az eredményeket :) mégiscsak kell felhasználói beavatkozás (valamennyi idő el kell teljen, míg a kilépett program "elengedi" az eredményfile-t, nem lehet azonnal hozzáférni). Tehát:

 

Do
   AppActivate ProcessID
Loop Until Err.Number > 0

 

If MsgBox(ResFileName & " beolvasása?", vbYesNo + vbQuestion) = vbYes Then
   InsertTxtFile ResFileName
End If

Előzmény: Törölt nick (7468)
Törölt nick Creative Commons License 2008.06.24 0 0 7468
"AppActivate ActiveWorkbook.Name"

Ez kell oda?
Előzmény: magyarpityu (7467)
magyarpityu Creative Commons License 2008.06.24 0 0 7467

Illetve dehogynem :)) Nem is kell felhasználói beavatkozás, csak váltogatom a task-okat és egyszer csak, mikor lefutott a progi, megszűnik a PID-je és kész is vagyunk:

 

Do
   AppActivate ActiveWorkbook.Name
   AppActivate ProcessID
Loop Until Err.Number > 0

 

InsertTxtFile ResFileName

Előzmény: magyarpityu (7466)
magyarpityu Creative Commons License 2008.06.24 0 0 7466

Igen :)) Útnak indítom Loads.exe progit a Shell paranccsal, majd kiírok egy MsgBox üzenetet, hogy elindult a program, akarom-e az eredményeket behúzni a munkalapra? (Hiba esetén a hibaüzenetet írom ki.) Ha a user az igen-re kattint, akkor megnézi a makró, hogy a PID él-e még, ha igen, akkor újra kidobja az üzenetet. Ha már lefutott a progi, akkor nem él már a PID, hibakód jelenik meg az Err változóban, ez lesz a ciklusból a kilépési feltétel. Ha tehát a progi lefutott, akkor ki lehet lépni az MsgBox üzenetből, de amíg fut a progi, azaz érvényes a PID, addig nem tudunk tovább lépni. A makró végén az InsertTxtFile egy másik makró, ami formázásokkal beolvassa a Loads.exe progi által generált Results.txt file-t. Kicsit fapados, de nekem jó, nem kell kívülről indítani Loads.exe-t és nem kell külön beolvasni-formázni az eredményeket. Az igazi az lett volna, ha a makró észre tudná venni, mikor futott le az elindított progi és utána rögtön behúzná az eredményeket.

 

 

Sub Futtat()

 

On Error Resume Next

 

Const ExeName As String = "Loads.exe"
Const ListTxt As String = "List.txt"
Const ResultsTxt As String = "Results.txt"

 

Dim DirName As String, CommandLine As String
DirName = ActiveWorkbook.Path & "\"
CommandLine = DirName & ExeName & " " & DirName & ListTxt & " " & ResultsTxt

 

Dim ProcessID As Double
ProcessID = Shell(CommandLine, vbNormalNoFocus)

 

If Err.Number > 0 Then
   MsgBox Chr(34) & ExeName & Chr(34) & " nem futtatható!" & Chr(10) & _
      "Hiba: " & Err.Description, vbExclamation
   Exit Sub
End If

 

Dim InsertResFile As Variant, ResFileName As String
ResFileName = DirName & ResultsTxt

 

Do
   AppActivate ActiveWorkbook.Name
   InsertResFile = MsgBox("Elindított program:" & Chr(10) & CommandLine & _
      Chr(10) & "Adatok beolvasása " & Chr(34) & ResultsTxt & Chr(34) & _
      " file-ból?", vbYesNo + vbInformation)
   AppActivate ProcessID
Loop Until Err.Number > 0

 

If InsertResFile = vbYes Then InsertTxtFile ResFileName

 

End Sub

Előzmény: Törölt nick (7465)
Törölt nick Creative Commons License 2008.06.24 0 0 7465
Hát igen, kérdezni lehet :)
De pl. a "A külső program mikor fejeződik be" kérdésedre (hacsak el nem néztem valamit) nem tudott senki válaszolni...
Megoldottad valahogy?
Előzmény: magyarpityu (7464)
magyarpityu Creative Commons License 2008.06.24 0 0 7464
Köszi szépen! Szuper, hogy bármi gubanc van, itt lehet kérdezni :)))
Előzmény: Törölt nick (7463)
Törölt nick Creative Commons License 2008.06.23 0 0 7463
Application.EnableEvents = True/False
Előzmény: magyarpityu (7462)
magyarpityu Creative Commons License 2008.06.23 0 0 7462
Sziasztok! Mikor egy eseménykezelőben (mondjuk a Worksheet_Change-ben) a Target tartomány valamelyik elemét megváltoztatom, akkor az eseménykezelő újra meghívódik és végtelen ciklusba csavarodik. Mit tehetnék, hogy ezt elkerüljem? Mondjuk egy esemény kiváltódásakor a kezelő elején tiltanám a további ilyen típusú esemény kiváltódását, kezelném az eseményt, majd ismét engedélyezném ezt az eseményt. Hogyan lehet tiltani és engedélyezni az események kiváltódását? Köszi előre is a segítséget!
Törölt nick Creative Commons License 2008.06.23 0 0 7461
1) A törlés előtti figyelmeztetés kikapcsolása:

Application.DisplayAlerts = False
Sheets("nyers").Delete
Application.DisplayAlerts = True

tudniillik, ha kikapcsolva hagyod a figyelmeztetéseket, az az összes effélére vonatkozik, ami nem biztos, hogy jó. Másrészt a lap törlése nem igényli, hogy előtte kiválaszd egy Select utasítással.

2) A nyomtatási nézet bezárására nem ismerek lehetőséget a "Bezár" gombon kívül. Ez talán még változhat, de ha találok is valamit, az valószínűleg elég trükkös lesz, mivel úgy tűnik, hogy a kód futása szünetel addig, amíg a munkalap PrintPreview állapotban van.

3) If Sheets("Munka3").Range("B2") = "" Then Sheets("Munka3").Delete
Előzmény: Master of Amateurs :) (7457)
Jozsef Creative Commons License 2008.06.23 0 0 7460
Pl sum ettől eddig, adott eredményként egy számot, de ezzel konstans számként akarok tovább dolgozni.

Először kijelölöd a tartományt, Szerkesztés/Másolás, majd ugyanarra a tartományra Szerkesztés/Irányított beillesztés Értéket. Ezt könnyen le is lehet makrózni, ha többször kell.
Előzmény: Laci Laci (7459)
Laci Laci Creative Commons License 2008.06.23 0 0 7459

Sziasztok!

 

Tudtok arra a problémára esetleg megoldást, ha van rengeteg számom és ezek függvények eredményei, hogy lehet azt megoldani, hogy ezeket konstans számokká alakítsuk.

 

Pl sum ettől eddig, adott eredményként egy számot, de ezzel konstans számként akarok tovább dolgozni.

 

Ezt idáig úgy oldottam meg, hogy kimásoltam excelből, áttettem Wordbe, aztán vissza excelbe, de ez nagyon sokáig tart, mire a gép végrehajtja. Meg az én gépemnél még sokszor azt is kiírja, hogy nincs elég memória.

 

Köszi

 

Laci

Master of Amateurs :) Creative Commons License 2008.06.23 0 0 7458

Van még egy probléma, amit kifelejtettem:

 

Azt hogyan lehet megadni, hogy ha pl a Munka3-as munkalapon a B2-es cella üres, akkor törölje a munkalapot?

 

Előre köszönöm ezt is! :)))

Master of Amateurs :) Creative Commons License 2008.06.23 0 0 7457

Sziasztok!

 

 Van egy problémám, mellyel kapcsolatban a segítségeteket kérem:

 

 Csináltam egy makrót, aminek a futása vége felé van egy munkalap törlése parancs,

    Sheets("nyers").Select

    ActiveWindow.SelectedSheets.Delete

 ami után megjelenik a szokásos "A munkalapon adatok lehetnek...bla-bla Biztos, hogy

 törli?"

 Hogyan lehet kikapcsolni az Excel éberségét, hogy ne kérdezzen rá ilyenekre?

 (esetleg milyen más törlési paranccsal lehet egyből törölni?)

 Egy amerikai fórumon találtam valamit, de a Visual Basic Editorom nem tud vele mit

 kezdeni:

 oExcel = New Excel.Application
 oExcel.DisplayAlerts = False

 

 Másik problémám a Nyomtatási nézet bezárása (bár azt megoldottam a

 Fájl/Oldalbeállítás menüpontjával). Ha valaki esetleg erre is tud gyógyírt,

 megköszönném. :)

 

Segítségeteket előre is köszönöm!

Jozsef Creative Commons License 2008.06.23 0 0 7456
Mondjuk a január, február, március adathoz tartozó értékek egymás mellett, de aztán a november december pedig a grafikon végén, és mindezt arányosan, ahogy a egyébként a 12 hónap követi egymást, anélkül, hogy fel kellenne töltenem ezeket a kimaradó értékpárokat. De pl 200 értékpár esetén még drámaibb a helyzet.

Nagyon egyszerű a megoldás: X tengely adatai dátum típusú adatok legyenek. Megjelenésüket pedig formázással állíts be a kívánt formátumra (pl. csak a hónap jelenjen meg)
Előzmény: NeomatiK (7455)
NeomatiK Creative Commons License 2008.06.23 0 0 7455
Ez rendben is van, de úgy gondoltam, lehet ennyire felhasználóbarát ez a program :) De nem az. A grafikonjaival sem vagyok kibékülve. Hogyan lehet azt megcsinálni, hogy pl 5 adatpár esetén a vízszintes tengelyre kerüljön a dátum, de azok nem egymást követik, hanem arányosan kéne eloszlania. Mondjuk a január, február, március adathoz tartozó értékek egymás mellett, de aztán a november december pedig a grafikon végén, és mindezt arányosan, ahogy a egyébként a 12 hónap követi egymást, anélkül, hogy fel kellenne töltenem ezeket a kimaradó értékpárokat. De pl 200 értékpár esetén még drámaibb a helyzet.
Előzmény: Jozsef (7454)
Jozsef Creative Commons License 2008.06.23 0 0 7454
1. A szögmérés hivatalos SI mértékegysége a radián. Definió szerint a (ív)hosszmérésből származtatjuk. A fok az atmosztféra, lóerő stb. közkedvelt, de nem hivatalos egységekkel van egy kategóriában. Ezért van külön RADIÁN ill. FOK függvény az oda-visszaváltásra.

2. A számítástechnikában (az összes általam ismert) programnyelven a trigonometrikus függvények radiánnal számolnak. Ennek az az oka, hogy a sin, cos függvényt igen barátságosan sorba lehet fejteni (Taylor-polinom), amit után egyszerűen lehet kiszámítani, ha a szög radiánban van. Egyébként így számol a számológép is belül.

3. A számológép is csak akkor számol fokkal, ha meg mondod neki (DEC-RAD-GRAD váltás) :)
Előzmény: NeomatiK (7453)
NeomatiK Creative Commons License 2008.06.23 0 0 7453

Nabasszákmeg!! Nem bírtak volna fokra is csinálni függvényt? A számológép is alapból fokból számolja, nem radiánból.

 

Köszi a segítséget! ;-)

Előzmény: Jozsef (7452)
Jozsef Creative Commons License 2008.06.23 0 0 7452
Az Excel trigonometrikus függvényei radiánba számolnak, így a 30 fokot át kell váltani radiánba, vagy a RADIÁN függvénnyeé vagy a alfa/180*PI() (pl 30 fok=PI()/6)
Üdv
József
Előzmény: NeomatiK (7451)
NeomatiK Creative Commons License 2008.06.23 0 0 7451

Sziasztok, van egy képlet, ami nem akar sikerülni excelben.

 

M = r ( 1 + x - cosa - (x2 - sin2a)1/2)

 

és így írtam be excelbe:

 

=R*(1+X-COS(A)-((X^2)-(SIN(A))^2)^0,5)

 


az R, A, X egy cellára mutat, csak ide most igy írtam le.

 

Teljesen barom eredményt ad ki :( Valaki tudna segítenei, mert mindjárt megőrülök! :D Köszi!

 

Pl ha R=100, X = 1, A = 30° , akkor helyesen 26,7949-nek kéne kijönni

 

excel pedig 169,150-et dobott ki.

magyarpityu Creative Commons License 2008.06.23 0 0 7450

Jimmy the Hand és Robbantómester! Köszi a segítséget!

Előzmény: Törölt nick (7449)
Törölt nick Creative Commons License 2008.06.22 0 0 7449
jelöld ki az összes cellát.
ctrl+1
védelem fül.
pipákat kiszedni.
eszközök/védelem/lapvédelem...
jelölj be mindent, kivéve oszlopok törlése, sorok törlése
OK

és a cellák szerkeszthetőek maradnak.
itt tanultam vkitől.
Előzmény: magyarpityu (7445)
Delila_1 Creative Commons License 2008.06.22 0 0 7448
Szívesen, én is tanultam belőle.
Előzmény: Laci Laci (7447)
Laci Laci Creative Commons License 2008.06.21 0 0 7447
Köszi a segitséget Delila1 and Jimmy!
Előzmény: Delila_1 (7440)
Törölt nick Creative Commons License 2008.06.20 0 0 7446
Ez itt szerintem elég innovatív :)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If (Target.Address = Target.EntireRow.Address) Or (Target.Address = Target.EntireColumn.Address) Then
Me.Protect
Else
Me.Unprotect
End If
End Sub

Ez meg letiltja a környezeti menüt (ami jobb gombra feljön a munkalapon) :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
End Sub

Azt viszont, hogy ha egy cellán állva a user menüből Szerkesztés/Törlés parancsot választ, majd a felugró panelon az egész sor ill. oszlop törlését választja, nos azt nem tudom, hogy lehet kiküszöbölni.

Előzmény: magyarpityu (7445)
magyarpityu Creative Commons License 2008.06.20 0 0 7445
Sziasztok! Egy jó ötletet szeretnék kérni :)) Azt szeretném, hogy egy munkalapnál ne lehessen törölni sorokat vagy oszlopokat. A zárolás nem jó, mert a cellák értékét tudni kell módosítani.
Törölt nick Creative Commons License 2008.06.20 0 0 7444
Mi a kódod?
Előzmény: Gavriel (7443)
Törölt nick Creative Commons License 2008.06.20 0 0 7442
Majdnem az összes munkalapfüggvényt használhatod VB-ben is:

Application.WorksheetFunction.SumIf(paraméterek)
ugyanúgy kell paraméterezni, mint ha munkalapon használnád.
Előzmény: Gavriel (7441)
Delila_1 Creative Commons License 2008.06.20 0 0 7440

Köszönöm a kisegítést, Jimmy.

 

Sub rendez_vizszint()
    usor = ActiveSheet.UsedRange.Rows.Count
    For sor = 1 To usor
        Rows(sor).Select
        Selection.Sort Key1:=Cells(sor, 1), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight
    Next
End Sub

Előzmény: Törölt nick (7439)
Törölt nick Creative Commons License 2008.06.19 0 0 7439
A Sort utasítás Orientation nevű paramétere a kulcs.
Előzmény: Delila_1 (7438)
Delila_1 Creative Commons License 2008.06.19 0 0 7438
Az előző arra a pár adatra volt csak igaz, amire kipróbáltam. Holnap jobban utána nézek, ha közben nem oldódik meg a vízszintes rendezés.
Előzmény: Delila_1 (7437)
Delila_1 Creative Commons License 2008.06.19 0 0 7437

Ez egy kicsit lassúbb művelet lesz, ha sok adatod van.

 

Sub rendez_vizszint()
    uoszlop = ActiveSheet.UsedRange.Columns.Count
    usor = ActiveSheet.UsedRange.Rows.Count
    For sor = 1 To usor
        For oszlop = 1 To uoszlop
            a = Cells(sor, oszlop)
            b = Cells(sor, oszlop + 1)
            If a > b Then
                Cells(sor, oszlop) = b
                Cells(sor, oszlop + 1) = a
            End If
        Next
        Cells(sor, uoszlop).Select
        Selection.Delete Shift:=xlToLeft
    Next
End Sub

Előzmény: Laci Laci (7436)
Laci Laci Creative Commons License 2008.06.19 0 0 7436

Delila

 

Ha meg tudnád ugyanezt írni sorokra az lenne a legjobb.

Előzmény: Delila_1 (7434)
Laci Laci Creative Commons License 2008.06.19 0 0 7435

Köszi Delila1

 

isteni vagy.

Előzmény: Delila_1 (7434)
Delila_1 Creative Commons License 2008.06.19 0 0 7434

Ez a kis makró végigszalad az oszlopaidon, és mindegyiket emelkező sorrendbe rakja, egymástól függetlenül.

 

Sub rendez()
    uoszlop = ActiveSheet.UsedRange.Columns.Count
    For oszlop = 1 To uoszlop
        Columns(oszlop).Select
        Selection.Sort Key1:=Cells(1, oszlop), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    Next
End Sub

Előzmény: Laci Laci (7431)
Laci Laci Creative Commons License 2008.06.18 0 0 7433

Szia Jimmy

 

Nem lehetne erre is egy makrót írni, mint a multkor. Egyébként a makró amit a multkor írtál az majdnem jó lenne, hisz ott is emelkedő sorrendbe kellett rakni számokat. Most viszont nem kellene az azonosítás, tehát adott számhoz nem kellene hozzárendelni másikat.

 

Egyszerüen pl arra a számblokkra alkalmani azt, hogy az ott lévő számokat emelkedő sorrendbe rakja.

 

Köszi

 

Laci

Előzmény: Törölt nick (7432)
Törölt nick Creative Commons License 2008.06.18 0 0 7432
A sorbarendezésnek az a lényege, hogy egy (vagy több) kulcs-mező alapján rendezi az összes többit is. Ahhoz, amit te akarsz, (legjobb tudásom szerint) az összes oszlopra egyenként kell kiadni a sorbarendezés parancsot.
Előzmény: Laci Laci (7431)
Laci Laci Creative Commons License 2008.06.18 0 0 7431

Szia Delila1

 

Megnéztem, amit írtál, de sajna nem működik. Az igaz, hogy nem csak az első oszlopot rendezi át, de az nem igaz, hogy mindet emelkedő sorrendbe rakja.

 

Mindet átrendezi, de továbbra is csak az első oszlopot rakja emelkedő sorrendbe a többit szerintem az első szerint rendezi. 

 

Nekem az kellene, hogy minden oszlop emelkedő sorrendben legyen

 

válaszotokat előre is köszi

 

Laci 

Előzmény: Delila_1 (7419)
nuq5let Creative Commons License 2008.06.18 0 0 7430
Köszönöm
Előzmény: Törölt nick (7428)
Delila_1 Creative Commons License 2008.06.17 0 0 7429
Kösz, Jimmy.
Előzmény: Törölt nick (7426)
Törölt nick Creative Commons License 2008.06.17 0 0 7428
Forrásfájl.Saved = True
Application.CutCopyMode = False

Előzmény: nuq5let (7427)
nuq5let Creative Commons License 2008.06.17 0 0 7427
Sziasztok!

 

Abban kérném segítségeteket, hogy hogyan tudom megoldani az alábbi problémát

Különböző excel fájlok között másolok át adatokat és nem tudom megoldani, hogy a forrás fájl bezárásakor ne kérdezzen rá az excel a mentésre, és a vágolap ürítésre hanem simán -mentés nélkül- csukja be a fájlt.

Előre is köszi a segítséget

Törölt nick Creative Commons License 2008.06.17 0 0 7426
"Mit adok meg rosszul?

Az a gond, hogy FormulaR1C1-et használsz, miközben abszolút cellahivatkozást adsz meg. FormulaR1C1 esetén R[x]C[y] formában kellene megadni a hivatkozást, ami ebben az esetben elég körülményes lenne, ezért javaslom, próbáld ki úgy, hogy

Workbooks("beillesztos.xls").Sheets("Munka1").Cells(sor_2, 1).Formula = _
"=[lista.xls]Munka1!A" & sor_1
Előzmény: Delila_1 (7424)
Delila_1 Creative Commons License 2008.06.17 0 0 7425

Amit vártam: =[lista.xls]Munka1!A1

A makrónál jó helyre sikerültek az idézőjelek, a #7354-nél elkapkodtam.

Előzmény: Delila_1 (7424)
Delila_1 Creative Commons License 2008.06.17 0 0 7424

Az öcséd makrójához képest annyi az eltérés, hogy ő a

Worksheets("Munka1").Cells(ujsor,1)=adat sorban a másik füzet adatát másolja be, én meg a

Workbooks("beillesztos.xls").Sheets("Munka1").Cells(sor_2,1).FormulaR1C1= "=["lista.xls]"Munka1!A" & sor_1 sorban a képletet adom meg.

 

Ennél, ha a sorközök számát akarod növelni, azt a sor_2=sor_2+3 -nál teheted meg, ha pedig A3-tól akarod indítani, akkor az elején a sor_1=1 és a sor_2=1 -eket növeld 3-ra.

A sor_1 azonos az öcséd sor nevű változójával, a sor_2 pedig az ujsorral.

 

Jimmy, vagy aki tudja, mi a hiba:

A formulás sortól azt vártam, hogy ezt írja be: =[beillesztos.xls"]Munka1!A1, de ehelyett az A1-et aposztrófok közé teszi. Azért tettem a végére a cserét, és így már működik.

 

Mit adok meg rosszul?

 

Előzmény: lzleo (7423)
lzleo Creative Commons License 2008.06.16 0 0 7423
Köszi!
Ígérem, majd kipróbálom, de ez már talán kissé meghaladja számtech képességeimet.
Előzmény: Delila_1 (7422)
Delila_1 Creative Commons License 2008.06.16 0 0 7422

Van itt egy script. Nem túl elegáns, de megoldja a problémádat.

 

Sub Beilleszt()
    sor_1 = 1: sor_2 = 1
    Workbooks("lista.xls").Activate
    Sheets("Munka1").Select
    Do While Sheets("Munka1").Cells(sor_1, 1) <> ""
        Workbooks("beillesztos.xls").Sheets("Munka1").Cells(sor_2, 1).FormulaR1C1 = _
            "=[lista.xls]Munka1!A" & sor_1
        sor_1 = sor_1 + 1
        sor_2 = sor_2 + 3
    Loop
    Workbooks("beillesztos.xls").Activate
    Sheets("Munka1").Select
    Columns("A:A").Select
    Selection.Replace What:="'", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
End Sub

 

Előzmény: lzleo (7415)
lzleo Creative Commons License 2008.06.16 0 0 7421
Rájöttem közben, hogy ha például minden ötödikbe szeretném rakni a számokat, és nem a Munka1 A1-től szeretnék indulni, hanem Munka1 A3-tól, akkor gondolom a maradékképzési dolog miatt a képletben A1 helyett mindenhol 2x5+1, tehát A11 írandó, a hármasokat meg ötösre kell átírni.
Előzmény: Törölt nick (7417)
lzleo Creative Commons License 2008.06.16 0 0 7420
Nagyon köszönöm! Sokat segítettél!
Már többször is sok plusz munkát okoztam magamnak ilyen problémák miatt, örülök, hogy nem kell minden cella hivatkozását egyenként bepötyögni, és létezik megoldás.
A képlet paramétereit még próbálom értelmezni, hogy megértsem, hogy pontosan hogyan is működik, és hogyan lehet más esetekhez is hozzáigazítani. Gondolom ha négyesével akarom, akkor csak a hármasokat kell átírni, ha meg nem az A1-től szeretnék indulni, akkor meg csak a kezdőcellát kell átnevezni.
Mégegyszer köszi!
Király vagy!
Előzmény: Törölt nick (7417)
Delila_1 Creative Commons License 2008.06.16 0 0 7419
Ne jelöld ki az első oszlopot, csak állj benne, ezután kattints a sorbarendező ikonra. Ha kijelölöd, akkor csak azt az egy oszlopot rendezi.
Előzmény: Laci Laci (7416)
Törölt nick Creative Commons License 2008.06.16 0 0 7418
Bocs, két osztás (//3) helyett csak egy kell (/3).
Előzmény: Törölt nick (7417)
Törölt nick Creative Commons License 2008.06.16 0 0 7417
Van itt egy képlet. Munka2 lapon A1-be írd be, hogy:

=HA(MARADÉK(SOR(A1);3) =1; INDIREKT("Munka1!A" & (SOR(A1)-1)//3+1);"")

Ez elvileg azt csinálja amit szeretnék, de a közbülső cellákban is képlet van.
Ha azt akarod, hogy a kimaradó (tehát 2., 3., 5., 6., stb.) sorokban ne legyen semmi, azt szerintem képlettel nem lehet megoldani, legfeljebb úgy ha végig képlet van az A oszlopban, aztán (kézzel vagy makróval) törlöd azokat, amik nem kellenek.

Előzmény: lzleo (7415)
Laci Laci Creative Commons License 2008.06.16 0 0 7416
Sziasztok!

 

A következő kérdésem lenne: hogy lehet számokat sorba rendezni úgy, hogy nem egyenként kattintok egy kijelölt tartománynál az adatok menüben a sorbarendezésre, vagy a sorbarendezés ikonra, hanem egy nagy, több száz oszlopból álló tartománynál minden oszlopban lévő adatokat rendezze egyszerre emelkedő sorrendbe.

 

Ez ugyanis nem nem megy úgy hogy kijelölöm az adatokat, aztán egyszerüen sorbarendezés. Az excel itt csak mindig csak az első oszlopot rendezi sorba.

 

Köszi

 

Laci

lzleo Creative Commons License 2008.06.16 0 0 7415
Sziasztok!
Lenne egy excel-es kérdésem, remélem ti profik vagytok, és tudtok segíteni!
Hogyan lehet egy munkalap egyik oszlopából egy másik munkalapon lévő táblázatba úgy beilleszteni a számadatokat, hogy két sor szünet legyen az adatok között. Pl. A1-et A1-re, A2-t A4-re, A3-at A7-re, A4-et A10-re stb. Ja és fontos lenne, hogy a kapcsolat megmaradjon, tehát a másolt adatok tartalmának változása a másolatokon is változzon.
Az öcsém csinált egy makrót, amivel egy excelből egy másikba lehet sorkihagyással másolni, de több oszlopnál, illetve több munkalapra való másolásnál elég bonyolult, mert mindig át kell írni a file, oszlop, sor paramétereket.
Ez az:

Sub makroka()
sor = 1
ujsor = 1
Workbooks("lista.xls").Activate
Do While Worksheets("Munka1").Cells(sor, 1) <> ""
adat = Cells(sor, 1).Value
Workbooks("beillesztos.xls").Activate
Worksheets("Munka1").Cells(ujsor, 1) = adat
ujsor = ujsor + 3
sor = sor + 1
Workbooks("lista.xls").Activate
Loop
End Sub

Remélem ti értitek, nekem ez elég zavaros. Meg aztán ez csak simán adatmásolás, tehát a másolt adat változása csak újabb makrófutáskor frissül.
Nincs valami egyszerűbb megoldás? Valami függvénnyel nem lehet megoldani?
Előre is köszönöm a segítséget!
BySzk a Creative Commons License 2008.06.16 0 0 7414
Hát magyarul...... Esetleg táblázatos megjelenítő? Nem tudom. Microsoft DataGrid Control, Version 6.0 (OLEDB) a pontos megnevezése.
Előzmény: iqbéla (7412)
iqbéla Creative Commons License 2008.06.16 0 0 7413

Sánta Kutya és Delila, köszi a tippet.

 

Beszereztem az említett magazin számát, és minden le van benne írva naccerűen, még1x köszi Delila a súgást.

 

 

Felmerült egy újabb kérdés. Van egy táblázatom, és kéne csinálni hozzá egy kis szűrést. Láttam egyszer olyat, hogy egy combobox működtetésével lehetett szűrni. Meg is csináltam szépen, csak nem tudom eltüntetni a szűrés fejlécét, pedig az esztétika kedvéért szükséges lenne. Próbáltam az elrejtés funkciót, de nem túl szép, mert egy-egy pillanatra mindig kivillan, amikor változtatom a szűrőfeltételt.

 

Vagy ennek más a szép megoldása?

 

Valakinek ötlete?

 

Köszi

iqbéla Creative Commons License 2008.06.16 0 0 7412

Mi a magyar neve a datagrid vezérlőnek? Mert akkor lehet, hogy tudok segíteni.

 

 

 

 

Előzmény: BySzk a (7411)
BySzk a Creative Commons License 2008.06.16 0 0 7411
Sziasztok

Találtam egy DataGrid nevű vezérlőt. Tudja valaki, hogy hogyan lehet feltölteni adattal. Pl a tábla A1:D5 és a fejléc az 1. sorban van. Előre is köszönöm.
magyarpityu Creative Commons License 2008.06.16 0 0 7410

Sziasztok!

 

Az a gondom, hogy ha elindítok egy programot Excel makróból, akkor nem tudom ellenőrizni, mikor futott le a progi. Így néz ki a makró:

 

Sub Futtat()

 

On Error Resume Next

 

Const ExeName As String = "C:\progi.exe"
Const Parameters As String = " Results.txt"

 

Dim ProcessID As Double

 

ProcessID = Shell(ExeName & Parameters, vbNormalNoFocus)

 

If Err.Number > 0 Then
   MsgBox ExeName & " nem futtatható!"

   Exit Sub
End If

 

AppActivate ProcessID
While Err.Number = 0
   AppActivate ProcessID
Wend

 

MsgBox ExeName & " lefutott!"

 

End Sub

 

Tehát elindítom a progit, visszakapom a PID-et, ennek érvényességét az AppActivate-tal szeretném ellenőrizni (szerintem itt rossz az elgondolás). Ha elindítom a makrót, azonnal kiírja, hogy lefutott a progi, pedig még nem futott le. Debug módban is hasonló a helyzet, ha F5-tel futtatom a makrót, azonban F8-cal lépkedve, a makró úgy működik, ahogy gondolom. A progi.exe csak akkor lép ki, ha én megállítom (a végén vár egy billentyű leütésre, eddig érvényes a PID). Azt szeretném kérdezni, hogyan tudnám leellenőrizni, mikor lép ki progi.exe?

Előzmény: Törölt nick (7398)
Delila_1 Creative Commons License 2008.06.16 0 0 7409
A PC WORLD májusi számában a Mesterfogások között Weisz Tamásnak van egy kiváló cikke a dinamikus grafikonokról (108. oldal), ahol pont ezt írja le lépésről lépésre. Főszereplő az OFSZET függvény. Érdemes megnézni, klassz.
Előzmény: iqbéla (7407)
Sánta Kutya (SK) Creative Commons License 2008.06.15 0 0 7408
Ha már gányolásról van szó, talán egyszerűbb lenne egy cellában megjeleníteni az évszámot, és ehhez kötni a le-fel gombot, aztán valami eldugott helyre az évszám alapján létrehozni egy (rejtett) másolatot a megfelelő adatsorról, a diagram meg a másolatból dolgozna.
Előzmény: iqbéla (7407)
iqbéla Creative Commons License 2008.06.15 0 0 7407

Tisztelt Fórum,

 

van egy 5 darab adatsorom, minden adatsor éves termelési eredmény. Azaz 5 termelő üzem termelési számai egymás után egy sorban, 2000, 2001, .. 2005 évekre bontva.

 

Ebből szeretnék olyan diagramot készíteni, amin van egy le-fel gomb, és azzal váltja az évét az adatsornak, amiből megjelenítendő grafikont rajzolja.

 

Erre gány megoldást tudok: legyártom a diagramot, rárakok egy lefel gombpárost, és az ahhoz kötődő makrófüggvény átírja az adott Chart objektum Source-át. Nincs erre valami hivatalos, értelmesebb eljárás?

 

Köszönöm

Cloaca Maxima Creative Commons License 2008.06.15 0 0 7406
kösz
Előzmény: _horst (7405)
_horst Creative Commons License 2008.06.15 0 0 7405

 

szia,

ezt képletet javaslom ha pl F4-ben és H4-ben van az eredmény:

 

=HA(F4>H4;1;HA(F4=H4;"x";2))

 

 

Előzmény: Cloaca Maxima (7404)
Cloaca Maxima Creative Commons License 2008.06.15 0 0 7404
Sziasztok!
Keresem azt az Excel-függvényt, ami egy focimeccs eredményéről az 1x2 (v. 102) eredményt meg tudja állapítani (úgy, h. az első cellában pl. 2, a másikban 1 van). A HA függvénnyel az a bajom, hogy az IGAZ v HAMIS értéket ad, de nem tudom, hogy a HA és az ÉS függvényeket hogyan kombináljam. Ha tudjátok, lszi írjátok meg!
UI: Utoljára BASIC-ben, 20 éve kontárkodtam hasonlóval.
BySzk a Creative Commons License 2008.06.14 0 0 7403
Hűűűha. Hát nagyon köszönöm. Így már biztos boldogulok az "átalakítással".
Előzmény: Törölt nick (7401)
Törölt nick Creative Commons License 2008.06.14 0 0 7402
Na arra nem gondoltam, hogy a B mezőnevet félkövér írás bekapcsolásaként fogja értelmezni a fórumszoftver... Szerintem azért látszik a lényeg. Ha valahol gyanús, hogy hiányzik valami, képzeld oda a [.B.] mezőnevet, pontok nélkül.

Előzmény: Törölt nick (7401)
Törölt nick Creative Commons License 2008.06.14 0 0 7401
Szóval. Adatmódosítás Access-ben, DAO objektumokon keresztül.

Tegyük fel, hogy van a 'D:\db1.mdb' adatbázisban az 'állatok' nevű, alábbi táblád. (Az első sorban mezőnevek, alatta a rekordok vannak.)

ID - Név---------- B - C - D
1 -- 'maci' ------- 2 - 0 - 1
2 -- 'paci' ------- 2 - 0 - 0
3 -- 'nyuszika' - 1 - 2 - 4
4 -- 'róka' -------7 - 4 - 5

Tegyük fel, hogy a nyuszika C értékét akarod növelni 2-vel, a D értékét pedig nullára állítani. Rekordmódosításhoz, jól gondoltad, először meg kell keresni azt a bizonyos rekordot, amit módosítani akarsz.

Egyik lehetőség a Seek metódus és az index mezők felhasználása. Legyenek az [ID] és a [Név] mezők megadva indexként. Ekkor:

Sub ModifyRecord()
Dim DB As DAO.Database, Rst As DAO.Recordset

Set DB = OpenDatabase("D:\db1.mdb")
Set Rst = DB.OpenRecordset("állatok")
With Rst
.Index = "Név"
.Seek "=", "nyuszika"
.Edit
![C] = ![C] + 2
![D] = 0
.Update
.Close
End With
DB.Close
End Sub


Másik lehetőség, hogy már eleve szűrt rekordhalmazt nyitsz meg, SQL lekérdezés segítségével.

Sub ModifyRecord()
Dim DB As DAO.Database, Rst As DAO.Recordset, mySQL as String

Set DB = OpenDatabase("D:\db1.mdb")
mySQL = "SELECT * FROM [állatok] WHERE [Név] = 'nyuszika'"
Set Rst = DB.OpenRecordset(mySQL)
With Rst
.Edit
![C] = ![C] + 2
![D] = 0
.Update
.Close
End With
DB.Close
End Sub

A Seek metódus egyetlen rekordot ad vissza, az SQL lekérdezés a szűrési feltételektől függően akár többet is. Ha több rekordot akarsz módosítani, akkor az utóbbit javaslom. Pl ha az a feladat, hogy minden olyan rekordban, ahol C=0, legyen C = B + D, akkor:

Sub ModifyRecord()
Dim DB As DAO.Database, Rst As DAO.Recordset, mySQL as String

Set DB = OpenDatabase("D:\db1.mdb")
mySQL = "SELECT * FROM [állatok] WHERE [C] = 0"
Set Rst = DB.OpenRecordset(mySQL)
While Not Rst.EOF
With Rst
.Edit
![C] = ! + ![D]
.Update
.MoveNext
End With
Wend
Rst.Close
DB.Close
End Sub

Itt tehát végig kell lépkedni az összes visszaadott rekordon, erre való a MoveNext. És ezt addig, amíg EOF nem igaz, ami akkor válik igazzá, ha nincs több rekord. Ha az SQL kiválasztási feltételeknek egyetlen rekord sem felel meg, akkor EOF alapból igaz, tehát a ciklus nem fut le.

Ugyanezt egyetlen sima SQL UPDATE utasítással is el lehet végezni:

Sub ModifyRecord()
Dim DB As DAO.Database, mySQL as String

Set DB = OpenDatabase("D:\db1.mdb")
mySQL = "UPDATE [állatok] SET [C] = + [D] WHERE [C] = 0"
DB.Execute mySQL
End Sub

Az SQL Update akkor jó, ha az új érték, amit be akarsz írni, konstansok és sajátrekord mezőértékek kombinációjaként megadható. A fenti példánál a [C] mező új értékét az ugyanabban a rekordban lévő és [D] összegeként állítjuk elő, tehát az SQL UPDATE használható.

De ha a [C] mező új értéke bonyolult módon áll elő, pl. egy bizonyos excel munkalap -edik sorában és [D]-edik oszlopában lévő értéket olvassuk ki, akkor az SQL UPDATE nem jó, és a DAO.Recordset a nyerő.

A tábla- és mezőneveket nem kell feltétlenül szögletes zárójelbe tenni, de melegen ajánlott. Egyrészt rögtön látszik belőle, hogy az ott a kódban (tábla-, vagy) mezőnév. Másrészt, ha a név szóközt, kötőjelet, ékezetes karaktert, stb. tartalmaz, akkor a szögletes zárójelek elhagyása hibás működéshez, vagy nem működéshez vezethet.
Előzmény: BySzk a (7393)
BySzk a Creative Commons License 2008.06.13 0 0 7400
Rendben, előre is köszönöm a segítséget.
Előzmény: Törölt nick (7397)
magyarpityu Creative Commons License 2008.06.13 0 0 7399
Nahát... Köszi! :))
Előzmény: Törölt nick (7398)
Törölt nick Creative Commons License 2008.06.13 0 0 7398
Call Shell("programnév_elérési_útvonallal_együtt [szóköz] paraméter_vagy_megnyitandó_dokumentum")

Pl.

Call Shell("Program Files\Microsoft Office\OFFICE11\msaccess.exe D:\tesztdb1.mdb")
Előzmény: magyarpityu (7396)
Törölt nick Creative Commons License 2008.06.13 0 0 7397
Ez kicsit hosszabb, holnap térjünk vissza rá.
Előzmény: BySzk a (7393)
magyarpityu Creative Commons License 2008.06.13 0 0 7396
A progi Win32 konzol típusú. Az eredmények szövegfile-ban, minden rekord új sorban, minden sorban a mezők tab-bal elválasztva, minden sor egyforma, kivéve az elsőt, mert az a fejléc, de ezt az Excel makró kezeli.

A szövegfile beolvasását most így oldottam meg:

Sub InsertFile()
Dim FileName As String
FileName = Application.GetOpenFilename("Text Files (*.txt), *.txt," & _
"All Files (*.*), *.*")
If FileName = "False" Then Exit Sub
Workbooks.OpenText FileName, DataType:=xlDelimited, Tab:=True

'formázások

End Sub

Természetesen, ha a progit Excelből hívom meg, akkor nem kell megnyitás dialogusablak, akkor marad az open. Egyelőre nem tudom, hogyan indítsam makróbol a progit.
Előzmény: BySzk a (7395)
BySzk a Creative Commons License 2008.06.13 0 0 7395
Szia

Az, hogy egy külső programot milyen módon lehet megnyitni VBA-ból szerintem ennyi infó alapján megmondani nem lehet, bár igazából annyira nem értek hozzá. Amit javasolni tudok az az "Adatok/Külső adatok importálása/Adatok beolvasása" menüpont, varázsló. Amennyiben a .txt fájlban található adatok szóközzel vannak elválasztva azt szépen külön sorokba és oszlopokba tölti. Innen úgy formázod ahogyan szeretnéd és ezt le is makrózhatod.
Előzmény: magyarpityu (7394)
magyarpityu Creative Commons License 2008.06.13 0 0 7394
Sziasztok!

Van egy programom, ami számításokat végez és az eredményeket szöveg file-ba menti le. A szöveg file-t beolvasom Excel-be, ahol makrókkal megformázom. Azt szeretném kérdezni, hogyan lehetne a külső programot Excel makróból elindítani? Most külön futtatom a progit, majd formázom Excelben az eredményeket. Egyszerűsíteni szeretném a folyamatot, hogy az Excel indítsa el a progit, majd miután lefutott, beolvasnám a szövegfile-t és feldolgoznám az adatokat.

Az igazi megoldás persze az lenne, ha a progi kommunikálna az Excel-lel és eleve oda írná az eredményeket, de attól még messze vagyok, hogy ilyet tudjak :)) A progit Excel makróvá átírni még ettől is reménytelenebb számomra, marad tehát a külső progi, amit ha az Excel tudna meghívni, akkor már teljesen komfortos lenne a megoldás.

Köszi előre is a tippeket!
BySzk a Creative Commons License 2008.06.13 0 0 7393
1000 és egy hála, soha nem jöttem volna rá (a szövegdobozos és gombos dolgot valóban megoldottam, legalább ennyi megy a témában). Még egy gyors kérdésem ezért lenne. Amennyiben meglévő adatot szeretnék módosítani azt hogyan tudom megoldani? Gondolom az azonosító alapján kellene megkeresni, de ehhez az accesses dologhoz egyelőre nem igazán értek.
Előzmény: Törölt nick (7392)
Törölt nick Creative Commons License 2008.06.13 0 0 7392
Szia

a Commandbutton meg a Textbox részt kihagytam, de azt szerintem meg tudod oldani.
Új rekord létrehozása az Access adatbázisban Excelből (pontosabban annak egyik lehetséges módja):

Sub TransferData()
Dim DB As DAO.Database, Rst As DAO.Recordset

Set DB = OpenDatabase("D:Tesztdb1.mdb")
Set Rst = DB.OpenRecordset("name") 'táblanév
With Rst
.AddNew
'mezőnév
![Név] = "valami string"
'szükség esetén további mezők is lehetnek
' ![field2] = érték
' ![field3] = érték
.Update
.Close
End With
DB.Close
End Sub


Ne felejtsd el a VB Editorban a Tools->References listában a Microsoft DAO 3.x Object Library elé betenni a pipát. (x verziószám minél nagyobb, lehetőleg 6.)
Arra is figyelni kell, hogy az átadott érték adattípusa megfeleljen a mező adatbázisban definiált adattípusának.
Előzmény: BySzk a (7391)
BySzk a Creative Commons License 2008.06.13 0 0 7391
Sziasztok!

Egy kérdésem lenne Access és Excel kapcsolattal. Van egy kis programom Excel-ben, de az adatbázis része kezdi kinőni az Excel-t, így szeretném átültetni azt Accessbe. Úgy gondoltam, hogy első körben csak valami egyszerű példán kipróbálom miként is megy ez. Addig el is jutottam, hogy az Excel át tudja venni az adatokat amik az .mdb -ben vannak. A problémám az, hogy viszont fordítva nem működik. Amit szeretnék az az, hogy:
Adott a D:Tesztdb1.mdb, azon belül egy name tábla. 2 oszlop található benne, Azonosító (ez az elsődleges kulcs) ami automatikus számláló és a Név ami szöveg.
Az Excel-ben van egy form melyen található egy Textbox1 és egy CommandButton1 mely click eseményére szeretném, hogy a Textbox1 tartalma bekerülne a name táblába.

Remélem tud valaki segíteni, előre is köszönöm.
bohe Creative Commons License 2008.06.12 0 0 7390

 Jimmy The Hand!  Elküldtem ebben a témában egy mailt. Megnéznéd? Azért nem ide írom le mert túl sok lenne.

 

Ja elnézést az Offért. 

magyarpityu Creative Commons License 2008.06.11 0 0 7387

Én így oldanám meg (ha még aktuális a kérdés):

 

1. Létrehozok egy új modult, legyen a neve mondjuk StringTable. Itt definiáljuk a stringeket:

 

Public Txt(10) As String 'vagy amennyi kell

 

Public Function init()

 

   Txt(1) = "Első szöveg"
   Txt(2) = "Második szöveg"
   Txt(3) = "Ez is egy szöveg"
   Txt(4) = "Na még egy"
   Txt(5) = "Még mindig csak a felénél járunk"

   ...

   Txt(10) = "Utolsó"

 

End Function

2. A StringTable modul init metódusát a Workbook_Open eseménykezelőből meghívjuk, ami a ThisWorkbook (vagy DieseArbeitsmappe esetleg más) névre hallgató object kódjába kell írni:

 

Private Sub Workbook_Open()

   StringTable.init

End Sub

3. A többi modul bármelyik makrójából meghívható StringTable.Txt(i) formában az array:

 

Sub proba()

   MsgBox StringTable.Txt(10)

End Sub

Előzmény: Gavriel (7386)
Törölt nick Creative Commons License 2008.06.10 0 0 7384
Szerintem lehet csak megfelelő értéket adjon vissza, amit tud is használni
Előzmény: Copy_ (7383)
Copy_ Creative Commons License 2008.06.10 0 0 7383
Sziasztok,

Most találtam rá a kimutatásadatot.vesz szuperfüggvényre, kérdésem lenne, hogy nem lehet a Név mezőjébe függvényt beilleszteni?

Köszönöm!
Laci Laci Creative Commons License 2008.06.07 0 0 7381

Szai Jimmy!

 

Küldtem e-mailt, minden működik.

 

Nagyon köszi:

 

Laci

Előzmény: Törölt nick (7354)
Delila_1 Creative Commons License 2008.06.07 0 0 7380
Köszönöm.
Előzmény: Törölt nick (7378)
magyarpityu Creative Commons License 2008.06.07 0 0 7379
Mikor elkezdtem az Office segéddel ismerkedni, első körben nekem is kint maradt a figyelmeztető buborék. Egyből meg akartam kérdezni, de mert többször is kapkodtam már, gondoltam, előbb körülnézek a neten, hátha találok választ, úgyis volt pár jó Excel-es link-tipp itt a fórumon :)) Nos, tele van a net ezzel a problémával, tényleg valami gond van az Office segéddel. Nekem a WaitMsg.Close segített, azonban ezzel új probléma merült fel, amire már nem találtam választ, ez az üres buborék dolog. Tehát nem tudom, miért nem tűnt el nekem is, és miért jó nekem a .Close, máshol pedig miért nem működik. Fura.

A modeless userform lesz a megoldás, köszi szépen!
Előzmény: Törölt nick (7378)
Törölt nick Creative Commons License 2008.06.07 0 0 7378
És azt hogy csinálod, hogy eltűnjék a végén a buborék? Nekem ott marad, annak ellenére, hogy elvileg végrehajtja ezt a sort:

WaitMsg.Close

Egyébként egy (pl. MsgBox-nak álcázott) modeless userform is alkalmas erre a célra. Itt aztán végtelen a lehetőség a figyelemfelkeltésre. Továbbá (ezt ugyan nem próbáltam, de biztos vagyokbenne, hogy működik) sima szövegdobozt is ki lehet tenni a munkalapra, aztán törölni.

Delila, a StatusBar tartalmának törlését így érdemes végezni:

Application.StatusBar = False

Ha üres sztringet adsz neki, akkor elnémul, és már semmi olyat nem jelez ki, amit normál működés esetén ki szokott.
Előzmény: magyarpityu (7377)
magyarpityu Creative Commons License 2008.06.07 0 0 7377
Érdekes, mióta beírtam ezt a sort az Office segéd buborék megjelenítő részhez:

Application.ScreenUpdating = True

azóta megjelenik a szöveg a segéd buborékjában. Hurrá! Ez azért különös, mert az Application.ScreenUpdating alapból True, nem állítok semmit azzal, hogy ismét igazra állítom. Itt valami nem megbízhatóan működik...
Előzmény: Delila_1 (7375)
magyarpityu Creative Commons License 2008.06.07 0 0 7376
Ez se rossz :-)) Legalább már tudom, hogyan kell a sátutsz-sorba írni, köszi!

Valami feltűnőbb üzenetre gondoltam. Most, hogy este pihent a gép (és én is), gondoltam, hátha friss üde fejjel és procival mégis frissül a segéd buborék, de nem. Pedig ez az office segéd nagyon kézenfekvő és elegáns megoldás lenne.
Előzmény: Delila_1 (7375)
Delila_1 Creative Commons License 2008.06.07 0 0 7375

Application.StatusBar = "Igyál egy sört a büfében, míg dolgozom!"
Application.ScreenUpdating = False

'utasítások

 

Application.StatusBar = ""
Application.ScreenUpdating = True

 

Az első sor a státuszsorban megjeleníti a szöveget, a harmadik visszaállítja.

Előzmény: magyarpityu (7374)
magyarpityu Creative Commons License 2008.06.06 0 0 7374
Sziasztok!

Egy (viszonylag) nagy táblázatban számításokat végzek makrókkal, ami hosszú másodpercekig tart, és nem feltétlenül van látványos eredménye (nem szaladnak a sorok a képernyőn, hogy nyomon követhető legyen, még dolgozik a makró). Ezért arra gondoltam, az Office segéddel kiíratok egy figyelmeztető üzenetet, ami a makró futása alatt fent van a képernyőn, és mikor eltűnik, akkor feltűnik a user-nek (vagy luzernek, ha éppen én használom a progit), hogy kész a számítás. Így oldottam meg:

Sub TablazatKitoltes

With Assistant
.On = True
.Visible = True
.Sounds = True
End With
Dim WaitMsg As Balloon
Set WaitMsg = Assistant.NewBalloon
With WaitMsg
.BalloonType = msoBalloonTypeBullets
.Mode = msoModeModeless
.Heading = "Számítások"
.Text = "A táblázat kitöltése alatt légy türelemmel!"
.Button = msoButtonSetNone
.Animation = msoAnimationGestureUp
.Show
End With

... 'Számítsok

Assistant.Animation = msoAnimationIdle
WaitMsg.Close

End Sub

Az a probléma, hogy nem jelenik meg a figyelmeztető szöveg, csak az üres buborék. Persze valahol ott van a szöveg is, mert ha elmozgatom a segédet, mialatt fut a makró, akkor ott marad a buborék helyén a régi buborék nyoma, és látható lesz a szöveg. Gondolom, a Win nem frissít, ez lehet a gond. Vagy én nem csinálok valamit jól?

Esetleg nem használom az Office segédet, de akkor hogyan lehet figyelmeztető szöveget kiírni (olyan felületre, ami nem ragadja magához a vezérlést és nem vár semmi beavatkozást), esetleg hogyan lehet megoldani, hogy amíg a makró dolgozik, addig az egérkurzor homokóra legyen és csak a makró végén álljon vissza a normális Excel-kurzor?
NORTHLINE Creative Commons License 2008.06.05 0 0 7373
Sorry!
Előzmény: locsemege (7372)
locsemege Creative Commons License 2008.06.05 0 0 7372
Több helyen ne kérdezd ugyanazt légyszives.
Előzmény: NORTHLINE (7371)
NORTHLINE Creative Commons License 2008.06.05 0 0 7371
Üdv mindenkinek,excel ügyben elakadtam.Ma délután óta egy pár excel fájl megynyitásakor az elérési út és megadott név hibájára hivatkozik a program,de úgy,hogy a hibaüzenetben a fájl elérési teljes útja nem jelenik meg,hanem először az első része,aztán több hibaüzenet ablakban szép sorban a név többi része,majd 5-6 hibaüzenet után megnyitja a fájlt.Ötlete valakinek?
Köszi előre is.
Törölt nick Creative Commons License 2008.06.05 0 0 7370

Tökéletesen megoldja, sőt, ráadásul még meg is meggyorsítja a feldolgozást, az Application.FileSearch hosszabb ideig kerreg mire kiírja a fájlneveket.

 

Szóval, valóban nagyon jó, köszönöm szépen a segítséget.

 

Előzmény: Törölt nick (7367)
Törölt nick Creative Commons License 2008.06.05 0 0 7369
Akarom mondani

FN = Dir(Fldr & "\*.doc", vbNormal)
Előzmény: Törölt nick (7368)
Törölt nick Creative Commons License 2008.06.05 0 0 7368
A fórumszoftver megeszi bizonyos karaktereket, és ezt elfelejtettem duplázni. Szóval az egyik sor rossz, helyesen:

FN = Dir(Fldr & "*\.doc", vbNormal)
Előzmény: Törölt nick (7367)
Törölt nick Creative Commons License 2008.06.05 0 0 7367
"Egyébként mivel lehetne helyettesíteni Application.FileSearch elemet?"


Én a Dir() függvényt szoktam használni. A programod átalakítva:

Sub Listáz()
Dim FN As String, Fldr As String, lCount As Long

Fldr = "C:\Temp"
FN = Dir(Fldr & "*.doc", vbNormal)
Do While FN <> ""
lCount = lCount + 1
Cells(lCount, 1) = Fldr & "" & FN
FN = Dir()
Loop
End Sub

Kíváncsi vagyok, vajon ez megoldja-e az eredeti problémát. Bár nem hiszem...
Szerintem ez valami Exceltől független, Windows-os pufferelés dolog lehet. Azért teszteld, aztán kérlek, jelezz vissza.
Előzmény: Törölt nick (7366)
Törölt nick Creative Commons License 2008.06.05 0 0 7366

Beolvasom a word forrásfájlokat, amikből adatokat emelek át egy táblába, majd ezekből különböző kimutatásokat készítek. A probléma akkor jelentkezett, amikor teszteltem az eljárásokat és a meglévő forrásfájlokhoz másoltam vagy készítettem újakat. Ekkor a Application.FileSearch rutint futtatva nem listázta ki az új fájlokat.

 

Egyébként mivel lehetne helyettesíteni Application.FileSearch elemet?

Előzmény: Törölt nick (7365)
Törölt nick Creative Commons License 2008.06.05 0 0 7365
Nálam nem jelentkezik ez a késés, vagy ha igen, akkor 2-3 másodpercnél rövidebb, és ezért nem veszem észre. Nálad hogy van? Programmal hozod létre a fájlt, és rögtön utána futtatod ezt a listázó szubrutint?

Próbáltam utánanézni a neten ennek a kérdésnek, de használható infót nem találtam. Viszont azt igen, hogy az Application.FileSearch elemet az Excel 2007-ből kihagyták a fejlesztők, mert problémásnak találták. Szóval hosszú távra nem biztos, hogy érdemes tervezni vele.
Előzmény: Törölt nick (7358)
v-m Creative Commons License 2008.06.04 0 0 7363
Sub Auto_Open()
Application.Run "makró1"
End Sub

OK, KÖSZI!
Előzmény: v-m (7362)
v-m Creative Commons License 2008.06.04 0 0 7362
Sub auto_open
makróneve1?
makróneve2?
End Sub

Ez sántít... :(
Előzmény: Gavriel (7360)
v-m Creative Commons License 2008.06.04 0 0 7359
Sziasztok,
Meg lehet hívni egy makróból egy másikat (vagy többet)?
[a javasolt könyvet megrendeltem, köszönöm a tanácsot!]
Törölt nick Creative Commons License 2008.06.04 0 0 7358

Sziasztok!

 

Kezdő kérdésem lenne. Az alábbi kis programmal egy adott mappában található *.doc fájlok neveit íratom ki. Ez idáig rendben is van.

A problémám az, ha egy új fájlt másolok vagy hozok létre az adott munkakönyvtárban és újból futtatom a keresést, ezt az új fájlt (nem találja meg?) nem listázza ki.

Ami érdekes, ha nem közvetlenül a másolás vagy létrehozás után, hanem egy kis idő elteltével futtatom a keresést, az eljárás rendben, már új fájlt is tartalmazva írja ki a mappa tartalmát. Vajon miért?

 

Sub FileList()
   
    With Application.FileSearch
      .NewSearch
      .LookIn = "C:TMP"
      .FileType = msoFileTypeWordDocuments
      .SearchSubFolders = False
      .Filename = "*.doc"
      If .Execute() > 0 Then
        For lCount = 1 To .FoundFiles.Count
          Cells(lCount, 1) = .FoundFiles(lCount)
        Next lCount
      End If
    End With
 
End Sub   

Laci Laci Creative Commons License 2008.06.03 0 0 7357
Szia Jimmy, köszi  a választ, irtam még egy kiegészitést az e-mail cimedre
Előzmény: Törölt nick (7354)
Törölt nick Creative Commons License 2008.06.03 0 0 7356
Ez a megoldás nekem is új. Gratulálok! :)
Előzmény: magyarpityu (7355)
magyarpityu Creative Commons License 2008.06.03 0 0 7355

Köszi a segítséget, megvan a megoldás :))

 

A munkalap vezérlőinek kódját a munkalap objektumba tettem, szerintem logikailag oda illik, nem külön class modulba. Ekkor persze kell init függvény, hogy mielőtt használni szeretném a vezerlőket, be legyenek állítva az objektum változói. Ezt az inicializáló kódot muszáj public-nak definiálni, hogy a Workbook_Open eseménykezelővel elindíthassam, és erre az init-re más nem hivatkozik, tehát egyszer fog lefutni, minden megnyitáskor, mielőtt még bármi bármit is csinálna. Hurrá! Eddig ez rendben is volt, a fogfájásom amiatt volt, hogy így megjelent az Excel menüben a Munkalap8.init makró, ami eléggé luzer megoldás. Csak annyit kellett tennem, hogy az init nem sub, hanem function lett :)) így már sehol nem jelenik meg a menüben (sem a makrók sem a függvények között), viszont publikus maradt, nem kellett kiszedni a logikailag ésszerű helyéről, és el tudom indítani a szükséges időben.

Előzmény: Törölt nick (7350)
Törölt nick Creative Commons License 2008.06.03 0 0 7354
ó. Bocs, "küldés" helyett a "mentés piszkozatként" gombot nyomtam meg. De most már elvileg tényleg elküldtem
Előzmény: Laci Laci (7353)
Laci Laci Creative Commons License 2008.06.02 0 0 7353

nem jött e-mail, pedig leellenőrizem az e-mail címet és jó

Előzmény: Törölt nick (7352)
Törölt nick Creative Commons License 2008.06.02 0 0 7352
Email ment.
Előzmény: Laci Laci (7351)
Laci Laci Creative Commons License 2008.06.02 0 0 7351

Jimmy!

 

Most értem haza a munkahelyről, kipróbálnám amit irtál, de még addig sem jutok el, hogy mi az a Sub sorba() és hogy hova is kell beirni ezt az egészet, hogy működjön.

 

Itt az e-mail cimem: hidasi_laszlo2005@yahoo.de

 

Ha ide elküldenéd azt az excel filet, ahol működik, az nagy segitség lenne.

 

másik az, hogy lehet, hogy nem fog működni.

 

Mert: =SZUM(AK1402:AK1500), ez ugye egy számot eredményez, na ezeket kell sorba rakni.

 

viszont remélem ezt ki lehet ezzel küszöbölni

 

csak fix (tehát $A$1 típusú) cellahivatkozásokat használok.

 

Előzmény: Törölt nick (7344)
Törölt nick Creative Commons License 2008.06.02 0 0 7350
Én azt tenném, hogy

1) sima kód modulra:
Public ChkBox(22) As Object

2) Workbook moduljára
Private Sub Workbook_Open()
Set ChkBox(1) = Munka1.chk1
Set ChkBox(2) = Munka1.chk2
... stb...

End Sub

Ha a checkbox-ok nem az Űrlapok eszköztárból, hanem a Vezérlők eszközkészletéből származnak, akkor ennek működnie kell. És akkor, mivel publikos tömbről van szó, már akármelyik modul akármelyik szubrutinjából el lehet érni.
Előzmény: magyarpityu (7349)
magyarpityu Creative Commons License 2008.06.02 0 0 7349

Szintén nem vagyok programozó, az Excel-t is csak most tanulgatom. Hagyjuk a konstruktorokat. Mert nem ismerem a basic-ot, ezért lehet, nem is olyan logikával közelítek hozzá, ami ide kellene.

 

Van egy "Beállítások" munkalap, ahol igen-nem checkbox-okat helyeztem el, ahol ilyen-olyan opciókat lehet ki-be kapcsolgatni. Az opciókat <név>_Change() eseménykezelővel állítom be. 22 db ilyen választókapcsoló van, mind CheckBox típusú objektum. Létrehoztam egy ChkBox() tömböt, ami az objektumokat tartalmazza:

 

Dim ChkBox(22) As Object

 

Az init függvény csak ennyit csinál, hogy feltölti a ChkBox tömböt:

 

Private Sub init()

   Static initLoad As Integer
   initLoad = initLoad + 1
   If initLoad > 1 Then Exit Sub

   Set ChkBox(0) = chk1

   ...

   Set ChkBox(21) = chk22

End Sub

 

Ezután már így hivatkozhatok a vezérlőkre: ChkBox(i), ezzel a kódban bármelyik vezérlőt lekérdezhetem, nem kell az eredeti nevükre hivatkozni. Pl, ha az érdekel, hogy van-e egyáltalán akár csak egyetlen igen-re állított érék, ezt kell tegyem:

 

Public Function VanIlyen() As Boolean 'Van-e igen-re állított jelölőnégyzet?

   Dim i As Integer
   For i = 0 To 21
      If ChkBox(i).Value Then
         VanIlyen = True
         Exit Function
      End If
   Next i

   VanIlyen = False

End Function

De ez csak úgy működik, ha előbb lefutott az init metódus, tehát most ez nem fog lefutni, így javítom:

 

Public Function VanIlyen() As Boolean 'Van-e igen-re állított jelölőnégyzet?

   init

   Dim i As Integer
   ...

 

Nagyjából ezek a részletek.

Előzmény: Törölt nick (7348)
Törölt nick Creative Commons License 2008.06.02 0 0 7348
"Továbbra is kérdésem, van-e az Excel makróban az objektumoknak konstruktora, azaz olyan metódusa, ami az első példány meghívásakor lefut és ezt a kódot meg lehet írni?"

A válasz röviden: nem tudom.

Hosszabban:
Én nem vagyok programozó, csak egy lelkes amatőr, és a "konstruktor" fogalma nem teljesen világos számomra. Ezért aztán nem is értem a kérdést kristálytisztán. Már csak azért sem, mert nem tudom, mit értesz "objektum" alatt.

Azt tudom, hogy ha készítesz egy új objektumosztályt, annak van Initialize eseménye, amit a a Class Modul-on lehet lekódolni. De ez minden egyes példány esetében, annak létrehozásakor lefut, vagyis, ha a definíciódat nézzük, ez nem konstruktor.

Ha tisztában lennék a projekted részleteivel, talán tudnék kerülő megoldást javasolni. De ha ragaszkodsz a konstruktoros verzióhoz, kétlem, hogy segítségedre lehetek.
Előzmény: magyarpityu (7347)
magyarpityu Creative Commons License 2008.06.02 0 0 7347

Igen, olyan kódot szerettem volna írni, ami az objektumra való első hivatkozáskor lefut és többször nem. Ezért gondoltam, hogy a Workbook_Open eseménykezelőnek kell ezt az inicializálást elvégezni. Viszont a kód az objektum része, olyan változókat állít be, amik private-ok, így ennek az inicializáló rutinnak publicnak kell lennie, hasonlóan a példányosítható objektumok konstruktoraihoz.

 

Végül átszerveztem a makróimat és ahol beállítandó változókat használok, oda beírtam egy-egy szubrutinhívást, illetve az inicializáló rutin elejére ezt:

 

Static initLoad As Integer
initLoad = initLoad + 1
If initLoad > 1 Then Exit Sub

 

így a kód csak egyszer fut le. Továbbra is kérdésem, van-e az Excel makróban az objektumoknak konstruktora, azaz olyan metódusa, ami az első példány meghívásakor lefut és ezt a kódot meg lehet írni?

Előzmény: Törölt nick (7333)
Laci Laci Creative Commons License 2008.06.01 0 0 7346
Köszi, most megkaptam az üzeneted, csak később frissitettem, mint ahogy az előzőt irtam. Megnézem holnap, most túl fáradt vagyok.
Előzmény: Törölt nick (7344)
Laci Laci Creative Commons License 2008.06.01 0 0 7345

holnap küldök egy rendes képet, már annyiszor ki.....tt velem ez az oldal.

 

 

Előzmény: Laci Laci (7342)
Törölt nick Creative Commons License 2008.06.01 0 0 7344
Nézzük meg, ez jó-e valamire:

Sub sorba()
Dim rng1 As Range, rng2 As Range
Set rng1 = Range("C10:J10")
Set rng2 = Range("K10:R10")
rng1.Offset(1).EntireRow.Insert
rng1.Copy rng2.Offset(1)

rng2.Resize(2).Sort Key1:=rng2(1), Order1:=xlAscending, Header:=xlNo, MatchCase:=False, Orientation:=xlLeftToRight

rng2.Offset(1).Copy rng1

rng2.Offset(1).EntireRow.Delete

End Sub


Első körben azon a példán próbáld ki, amit kép formábyn feltöltöttél.
A vastagított részekbe helyettesítsd be a két cellatartományt.
rng1 legyen a sárga
rng2 legyen a kék

Aztán kipróbálhatod ott is, ahol szükség van rá.

Én leteszteltem úgy, hogy a sárga és kék cellákban csak konstans számok voltak, és úgy működik.Kipróbáltam úgy is, hogy volt a sárgában pár olyan képlet, amelyekben csak fix (tehát $A$1 típusú) cellahivatkozások voltak, és az is működött. Amikor viszont a képletben futó oszlop- vagy sorindex van (tehát $A1, A$1, A1 típusú cellahivatkozás), akkor nagy valószynűséggel elhasal a dolog, mivel sorbarendezésnél az Excel automatikusan módosítja a képleteket.

Előzmény: Laci Laci (7343)
Laci Laci Creative Commons License 2008.06.01 0 0 7343
Előzmény: Laci Laci (7342)
Laci Laci Creative Commons License 2008.06.01 0 0 7342

Szia, itt a kép,

 

előre is köszi

Előzmény: Törölt nick (7341)
Törölt nick Creative Commons License 2008.06.01 0 0 7341
Nem látom a képet...
Előzmény: Laci Laci (7340)
Laci Laci Creative Commons License 2008.06.01 0 0 7340

A1:AN1 -ben nincsenek képletek, ezek azonositók, hogy értelmezni tudjam a AO1:CB1 ben sorba rakott számokat.

 

A 3000 sor összefüggő, márnint olyan szinten, hogy egy sor igy épül fel:

 

kb 50 szám egy más után, aztán képletek, amik ezeket feldolgozzák, utánna ezek eredményei, és eseket kéne a kérdéses módon sorrendbe rakni.

 

Azonban minden sor egyforma, tehát nem minden második egyforma.

 

Most képet is csatoltam a szinekkel

 

köszi előre is

Előzmény: Törölt nick (7338)
Törölt nick Creative Commons License 2008.06.01 0 0 7339
Közben rájöttem, hogy at 1) kérdésem hülyeség volt.
De akkor azt nem értem, hogy a narancssárga meg a kék meg a zöld számok hogyan helyezkednek el egymáshoz képest.
Tudnál esetleg egy képet feltölteni erről?
Előzmény: Törölt nick (7338)
Törölt nick Creative Commons License 2008.06.01 0 0 7338
Kezdek megvilágosodni.
Tehát az a feladat, hogy az A1:AN1 tratományt kell az AO1:CB1 tartomány szerint sorbarendezni. Ha jól értem, ez nem okozna gonndot pl. akkor, ha az A1:AN1 tartomány az AO1:CB1 alatt lenne, tehát AO2:CB2-ben, igaz?

Ha így van, akkor további kérdéseim vannak.
1) vannak-e az A1:AN1 tartományban képletek, vagy esetleg csak konstans számok/betűk?
2) az a többezer sor, amit így kezelni kellene, hogyan helyezkedik el? Pl. A1-től lefelé egy 3000 soros összefüggő tatomány? Vagy minden második sorban?
Előzmény: Laci Laci (7337)
Laci Laci Creative Commons License 2008.06.01 0 0 7337
most már csak a szinek nem stimmeltek, ugy látszik ezt sem lehet ide rendesen beszúrni.
Előzmény: Törölt nick (7330)
Laci Laci Creative Commons License 2008.06.01 0 0 7336

Az előbb exelből másoltat szúrtam be, és ilyen hülyén kezelte, de itt van rendesen:

 

Sziasztok, leirom egyszerübben a kérdést.

 

Hogy, lehet sorba rendezni a következő számokat.

 

Sorbarendezendő számok

 1 2 3 4 5 6 7 8

 2 4 5 3 6 7 20 11

Most, ha alsó sor szerint rendezzük a felsőt: eredmény a következő. 

Tiszta sor ez nekem is megy.

1 4 2 3 5 6 8 7

 2 3 4 5 6 7 11 20

De mi van akkor, ha ugyan ezt az ededményt szeretném elérni egyetlen soron belül, méghozzá igy:

23 3 4 6 4 1 2 3 4 5 6 7 8 2 4 5 3 6 7 20 11 2 4 34

Rendezze a narancs sárga számokat a kék számok szerint. De úgy, hogy adott sorban még más adatok is vannak, itt zölddel, a sorbarendezés viszont csak bizonyos tartomány, bizonyos tartomány szerint történjen. Itt narancs sárga számok kék számok szerint. Eredmény ez lenne, zöld békénhagyva, narancs sárga számok kék szerint rendezve. 23 3 4 6 4 1 4 2 3 5 6 8 7 2 3 4 5 6 7 11 20 2 4 34

Előzmény: Törölt nick (7330)
Laci Laci Creative Commons License 2008.06.01 0 0 7335

Sziasztok, leirom egyszerübben a kérdést.

 

Hogy, lehet sorba rendezni a következő számokat.

 

Sorbarendezendő számok 1 2 3 4 5 6 7 8 2 4 5 3 6 7 20 11 Most, ha alsó sor szerint rendezzük a felsőt: eredmény a következő. Tiszta sor ez nekem is megy. 1 4 2 3 5 6 8 7 2 3 4 5 6 7 11 20 De mi van akkor, ha ugyan ezt az ededményt szeretném elérni egyetlen soron belül, méghozzá igy: 23 3 4 6 4 1 2 3 4 5 6 7 8 2 4 5 3 6 7 20 11 2 4 34 Rendezze a sárga számokat a kék számok szerint. De úgy, hogy adott sorban még más adatok is vannak, itt pirossal, a sorbarendezés viszont csak bizonyos tartomány, bizonyos tartomány szerint történjen. Itt sárga számok kék számok szerint. Eredmény ez lenne, piros békénhagyva, sárga számok kék szerint rendezve. 23 3 4 6 4 1 4 2 3 5 6 8 7 2 3 4 5 6 7 11 20 2 4 34

Előzmény: Törölt nick (7330)
Laci Laci Creative Commons License 2008.06.01 0 0 7334

Szia, köszi a válaszodat,

 

Hát, lehet, hogy erre a problémára nem gondoltak az excelben.

 

Nekem azért lenne fontos, hogy sorokra nézve tudjam ezt a sorbarakást elérni, mert előtte már bizonyos képletekkel számoltam eredményeket és ezeket kéne az előzó hozzászólásban leirtak szerint sorbatenni.

 

Oszlopokban viszont meg sem próbálnám, mert kevés oszlop van, több ezer sorban kellene ezt elvégezni, mindig az adott sorban szereplő eredményekkel.

 

Egyébként én nem igazán, vagyis egyáltalán nem ismerem hogy kell makrót késziteni.

 

A másik kérdésem esetleg, hogy egy munkalalap méretét meg lehte-e növelni.

 

Tehát ne 256 oszlop legyen, hanem annyi ,amennyit én akarok, mondjuk 3000.

 

Ja és ha tudsz, a makrokrol irhatnal valami helyet, ahol tanulhatnék róluk.

 

Köszi

 

Laci

Előzmény: ndrv (7331)
Törölt nick Creative Commons License 2008.06.01 0 0 7333
A leírásodból nem derül ki, hogy a munkalapokból miért kell elérni azt az Init szubrutint. Innen nézve úgy tűnik, hogy csak a Workbook megnyitásakor kell egyszer lefutnia, és semmi több. Ez esetben viszont a Workbook kódlapján is elhelyezheted. Akkor nem kell publikusnak lennie, és a Workbook_Open-ből mégis meg tudod hívni.
Előzmény: magyarpityu (7332)
magyarpityu Creative Commons License 2008.06.01 0 0 7332
Sziasztok! A makrókkal mostanában ismerkedek, lehet buta kérdésem van, előre is bocsánat!

A munkalap objektumban megírom az eseménykezelőket, amelyek csak azokban meghívott függvényeket használnak, ez rendben, az ilyen függvények private-ok lettek. Csakhogy, amint megnyitom a file-t, pár dolgot be kell állítani (konstruktor-szerűséggel inicializálom az objektumot), amit úgy oldottam meg, hogy egy init nevű publikus függvénybe írtam a kódot, amit a Workbook_Open eseménykezelő hív meg. Ha nem publikus lenne az init függvény, akkor nem tudnám a munkalap objektumban elérni. Mindez idáig rendben is van.

Csakhogy ennek a publikus init függvénynek a neve megjelenik az Excelben az Eszközök/Makró/Makrók... ablakban, azaz a felhasználó látja és akár el is indíthatja. Noha bajt nem okoz, ha többször is lefut, de nem elegáns, hogy olyan szubrutin neve is láthatóvá váljon, amivel a felhasználónak (nekem) nincs semmi dolgom.

Mit tehetnék, hogy ne is legyen Excel menüből látható, de objektumon kívülről is futtatható legyen az a függvény?
ndrv Creative Commons License 2008.06.01 0 0 7331
Szép feladat...:) Megróbáltam makrózni, de csak eddig jutottam:

Sub sorrend()
Range("A1:CB1").Select
Selection.Sort Key1:=Range("AO1"), _
Key2:=Range("A1"), _
Orientation:=xlLeftToRight
End Sub

Ez így azért nem jó, mert az egész sort rendezi be növekvőbe, nem a két sorrészt. A dolog azért is érdekes, mert ha ugyanezt megcsinálod két oszlopra, akkor ez a makró (átírva oszlopokra) működik. Elvileg sorra is működnie kéne, és mégse...
Előzmény: Laci Laci (7329)
Törölt nick Creative Commons License 2008.05.31 0 0 7330
Én nem értem a kérdést, de talán majd más...
Előzmény: Laci Laci (7329)
Laci Laci Creative Commons License 2008.05.31 0 0 7329

Sziasztok,

kérdésem a következő lenne:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

1 1 2 1 4 6 2 4 3 2 2 4 3 2 6 1 7 1 2 2 2 1 1 5 0 5 5 1 5 0 1 4 3 3 4 0 3 5 3 2

Kérdésem az lenne, hogy lehet sorba rendezni a fenti számokat.

Tiszta sor, adatok, sorba rendezés, rendezze sor 2, majd sor 1, mind a kettőnél emelkedő, eredmény:

25 30 36 1 2 4 16 18 22 23 28 31 3 7 10 11 14 19 20 21 40 9 13 33 34 37 38 5 8 12 32 35 24 26 27 29 38 6 15 17

0 0 0 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 6 6 7

De mi van akkor, ha ez a két adatsor egymás után egy sorban helyezkedik el. Ráadásul úgy, hogy még előtte vagy utána más adatok, vagy képletek is vannak a sorban.

Hogy tudom itt a sorba rendezést megoldani. Azt hogy rendezze emelkedő sorrendbe az AO1-től, CB1-ig terjedő számokat az A1 től AN1 ig lévő számok szerintit.

Válaszotokat előre is köszönöm

Laci

Törölt nick Creative Commons License 2008.05.31 0 0 7327
Ha a MultiSelect tulajdonság Multi vagy Extended, akkor a ListIndex helyett
ListBox1.Selected(n) = True jelzi, hogy az n-edik elem ki van-e választva.
Előzmény: Gavriel (7325)
lotht Creative Commons License 2008.05.31 0 0 7326
Upsz. Kösz. Általában az egyedi formátumokat szoktam piszkálni, ott meg nincs ilyen. De ez jó lesz így.
Előzmény: ndrv (7324)
ndrv Creative Commons License 2008.05.31 0 0 7324
Ahol beállítod a hosszú dátumformátumot, ugyanott nyelvet is tudsz választani. (Meüsor-Formátum-cellák-szám-dátum-nyelv)
Előzmény: lotht (7323)
lotht Creative Commons License 2008.05.31 0 0 7323
Jónapot.
Magyar nyelvű Excelben hogyan lehet elérni, hogy a hosszú dátumformátumban a hónapok és a napok neveit angolul jelenítse meg a program?
ndrv Creative Commons License 2008.05.31 0 0 7320
Az a helyzet, hogy különböző userformokon gyűjtögetem a makróimat, mint öreg nénik a nejlon zacsikat, és olykor-olykor szükség van arra, hogy az egyik makró elindítson egy másikat. A legkényelmesebb megoldás, hogy átírom a makrók private sub neveit sub-ra, és így nem kell új struktúrákat létrehoznom, használhatom a kis megszokott makróimat továbbra is.
Előzmény: Törölt nick (7314)
ndrv Creative Commons License 2008.05.31 0 0 7319
"Ne Private Sub-ot írj."

Remek, köszi, ez a megoldás.

:)
Előzmény: Törölt nick (7310)
Törölt nick Creative Commons License 2008.05.31 0 0 7318
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Előzmény: Gavriel (7317)
magyarpityu Creative Commons License 2008.05.31 0 0 7315
Köszi szépen, fantasztikus, milyen ötletes megoldás! Bonyolultabbnak gondoltam :))
Előzmény: Törölt nick (7313)
Törölt nick Creative Commons License 2008.05.31 0 0 7314
Szerintem nem szerencsés dolog egyik objektum eseménykezelőjéből meghívni a másikat. Inkább azt javasolnám, hogy pakold ki egy külső szubrutinba a két eseménykezelő közös részét. Nem csak tisztább dolog, de áttekinthetőbb is.

Pl
Form1-en:

Private Sub CommandButton1_Click()
....
Kozos_makro
End Sub

Sub Kozos_Makro()
...
End Sub

Form2-n
Private Sub CommandButton1_Click()
....
Form1.Kozos_makro
End Sub
Előzmény: ndrv (7309)
Törölt nick Creative Commons License 2008.05.31 0 0 7313
Valami ilyesmit kellene megpróbálnod:

Function Van_Settings As Boolean()
Dim ws As Worksheet
On Error Goto hiba
Set ws = ThisWorkbook.Sheets("Settings")
Van_Settings = True
Exit Function
hiba:
Van_Settings = False
End Function



If Van_Settings Then
...
Else
...
End If

Ez a módszer (azt hiszem) bármilyen objektumtípusnál használható. Deklarálsz egy megfelelő típusú változót, hozzárendeled az objektumot, és ha hiba van, akkor az azt jelenti, hogy az objektum nem létezik.
Előzmény: magyarpityu (7306)
Törölt nick Creative Commons License 2008.05.31 0 0 7312
ListBox1.ListIndex
Előzmény: Gavriel (7305)
Törölt nick Creative Commons License 2008.05.30 0 0 7311
Ez akkor működne, ha az eljárás modullapon van, és azt hívod meg a commandbutton mögé írt Application.Run ("Module1.EljarasNeve") kóddal
Előzmény: ndrv (7309)
Törölt nick Creative Commons License 2008.05.30 0 0 7310
Akkor ha más nem tud jobbat:

Sub CommandButton2_Click()
MsgBox "CommandButton2_Click"
UserForm2.CommandButton1_Click
End Sub

Sub CommandButton1_Click()
MsgBox "CommandButton1_Click"
End Sub

Ne Private Sub-ot írj.
Előzmény: ndrv (7309)
ndrv Creative Commons License 2008.05.30 0 0 7309
Sajnos ez nem müxik.

Az eljárás: beszúrok a vba szerkesztőbe két userformot. Ráteszek a két userformra egy-egy commandbuttont. A commandbuttonok mögé írok egy-egy makrót, amik a commandbutttonokre való ráklikkeléssel futnak le. (A programnevek a következők lesznek: Private Sub CommandButton1_Click(), mindkét userformon.) Meghívom az első userformot és ráklikkelek a commandbuttonre. Azt szeretném, ha az első makró lefutása után induljon el a másik userformon lévő commandbutton mögé írt makró is.
Előzmény: Törölt nick (7308)
Törölt nick Creative Commons License 2008.05.30 0 0 7308
Application.Run ("Module1.EljarasNeve")
ha erre gondolsz
Előzmény: ndrv (7307)
ndrv Creative Commons License 2008.05.30 0 0 7307
Sziasztok!

A következő dolgot nem tudom megoldani és ezért kérném a segítségeteket: van két userform, mindegyiken egy-egy command button, mögöttük egy-egy program. Hogyan lehet elindítani az egyik programból a másikat?

magyarpityu Creative Commons License 2008.05.30 0 0 7306

Köszi a segítséget!

 

Megint belefutottam egy problémába. Lényegében az a kérdésem, hogy egy nemlétező objektumot hogyan tudok úgy lekezelni, hogy ne hibaüzenettel álljon le a makró (azaz el sem indul, kidob egy "Variable not defined" üzenettel).

 

Leírom, mit csináltam, hátha így könnyebben kiderül, mit szeretnék és hol rontottam el. Egy (elég nagy) adathalmazt kimásolok az "Analysis" nevű munkalapra. Makrók segítségével ezekből ilyen-olyan számítások után elkészülnek az adatlapok. Eddig minden ok, a számításokhoz szükséges beállítások (számok és logikai értékek) is a makró modulban voltak. Gondoltam egy nagyot, és a beállítási adatokból készítettem egy Excel Objectet, mégpedig úgy, hogy létrehoztam egy "Settings" munkalapot, ezen állítgatom be az értékeket, majd publikus függvényekkel lekérdezem az egyes cellák értékét, amit majd a makróból hívok meg. A publikus lekérdező függvények ott vannak, ahol az eseménykezelő is, így ezek az objektum függvénymezői lettek. Innentől a makró a beállításokat nem a makróból veszi, hanem a direkt erre a célra létrehozott munkalap publikus függvényeivel éri el. Minden jól működik. Azám, de mi van, ha kitöli valaki ezt a lapot? Akkor is működni kellene a makrónak, csak akkor maradnának a makróban definiált alapértelmezett beállítások. Ezt csináltam:

 

If Settings Is Nothing Then

   ...

Else

   ...

End If

 

A "Settings" név nem a munkalap neve, hanem a "Munka8" alapértelemezett nevet írtam át, hogy ez az object neve legyen. Ha kitörlöm ezt a munkalapot, akkor a nemlétező Settings munkalap esetén jön a "Variable not defined" üzenet.

 

Előre is köszi!

Előzmény: Törölt nick (7303)
Törölt nick Creative Commons License 2008.05.30 0 0 7304

1. http://vbaexpress.com/forum/
2. http://www.cpearson.com/excel/MainPage.aspx
3. http://www.ozgrid.com/VBA/
4. Ez egy Microsoft oldal, talán az MSDN-en valahol, de most sehogy se találom
5. még kiadó :)


Na megvan a negyedik is. Nagyon hasznos, bár sok helyen szóról szóra egyezik a Help-pel.

http://msdn.microsoft.com/en-us/library/bb190882(office.11).aspx
Előzmény: Törölt nick (7293)
Törölt nick Creative Commons License 2008.05.30 0 0 7303
Talán tudod használni:

A B oszlop bármely cellájának megváltozását az alábbi módon a legegyszerűbb kimutatni:

If Not Intersect(Target, Range("B:B")) Is Nothing Then MsgBox "a változó tartomány átfed a B oszloppal."
Előzmény: magyarpityu (7302)
magyarpityu Creative Commons License 2008.05.30 0 0 7302

Köszi szépen a figyelmeztetést! Valami ilyesmi lesz ha kész lesz:

 

 

Private Sub Worksheet_Change(ByVal Target As Range)

 

Dim ActCell As Range

For Each ActCell In Target
   If ActCell.Column = 2 Then
      Select Case ActCell.Row
      Case 2
         ...
      Case 3

         ...

      Case Else

         ...

      End Select
   End If
Next

 

End Sub

 

 

Vagyis a második oszlop bármelyik cellájának változásakor újraszámolódik a munkalap.

Előzmény: Törölt nick (7301)
Törölt nick Creative Commons License 2008.05.30 0 0 7301
A Target nevű, Range típusú változó tartalmazza azt a tartományt, ami megváltozott.
Ez lehet többcellás is egyszerre, pl akkor, amikor sok kijelölt cella tartalmát törlöd egyszerre a DEL gombbal.

Arra figyelj, hogy ha az eseménykezelőn belül megváltoztatod a Target cella/tartomány tartalmát, akkor az eseménykezelő meghívja önmagát, és végtelen ciklusba kerülsz.
Előzmény: magyarpityu (7299)
magyarpityu Creative Commons License 2008.05.30 0 0 7300
Na jó, többet nem kapkodok, bocsánat. Szóval maga az eseménykezelő visszaadja ezt a Target változóban. Máskor mielőtt beírok, vagy félórát várok, hátha rájövök magamtól is és nem szemetelek ide...
Előzmény: magyarpityu (7299)
magyarpityu Creative Commons License 2008.05.30 0 0 7299

Sziasztok! Egy munkalap Worksheet_Change eseményét szeretném programozni, és le szereném kérdezni, melyik cella (régió?) megváltozása okozta az eseménykezelő meghívását. Ha az ActiveCell.Address éréket lekérdezem, akkor nem azt a cellát adja vissza, ami megváltozott, hanem ahová a megváltozás után ugrott, azaz enter leütés után a cella alatti cella címét, ha meg egérrel kattintok ki a cellából, akkor akár jó messze is lehetek a változás helyétől. Köszi előre is a segítséget!

Törölt nick Creative Commons License 2008.05.30 0 0 7297
"12/1/1999. Ezt adja vissza."
Milyen év, hónap és nap beállítása esetén adja ezt vissza?

"(nem magyar dátum rendszer szerint dolgozom.!)"
Ezt még korai volt közölni, ráért volna azután is, ha már két napot foglalkoztunk a kérdéssel. Sőt, egyéb részleteket sem kell leírnod, hadd találjuk ki őket félmondatokból. Ettől kihívás.
:P
Előzmény: Gavriel (7296)
Törölt nick Creative Commons License 2008.05.29 0 0 7295
Dehát a Calendar értéke a kijelölt naptól is függ...
Ha csak hónapot vagy évet váltasz, azzal a kijelölt nap nem változik.
De talán így:

Private Sub Calendar1_NewMonth()
MsgBox DateSerial(Calendar1.Year, Calendar1.Month, 1)
End Sub

Ez az választott év és hónap elsejének megfelelő dátumértéket adja vissza.
Előzmény: Gavriel (7294)
Törölt nick Creative Commons License 2008.05.29 0 0 7293
1. http://vbaexpress.com/forum/
2. http://www.cpearson.com/excel/MainPage.aspx
3. http://www.ozgrid.com/VBA/
4. Ez egy Microsoft oldal, talán az MSDN-en valahol, de most sehogy se találom
5. még kiadó :)
Előzmény: Törölt nick (7286)
Törölt nick Creative Commons License 2008.05.29 0 0 7292
Ez mit jelent?
Előzmény: Gavriel (7290)
Törölt nick Creative Commons License 2008.05.29 0 0 7291
Felhívnám a figyelmedet a két pirossal karikázott mezőre, amelyek segítségével nagyon egyszerűen ki lehet deríteni, hogy egy-egy objektumnak milyen eseményei vannak.
Előzmény: Gavriel (7289)
Törölt nick Creative Commons License 2008.05.29 0 0 7288
Private Sub Calendar1_NewMonth()

End Sub

Private Sub Calendar1_NewYear()

End Sub
Előzmény: Gavriel (7287)
Törölt nick Creative Commons License 2008.05.29 0 0 7286
Mi van még abban a Top5-ben nálad?
Előzmény: Törölt nick (7280)
magyarpityu Creative Commons License 2008.05.29 0 0 7285
Bocsánat, megvan, nem volt türelmem keresni, szóval: Munkalap.AutoFilterMode
Előzmény: magyarpityu (7284)
magyarpityu Creative Commons License 2008.05.29 0 0 7284
Köszi szépen! Megint van egy problémám. Honnan tudom lekérdezni, hogy egy munkalapon be van-e  kapcsolva az AutoFilter? Illetve ha én akarom makróból beállítani, akkor a Munkalap.Rows("1:1").AutoFilter ki-be kapcsolgatja a szűrőt, pont mintha menüből ki-be kapcsolgatnám, azaz ha volt szűrő, akkor kikapcsolja, ha éppen nem volt, akkor meg bekapcsolja. Tudni szeretném, a kérdéses lapon van-e szűrő, ha igen, akkor kikapcsolom azt és olyat állítok be, amilyen kell, ha nincs, akkor értelemszerűen olyat állítok, amilyen kell. Köszi előre is!
Előzmény: Törölt nick (7283)
Törölt nick Creative Commons License 2008.05.29 0 0 7283
Ja, a másik kérdés. Nem biztos, hogy jobb megoldás, de bizonyos esetekben alkalmazható a "kikommentezendő" rész átugrása, a vezérlés eltérítése, pl. GoTo valami, vagy Exit Sub, vagy hasonlók által.
Előzmény: Törölt nick (7282)
Törölt nick Creative Commons License 2008.05.29 0 0 7282
Nem biztos, hogy ez mérvadó, de én még nem láttam ilyesmit.
Előzmény: magyarpityu (7281)
magyarpityu Creative Commons License 2008.05.29 0 0 7281

Sziasztok!

 

Azt szeretném kérdezni, hogy makróban több soros kommentet hogyan lehetne a legegyszerűbben megoldani? Arra gondolok, van-e olyan, mint az assemby-ben a comment <syb> - <syb> páros, vagy a /* - */ C-ben és java-ben? Adott esetben nem kényelmes egy szakasz minden sora elé beírkálni a '-jelet. Esetleg van jobb megoldás?

Törölt nick Creative Commons License 2008.05.29 0 0 7280
"De elsősorban: A VBA beépítetthelp-je nagyon jó szrtem."

Csatlakozom. No meg a makrórögzítő. Én ha ha nem tudom, hogyan kell egy bizonyos dolgot Excelben leprogramozni, először mindig a makrórögzítővel próbálkozom, hogy legalább az alapvető dolgokkal tisztában legyek. Kezdőknek mindenképpen ajánlott.
És az internet is kimeríthetetlen tudásforrás. Van legalább 8-10, esetleg több olyan fórum a neten, ahol elképesztően nagytudású Excel-guruk (is) osztják az észt.

Aztán van olyan is, ami nem fórum ugyan, de a fórumokon forrásként hivatkoznak rá. A Top5 egyike:
http://www.cpearson.com/excel/MainPage.aspx

Angolul persze tudni kell hozzá, de az általában nem árt, ha az ember programozásra adja a fejét, mivel a súgó leggyakrabban angol nyelvű.

Könyvet sajnos nem tudam volnam mondani, mert sosem használtam erre a célra. Köszönöm Robbantómesternek, hogy kisegített a válaszadással.
Előzmény: Törölt nick (7279)
Törölt nick Creative Commons License 2008.05.28 0 0 7279
Kovalcsik Géza: Az Excel Programozása
Dr. Álló Géza: Táblázatkezelés felsőfokon (Gazdasági Informatika)

Mindegyik makróprogramozásról szól.

De elsősorban: A VBA beépítetthelp-je nagyon jó szrtem.
Előzmény: v-m (7278)
v-m Creative Commons License 2008.05.28 0 0 7278
Szia,
Nagyon köszönöm, tökéletesen érthető a leírásod. Köszönöm a segítséget is.
(még egy apró kérdés: esetleg nem tudsz, tudtok szakkönyvet amit érdemes lenne megvenni, amiből tudnék tanulni? Pl. ezt vagy a makrókat...)
Előzmény: Törölt nick (7274)
v-m Creative Commons License 2008.05.28 0 0 7277
Igen, köszi, megtettem amint láttam a tagtárs észrevételét. Jó ez a több szem többet lát effektus. :)
Előzmény: magyarpityu (7276)
magyarpityu Creative Commons License 2008.05.28 0 0 7276

Igazad van, köszi! Javítom a makróimat, ahol ez gondot okozhat! :)))

 

v-m

 

Te is cseréld ki a SorokSzama és az i típusát, ha előfordulhat 32767-nél több sor, mert ilyenkor a .Count nullát ad vissza (azaz túlcsorduláskor 0 lesz az értéke). Legyen tehát így:

 

Dim SorokSzama As Long, i As Long

Előzmény: Gavriel (7271)
magyarpityu Creative Commons License 2008.05.28 0 0 7275

Szia!

 

Egyetlen apró hiba van, egy pont :)))

 

helyes_bruttoertek = "=E" & i & "*1,2"

 

helyett:

 

helyes_bruttoertek = "=E" & i & "*1.2"

 

Tehát makróban a tizedest mindig a '.' jelzi területi beállítástól függetlenül. Ezt én is itt a fórumon tanultan Jimmy-től. Ezért képeltbe a 20% áfát 1.2-nek kell írni, de amint majd látod, a cellába már az 1,2 fog kerülni :)

Előzmény: v-m (7270)
Törölt nick Creative Commons License 2008.05.28 0 0 7274
Úgy kell érteni, hogy ez egy esemény-kezelő rutin.
Mostanában a programozásban általános, hogy a különféle objektumoknak vannak eseményei, amiket a rendszer figyel, és ha valamelyik esemény bekövetkezik, a hozzárendelt kód automatikusan lefut.

A legegyszerűbb példa a nyomógomb, és annak "OnClick", vagyis "Kattintásra" eseménye. Ez - értelemszerűen - akkor hajtódik végre, amikor a felhsználó a gombra kattint.
De van a gombnak olyan eseménye is, hogy pl. "MouseMove". Ez akkor következik be, amikor a felhasználó úgy mozgatja az egérmutatót, hogy az a gomb fölött bármekkora távolságot megtesz.
Vagy egy másik példa: egy programban különféle beviteli mezőket kell kitölteni, és amikor az egyikbe beírsz egy adatot, és továbblépsz a másikra, az első utánad szól, hogy rossz adatot vittél be. Ez úgy történik, hogy a beviteli mezőnek van egy "OnExit" azaz "Kilépésre" eseménye, ami akkor következik be, amikor a kurzor elhagyja azt a mezőt. A programozó ezt az eseményt arra használta fel, hogy megvizsgálja az éppen bevitt adatot, és ha az nem érvényes, figyelmeztetést küldjöna felhasználó felé.

A különféle események lekezelése lehetőséget ad a programozónak, hogy a programot minél interaktívabbra tervezze, és minél jobban kézben tartsa a különböző eshetőségeket.

A munkalap is egy objektum, amelyet úgy terveztek meg, hogy számos lehetséges, és külön-külön lekezelhető esemény tartozik hozzá.

A munkalap eseményei között van olyan, hogy OnChange, vagyis kb. "Változásra". Ezt hasnáltam fel én is. Ez akkor hatódik végre, amikor a munkalapon bármelyik cella tartalma megváltozik. Ezzel a felhasználónak nem kell törődni. A rendszer maga figyeli, hogy az esemény bekövetkezik-e, és amikor bekövetkezik, a hozzá rendelt kódot lefuttatja. Tehát a kód, amit írtam, és az eseménykezelő rutinok általában, nem futnak a háttérben állandóan, viszont az objektumok eseményfigyelői igen, és ezek hívják meg az eseménykezelő rutinokat, de csak amikor szükség van rá.

A kódot, amit írtam, a munkalap kódlapján kell elhelyezni. A Visual Basic szerkesztő bal felső rszén duplán kattintasz a kívánt munkalapra, és a jobb oldalon kinyíló kódlapra bemásolod a kódot. Onnatól kezdve az adott munkalap bármely cellájának megváltozásakor a rutin le fog futni.


Előzmény: v-m (7273)
v-m Creative Commons License 2008.05.27 0 0 7273
Magyarpityu megoldásához képest annyi az előnye, hogy automatikusan működik, meg kicsit rövidebb.


Ezt nem értem, ne haragudj. Automatikusan működik? Vagyis meghívom a makrót és onnantól kezdve kilépésig fut? Vagy hogyan kell ezt érteni?
Köszi!
Előzmény: Törölt nick (7269)
v-m Creative Commons License 2008.05.27 0 0 7272
Hmhmmm... Köszi az észrevételt!
(azért, mert ez volt az eredeti példában)
Előzmény: Gavriel (7271)
v-m Creative Commons License 2008.05.27 0 0 7270
Szia,

Köszönöm szépen, működik; sőt, tovább is akartam gondolni.
Ha van egy perc időd, megnéznéd, hogy szerinted ez hol hasal el?

Const Db As Integer = 1 'A oszlop
Const Megnevezes As Integer = 2 'B oszlop
Const Egysegar As Integer = 4 'D oszlop
Const Nettoertek As Integer = 5 'E oszlop
Const Bruttoertek As Integer = 6 'F oszlop

Dim SorokSzama As Integer
SorokSzama = Termekek.Columns(Megnevezes).SpecialCells(xlCellTypeConstants).Count + 3

Dim i As Integer
Dim helyes_nettoertek As String
Dim helyes_bruttoertek As String

For i = 6 To SorokSzama
helyes_nettoertek = "=A" & i & "*D" & i
helyes_bruttoertek = "=E" & i & "*1,2"
If (Termekek.Cells(i, Db).Formula = "") Then Termekek.Cells(i, Db).Formula = 0
Termekek.Cells(i, Nettoertek).Formula = helyes_nettoertek
Termekek.Cells(i, Bruttoertek).Formula = helyes_bruttoertek
Next i


A cél ugye az, hogy ha felvesz az user egy új terméket, akkor beírja a megfelelő képleteket, illetve ha nem vett még fel mennyiséget, akkor beír egy 0-t. A nullák és a nettók működnek, a bruttó oszlophoz hozzá sem nyúl.
Előzmény: magyarpityu (7266)
Törölt nick Creative Commons License 2008.05.27 0 0 7269
Egy igazán robusztus megoldáshoz tudni kellene, hogy az A oszlopban hogyan helyezkednek el a rendelésüsszegek. Pl. A2-től lefele, vagy A10-től A19-ig, aztán egy sor kimarad, aztán A21-től A31-ig, stb.

A másik kérdés, hogy az A oszlopba beírt értéket hogyan, tehát milyen algoritmus szerint kell szétosztani a C, D, vagy E oszlopok között?

Feltételezve, hogy A2-től lefelé, összefüggő az adatsor, továbbá feltételezve, hogy az A-ba írt értéket egy az egyben az E oszlopba kell beírni, az én megoldásom kb. így néz ki:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ValidTarget As Range
Set ValidTarget = Range("A2", Range("A" & Rows.Count).End(xlUp))
If Not Intersect(Target, ValidTarget) Is Nothing Then
Application.EnableEvents = False
Target.Offset(, 4) = Target
Target.Formula = "=SUM(" & Target.Offset(, 2).Resize(, 3).Address & ")"
Application.EnableEvents = True
End If
End Sub

Magyarpityu megoldásához képest annyi az előnye, hogy automatikusan működik, meg kicsit rövidebb.
Előzmény: v-m (7265)
Törölt nick Creative Commons License 2008.05.27 0 0 7267
Próbáld ki ezt:
Private Sub UserForm_Layout()
Me.Hide
Me.Show
End Sub

Előzmény: Gavriel (7264)
magyarpityu Creative Commons License 2008.05.26 0 0 7266
Option Explicit

Sub Javitas()

On Error Resume Next

Const MunkalapNev As String = "Termékek"

Dim Termekek As Worksheet
Set Termekek = Worksheets(MunkalapNev)
If Err.Number > 0 Then
MsgBox "Nincs " & Chr(34) & MunkalapNev & Chr(34) & " nevű munkalap!"
Exit Sub
End If

Const OsszesRendeles As Integer = 1 'A oszlop
Const Megnevezes As Integer = 2 'B oszlop
Const Bolt1 As Integer = 3 'C oszlop
Const Bolt2 As Integer = 4 'D oszlop
Const Bolt3 As Integer = 5 'E oszlop

Dim SorokSzama As Integer
SorokSzama=Termekek.Columns(Megnevezes).SpecialCells(xlCellTypeConstants).Count

Dim i As Integer
Dim Sum As String

For i = 2 To SorokSzama
Sum = "=SUM(C" & i & ":E" & i & ")"
If Not (Termekek.Cells(i, OsszesRendeles).Formula = Sum) Then
Termekek.Cells(i, Bolt3) = Termekek.Cells(i, OsszesRendeles).Value
Termekek.Cells(i, OsszesRendeles).Formula = Sum
End If
Next i

End Sub

****

Tehát a "Termékek" munkalap oszlopait kell javítani. Ha egy sorban az összes rendelés oszlopában (ez az A oszlop) nem a 'szum(Cx:Ex)' képlet van, akkor az ott talált számot beírja az adott sor E oszlopába, majd az A oszlopba beírja a szum(Cx:Ex) képletet. Első közelítésre ennyi, lehet még finomítani, hogyan ossza szét a terméket a boltok között, stb.
Előzmény: v-m (7265)
v-m Creative Commons License 2008.05.26 0 0 7265
Sziasztok!
Egy érdekes kérdéssel állok szemben:
Van egy táblám, kb. így néz ki:
B oszlop: termék neve; C oszlop: 1-es bolt rendelése ebből a termékből, D: 2-es bolt rendelése, E: 3-asé, stb.; A oszlop: szum(Cx:Ex).
Felmerült az igény, hogy ne kelljen mindig a c, d, e... oszlopokba "elsétálni", és beírni a mennyiségeket, engedjük, hogy az A-ba is beírja, és majd szétosztják a boltok között ahogy akarják.
Ez így rendben is van, viszont ha egyszer valaki beleír az A oszlopba, akkor ugye tönkre teszi az eredetileg beírt képletet.
Úgy gondoltam, hogy talán lehetne rögzíteni egy makrót, ami megnézné az A oszlopot, és ahová be van írva rendelés, azt fogná, és ugyanannak a sornak beírná pl. az E oszlopába, a helyére pedig visszaírná a szum (Cx:Ex) képletet.
Szerintetek? Az elmélet megvan, de a gyakorlattal elhaltam, sajnos nem tudom, hogyan lehetne megvalósítani.
Nagyon köszönök minden segítséget!
Törölt nick Creative Commons License 2008.05.26 0 0 7263

 

Közben megoldódott, de gondoltam, hátha valakinek hasznos lehet...

 

 

Sub Rögzítés1()
Dim word As Object
    
  Set word = CreateObject("Word.application")
  
  With word
    .Visible = True
    .Documents.Open "C:próba.doc"
    .ActiveDocument.Tables(1).Range.Select

    .Selection.Copy
  End With

  

  Workbooks("teszt1.xls").Worksheets("Munka1").Activate
 

  ActiveSheet.PasteSpecial Format:="Szöveg", Link:=False, DisplayAsIcon:=False

 

End Sub

Előzmény: Törölt nick (7262)
Törölt nick Creative Commons License 2008.05.26 0 0 7262

Sziasztok!

Segítséget szeretnék kérni excelből makróval történő word *.doc megnyitása, és az abban található táblázat excelbe történő átmásolásában. Ez utóbbi nem megy, itt akadtam el.

Sub Rögzítés1()
Dim word As Object
    
  Set word = CreateObject("Word.application")
  
  With word
    '.Visible = True
    .Documents.Open "C:próba.doc"
    .ActiveDocument.Tables(1).Range.Select
  End With

  Selection.Copy
  Workbooks("teszt1.xls").Worksheets("Munka1").Activate
 

 ' itt akad ki ActiveSheet.PasteSpecial Format:="Szöveg", Link:=False, DisplayAsIcon:=False

 

End Sub

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

Törölt nick Creative Commons License 2008.05.22 0 0 7261
Egyelőre csak az első mondatodhoz van erőm választ írni: Azt mindig lekezelem, ha nem a megfelelő cella az aktív.
Ha debugban léptetem tovább kiakadás után, nyilván benne rejlik az a hibalehetőség, amit írsz - erre odafigyelek.
A program olvashatóságát viszont valóban rontja - na de mit tudsz használni helyette, mivel tudod "pótolni". Én azt hiszem, nehezen tudnám nélkülözni. Nem tudok rutinszerűen mást kitalálni, inkább viselem a következményeit. Egyelőre. Amíg el nem sajátítom, hogy kerüljem ki a használatát.
Előzmény: Törölt nick (7259)
Törölt nick Creative Commons License 2008.05.22 0 0 7260
Ó, köszi a bizalmat :)

A bejárási sorrendet a form tervező felületén lehet beállítani. Jobb gomb a formon, és Tab Order. (Ezt Delilától tanultam nem olyan rég.)

A Tab elvileg ugyanúgy kiváltja az AfterUpdate eseményt, mint az Enter, feltéve, hogy a textbox tartalma megváltozott. Ha mindig ugyanaz az érték van benne, akkor sem Enter, sem Tab után nem lesz AfterUpdate

Ha pedig bejárási sorrendtől függetlenül akarsz egy bizonyos vezérlőre lépni, akkor (pl. textbox exetén)
TextBox2.SetFocus
Előzmény: Törölt nick (7258)
Törölt nick Creative Commons License 2008.05.22 0 0 7259
Azért, mert bizonytalan. Nem tudhatod, hogy mi lesz az aktív cella, amikor a programodat indítod. Nem biztos, hogy mindig eszedbe jut kijelölni a megfelelő cellát, mielőtt egy szubrutint elindítasz, és ha rossz helyről indítod, esetleg totál elbarmolja a táblázatodat. Aztán visszavonni meg nem lehet
Vagy ha a programod tesztelés közben hibával megáll, és belépsz a debug üzemmódba. Sorról-sorra, lépésenként futtatod a programot, és közben vissza-visszanézel a táblázatra, hogy lásd, mi történik. Egyszer véletlenül belekattintasz, és megváltoztatod az aktív cella helyét. Vagy átkapcsolsz egy másik munkalapra, hogy ellenőrizz valamit, és elfelejtesz visszakapcsolni. Onnatól kezdve a programod rosszul megy tovább.

Vagy tegyük fel pl. hogy van egy ilyen felépítésű programod:

Sub szubrutin1()
Do
'mindenféle műveletek cellákkal
If Activecell.Value = "" Then szubrutin2
If Activecell.Value = "1" Then Exit Do
ActiveCell.Offset(1).Activate
Loop
End Sub

Sub szubrutin2
Darab = Inputbox("Hány cellát töltsek fel?")
For I=49 To 49+Darab-1
ActiveCell= Chr(i)
ActiveCell.Offset(,1).Activate
Next
End Sub

Jól látható, hogy mindkét szubrutinban az értékkel feltöltendő cellát aktiválással jelöltem ki. Namost, a második szubrutinban van egy bizonytalan tényező: a felhasználó. A felhasználótól függ, hogy hány cellával megy jobbra az aktív cella a szubrutin futása során. És amikor a vezérlés visszatér a szubrutin1-be, mi történik?

És a felhasználó nem az egyetlen, aki előre nem tudható információt adhat át a programnak. Így az aktív cella összevissza bolyonghat, és csak nagy kínok árán lehet nyomon követni, hogy éppen hol kell tartózkodnia.

Persze, ha valaki zseni és elég kitartó, akkor az aktív cellával is lehet operálni hosszútávon is. De rengeteg hibalehetőséget rejt magában, mert ha valahol elfelejted oda tenni az aktív cellát, ahol a következő szubrutin várja, akkor kiakad a programod, és keresheted, hogy miért.

Emellett a program olvashatóságának sem tesz jót.
Írsz egy programot, amiben nagy kínok árán végigköveted, hogy mikor, milyen művelet után hová kerül az aktív cella, és mindig jó helyre teszed, hogy rendben lefusson. Félév múlva előveszed újra a programot, mert kicsit módosítani kellene rajta... és rájössz, hogy fogalmad sincs már, hogyan működik. Mikor hol az aktív cella, és hogyan kellene beavatkozni, hogy azt csinálja, amit szeretnél.

Na de ennyi hegyibeszéd elég is. Lehet, hogy saját bőrödön kell megtapasztalnod a hátrányait, hogy elhidd nekem ;)
Előzmény: Törölt nick (7257)
Törölt nick Creative Commons License 2008.05.22 0 0 7258
Talán SendKey-el küldessz neki TAB-okat.
De majd Jimmy, ő ért is hozzá. Erre én is kiv. vagyok.
Előzmény: Gavriel (7256)
Törölt nick Creative Commons License 2008.05.22 0 0 7257
Persze. A negatív kritikából lehet a legtöbbet tanulni.
Tényleg sokat használom...
Miért nem megbízható? És ha jól használja valaki?
Előzmény: Törölt nick (7254)
Törölt nick Creative Commons License 2008.05.22 0 0 7255
hát csináltam egy félmegoldást, mint lelkes amatőr.

Private Sub TextBox1_AfterUpdate()
ActiveCell.Value = TextBox1.Value
ActiveCell.Offset(1, 0).Activate
Application.SendKeys ("+{TAB}")
End Sub

És ráraktam a forma egy parancsgombot, onnan vissza ugrik SendKey segítségével.
nem vagyok rá büszke, csak gondoltam tanulhatok más kritikájából - ha lesz.
Előzmény: Gavriel (7253)
Törölt nick Creative Commons License 2008.05.22 0 0 7254
Kötözködhetek?
Azt figyeltem meg, hogy gyakran operálsz az ActiveCell-lel.
Ez nem valami megbízható dolog...
Előzmény: Törölt nick (7252)
Törölt nick Creative Commons License 2008.05.22 0 0 7252
Az a helyzet hogy én csináltam már hasonlót régebben, és azon a formon volt pár dolog még, és azt írtam át, a többit meg nem takarítottam le
Előzmény: Törölt nick (7248)
Törölt nick Creative Commons License 2008.05.22 0 0 7251
Igen, ez határozottan jó :)
Nem is tudom, minek kevertem bele a ControlSource-t. Talán mert a kérdésben is benne volt...?
Előzmény: Törölt nick (7245)
Törölt nick Creative Commons License 2008.05.22 0 0 7250
"de csak akkor ha van egy következő eszköz a formon amire tovább tud ugrani."

Ja, akkor értem :)
Előzmény: Törölt nick (7247)
Törölt nick Creative Commons License 2008.05.22 0 0 7248
Robbantómester, a textboxod formon van?
Nekem igen, és az Enter lenyomása nem váltja ki az AfterUpdate eseményt, és így nem is történik semmi.... Neked hogyan műxik?
Előzmény: Törölt nick (7245)
Törölt nick Creative Commons License 2008.05.22 0 0 7247
Müxik.. de csak akkor ha van egy következő eszköz a formon amire tovább tud ugrani.
Ez nem tudom miért van
Előzmény: Törölt nick (7245)
BySzk a Creative Commons License 2008.05.22 0 0 7246
Húhh. Ezt fel kell dolgoznom, tényleg nem olyan egyszerű :)

Köszönöm szépen, ez nagyon jó. Mondjuk már nekiláttam az előzővel megodani a feladatot és már majdnem kész is, de szerintem megéri átirni. Mégegyszer köszönöm.
Előzmény: Törölt nick (7236)
Törölt nick Creative Commons License 2008.05.22 0 0 7245
Nem okoskodni akarok, tényleg, de pl:
Private Sub TextBox1_AfterUpdate()
ActiveCell.Value = TextBox1.Value
ActiveCell.Offset(1, 0).Activate
End Sub

Ez müxik nekem
Előzmény: Törölt nick (7243)
Törölt nick Creative Commons License 2008.05.22 0 0 7243
pedig annyira egyszerűnek tűnik...
Előzmény: Törölt nick (7241)
Törölt nick Creative Commons License 2008.05.22 0 0 7242
pl.
lehet erre vagy csak kíváncsi
ActiveCell.Offset(1, 0).Activate
Előzmény: Törölt nick (7239)
Törölt nick Creative Commons License 2008.05.22 0 0 7241
Sztem ez nem olyan egyszerű...

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim sor As Long, pos As Long, CS As String
If KeyCode = 13 Then
CS = TextBox1.ControlSource
Range(CS) = TextBox1.Text
pos = InStrRev(CS, "$")
sor = Mid(CS, pos + 1)
TextBox1.ControlSource = Left(CS, pos) & sor + 1
TextBox1.Text = ""
End If
End Sub

Ajánlott a textbox controlsource tulajdonságát "$A$1" (tehát nem "A1") formában megadni.
Előzmény: Gavriel (7237)
Törölt nick Creative Commons License 2008.05.22 0 0 7239
Van a TextBox-nak egy AfterUpdate() eseménye, abban kell megírni.
Előzmény: Gavriel (7237)
Törölt nick Creative Commons License 2008.05.22 0 0 7238
Ez jó, ebből lehet tanulni pár dolgot.
Előzmény: Törölt nick (7236)
Törölt nick Creative Commons License 2008.05.22 0 0 7236
Na, hát úgy látom, nem kapkodták el a feladatot.
Összeütöttem egy formot.
Letöltés
Csomagold ki, tedd be a két fájlt valahová, aztán Excel VB Editorban importáld a formot. Aztán írj egy Sub-ot, ami megjeleníti a formot, a többi már magától értetődő lesz.

Ja, a letöltéshez jelszót is állítottam be, amely a következő:
byszka
Előzmény: BySzk a (7234)
Törölt nick Creative Commons License 2008.05.22 0 0 7235
Bíztam kicsit abban, hogy a második kell, mert az viszonylag egyszerű. Nagyjából ennyi:

Dim S As Variant
S = Application.GetOpenFilename
If S = False Then
MsgBox "Tényleg? Mégse? Hát jó."
Else
MsgBox "A kiválasztott fájl: " & S
End If

Az első viszont keményebb dió, most nem érek rá megtörni. Majd délután v. este, ha addig senki teszi meg helyettem.
Előzmény: BySzk a (7234)
BySzk a Creative Commons License 2008.05.22 0 0 7234
Igazából jelen helyzetben az 1. megoldásra lenne szükségem, de mellékesen érdekelne a 2. is.
Előzmény: Törölt nick (7233)
Törölt nick Creative Commons License 2008.05.22 0 0 7233
Van olyan lehetőség, hogy pl. a program megkeresni egy mappában az összes (valamilyen feltételnek eleget tevő) xls fájlt, és azt a formon, pl. egy listboxban kilistázza. (1.ábra)

Vagy van olyan is, hogy egy Fájl-megnyitás szerű ablakban, tallózva lehet kiválasztani a megfelelő munkafüzetet. (2. ábra)

Tetszik valamelyik? Esetleg más elképzelésed van?


Előzmény: BySzk a (7231)
BySzk a Creative Commons License 2008.05.22 0 0 7232
Egy kis kiegészítés. Konrétan arra lenne szükségem, hogy a felhasználó kiválaszt egy tetszőleges .xls-t és annak az elérési útvonala lenne pl. az "eleres" változó. Ezzel a változóval tudnék fgv-t létrehozni.
Előzmény: BySzk a (7231)
BySzk a Creative Commons License 2008.05.22 0 0 7231
Van egy táblázatom amiben termékek vannak. Jelenleg van egy makro ami bizonyos feltételek (amit a felhasználó a form-on beállít) szétválogatja külön munkalapokra a termékeket és amikor végzett a válogatással elmenti a fájlt az aktuális dátum néven. S azt szeretném ha a válogatás közben bizonyos feltételek szerint összehasonlítana. Ehhez kellene, hogy ki lehessen választani melyik régi fájlt szeretném összehasonlítani a jelenlegivel.
Előzmény: Törölt nick (7230)
Törölt nick Creative Commons License 2008.05.22 0 0 7230
Van egy pár lehetőség fájlok kiválasztására, és nem biztos, hogy szükséged van formra. Tulajdonképpen mit szeretnél elérni?
Előzmény: BySzk a (7229)
BySzk a Creative Commons License 2008.05.22 0 0 7229
Sziasztok!

Ismét lenne egy kérdésem. Milyen megoldást tudnátok javasolni arra, hogy egy xls. fájlt szeretnék kijelölni form segítségével. Sajnos nem találtam olyan vezérlőt amivel akár csak egy adott mappában lehetne tallózni a gépen.
Ha létezik egyáltalán valami megoldás erre....

Delila_1 Creative Commons License 2008.05.21 0 0 7228
Kimutatás Itt a kép a kimutatás elkészítéséhez.
Előzmény: Delila_1 (7227)
Delila_1 Creative Commons License 2008.05.21 0 0 7227

Ez egy síma SZUMHA függvénnyel megoldható.

 

=SZUMHA(A:B;A1;B:B), ezt kell végig másolni,

 

de kimutatással (Pivot table) látványosabb az eredmény, mert a fentivel a példád szerinti adatok között az A, C és D kétszer is szerepel.

 

Előzmény: ==ALARM== (7226)
==ALARM== Creative Commons License 2008.05.21 0 0 7226
A fórum valamiért a betük és a számok közötti szóközt kivette. De a betük az előben, a számok a 2. oszlopban vannak.
==ALARM== Creative Commons License 2008.05.21 0 0 7225
SZiasztok. Lenne egy excel problémám, amit nem is neveznék problémának, inkább feladatnak.
Van 2 táblánk.....

De konkretizálom....

1. Tábla
Oszlop1 Oszlop2
C 1
D 5
A 7
A 7
C 3
B 6
D 8
........ (Akár a végtelenig)

2. Tábla (az eredmélytábla)
Oszlop1 Oszlop2
A SumA (Tehát az első tábla azon értékei összesítve ahol "A" van)
B SumB (Tehát az első tábla azon értékei összesítve ahol "B" van)
C SumC (Tehát az első tábla azon értékei összesítve ahol "C" van)
D SumD (Tehát az első tábla azon értékei összesítve ahol "D" van)

KÉRDÉS: Mi a 2. Tábla 2. Oszlopának sorainak képlete?????

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