Keresés

Részletes keresés

wawabagus Creative Commons License 2010.10.21 0 0 13061

Szia!

Végig gondoltam és arra jutottam hogy nem generál ilyen jellegű hibát, mert:

 

1. A felhasználó elindítja a makró munkafüzetből a makrót

2. Kiugrik a fájl kiválasztós ablak

3. Csak miután megnyitotta a fájlt számolja össze hány excel fájl van nyitva egyszerre

4. Felhasználó pislog egyet és kész a fájl 

 

Közben viszont így rájöttem hogy hibát generál az, ha meggondolja magát és nem választ ki fájlt...kiugrik a debug ablak, amivel feltételezhetően nem fog tudni mit kezdeni :-DDD. Majd segítségért kiált :-DDD...és jövök.

 

Utólag ezt még kijavítanám, de már szétküldtem a makrot aztán nem bonyolítom a dolgokat.

:-)

 

Előzmény: O. Kán (13057)
SQLkerdes Creative Commons License 2010.10.21 0 0 13060
Már mérne már?
A darunak is van száma, meg a hibának is van kódja. Egyik X, másik Y.
Vagy most félreértek valamit?
Előzmény: nanemáraaaaaa (13058)
Törölt nick Creative Commons License 2010.10.20 0 0 13059
"A kérdésem az lenne, hogy lehet-e olyan globál változót definiálni - és aztán értéket megadni - az egyik munkafüzetben, ami a másik munkafüzetben is az előző munkafüzetben megadott értékkel bír? "

Nem tudom. Azt viszont biztosan lehet, hogy minden e szempontból lényeges szubrutinnak legyen egy olyan bemenő paramétere, amelyik a bőbeszédűségét hivatott szabályozni. Aztán a főprogramban kell feltenni a kérdést, és a válasznak megfelelő paraméterezéssel meghívni a többi szubrutinokat.

A másik lehetőség, hogy valami .cfg vagy .ini fájlt hozni létre, és abban tárolni a mindenkire vonatkozó adatokat. Ez a bonyolultabb megoldás szerintem.
Előzmény: O. Kán (13053)
nanemáraaaaaa Creative Commons License 2010.10.20 0 0 13058
Lehet ilyet egyáltalán? s.o.s
O. Kán Creative Commons License 2010.10.20 0 0 13057

Ennek a megoldásnak van hibája. (Pl. akkor, ha menet közben becsuk egy fájlt a felhasználó).

 

Ezért inkább én a következőt javaslom.

 

Amikor a felhasználó kinyitja az ominózus fájlt, akkor ezt add meg:

 

a=ActiveWorkbook.Name

 

Utána ugyanúgy tudsz hivatkozni az adott fájlra, mint ahogy Te is megadtad :

 

Workbooks(a) 

 

Előzmény: wawabagus (13043)
nanemáraaaaaa Creative Commons License 2010.10.20 0 0 13056
Hát ezt nem lehet:(
nanemáraaaaaa Creative Commons License 2010.10.20 0 0 13055
megprobálom...kössz
SQLkerdes Creative Commons License 2010.10.20 0 0 13054
Én az XY chart-tal próbálkoznék a helyedben.
Előzmény: nanemáraaaaaa (13052)
O. Kán Creative Commons License 2010.10.20 0 0 13053
Több munkafüzetben vannak, igen. (Az egyikben van az az összesítő program, amiből meghívom a - különböző helyeken lévő - szubrutinokat, a másikban -harmadikban, stb. - a szubrutin.) A kérdésem az lenne, hogy lehet-e olyan globál változót definiálni - és aztán értéket megadni - az egyik munkafüzetben, ami a másik munkafüzetben is az előző munkafüzetben megadott értékkel bír? 
Előzmény: Törölt nick (13042)
nanemáraaaaaa Creative Commons License 2010.10.20 0 0 13052

Üdv mindenkinek!

Tudna valaki segíteni nekem?!!

Az a  helyzet hogy csináltam egy adattáblát és egy olyan diagrammot  kellene csinálnom amiben a meghibásodások vannak az idő függvényében. tehát hogy melyik daru mikor milyen hibákat szenvedett.( a számok a hibakódokat jelölik)

Delila_1 Creative Commons License 2010.10.20 0 0 13051
Szívesen.
Előzmény: wawabagus (13049)
Delila_1 Creative Commons License 2010.10.20 0 0 13050
:)
Előzmény: Törölt nick (13047)
wawabagus Creative Commons License 2010.10.20 0 0 13049

Delila_1!

Visszaszívtam a kérdést.

Minden működik jól, csak én gondoltam rosszul, hogy "" közé kell tenni a címeket.

:-(..:-D....

Nagyon köszönöm a megoldást!!!!!

 

Előzmény: wawabagus (13048)
wawabagus Creative Commons License 2010.10.20 0 0 13048

Szia Delila_1!

 

Próbálgatom a makrót, amit írtál...

És valahogy nem működik, de nem tudok rájönni mi hibázik.

 

Úgy írja, minth a Find részben lenne hiba...de ha külön az "immadiate" ablakban nézem, akkor tökjól működik a kód. Arra még rájöttem, hogy az oszlopok neveit "" közé kell tennem...

 

Szerinted mi lehet a baja?

Elfogytak a tippjem, pedig sokat próbálgattam...

Nem lehet, hogy a find nem tudja melyik sheet-en keressen?

 

Köszi az ötleteklet!

:-) 

 

Sub DeleteColumns()


Dim sor As Integer
Dim oszlopnev As String

Sheets("Sheet1").Select
  
sor = 1

Do While Sheets("Sheet2").Cells(sor, 1) <> ""
    oszlopnev = Sheets("Sheet2").Cells(sor, 1).Value
   
Cells.Find(what:=oszlopnev, after:=ActiveCell, LookIn:=xlFormulas, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False).Activate
Columns(ActiveCell.Column).Delete
   
sor = sor + 1
Loop

End Sub

Előzmény: Delila_1 (12963)
Törölt nick Creative Commons License 2010.10.20 0 0 13047
(UTC+01:00) Budapest, Belgrád, Ljubljana, Pozsony, Prága

Delilát váltottam, aki éjfélkor végzett a 24 órás ügyelettel ;)
Előzmény: SQLkerdes (13045)
wawabagus Creative Commons License 2010.10.20 0 0 13046

:-)

Köszi!

Felvillanyozta az ötlet a tegnapi napomat :-).

Ki hinné, hogy ilyennek lehet örülni :-DDD.

Előzmény: SQLkerdes (13044)
SQLkerdes Creative Commons License 2010.10.20 0 0 13045
Jimmy, te milyen időzónában vagy, hogy hajnal egykor post-olgatsz?
Előzmény: Törölt nick (13042)
SQLkerdes Creative Commons License 2010.10.20 0 0 13044
Szép megoldás! Innen is látszik, hogy a programozás egy nagyon logikus dolog és egy jó ötlet gyakran fontosabb mint az utasítások teljes ismerete (ami persze nem nélkülözhető, sajnos).
Előzmény: wawabagus (13043)
wawabagus Creative Commons License 2010.10.20 0 0 13043

Szia!

csak el szeretném mesélni, hogy kitaláltam egy még jobb megoldást a makró átadására.

 

A macrót egy munkafüzethez fűztem, amit simán lehet továbbítani...onnan a felhasználó maga választja ki a kívánt fájlt. Így nem kell Personal-ba másolgatni.

 

És amivel annyit szenvedtem...rájöttem, hogy ez a workbooks(1) stb...bekavart amiatt, ha nekem volt Personal file-om a gépem, de másnak nem...az 1 néha a Personal volt, néha meg a megnyitott fájl.

 

Az is gondot jelentett, ha már volt megnyitott munkafüzet.

 

De mindezt kiküszöböltem ezzel az egy sorral :-):

 

Miután kinyitotta a felhasználó a kívánt fájlt:

 

a = Workbooks.Count

 

Onnantól úgy tudok hivatkozni rá, hogy

 

Workbooks(a)

 

:-)

 

Tökjó megoldásnak tűnik, eddig nem generált hibát.../remélem nem is fog/

 

Ezt találtam ki.

 

Előzmény: SQLkerdes (13029)
Törölt nick Creative Commons License 2010.10.20 0 0 13042
Ezt nem egészen értem. Amúgy igen, a (bármelyik) makrólap elején Public utasítással definiált változóra gondoltam. De mi az, hogy "több munkafüzetre érvényesen megadni"? Erre akkor lenne szükség, ha a makrók különböző munkafüzetekben lennének. Egy adott munkafüzetben definiált Public változó (tudomásom szerint) tartja az értékét mindaddig, amíg egy End utasítás végre nem hajtódik, vagy be nem zárod a munkafüzetet.

Ha az összes programkód ugyanabban a munkafüzetben van, akkor bármelyik szubrutin bármikor látja a változó értékét. Függetlenül attól, hogy a programkódot tartalmazó munkafüzet mellett még milyen egyéb munkafüzetek vannak nyitva, és éppen melyik az aktív.

Előzmény: O. Kán (13041)
O. Kán Creative Commons License 2010.10.19 0 0 13041
Oké, így csinálom. A globál változót (gondolom a makrólap elején public utasítással definiált változóra utalsz) viszont nem tudom több munkafüzetre érvényesen megadni. Ezt lehet-e, ha igen hogyan megadni?
Előzmény: Törölt nick (13040)
Törölt nick Creative Commons License 2010.10.19 0 0 13040
Szerintem kellene a globál változó, hogy kell-e az emelt szintű szolgáltatás, vagy nem. A program elején feltenni a kérdést, aztán a választól függően jeleníteni meg a továbbiakban az msgbox-okat.
Előzmény: O. Kán (13037)
SQLkerdes Creative Commons License 2010.10.19 0 0 13039
Vagyis bele kell nyúlni az eredeti programba.

Ha a kérdésed az volt, hogy egy makró mellett futhat-e egy másik makró, ami automatikusan kiválasztja pld a Yes válaszokat, akkor ilyen ésszerű munkaráfordítással nem gondolom, hogy készíthető.
Előzmény: SQLkerdes (13038)
SQLkerdes Creative Commons License 2010.10.19 0 0 13038
Nos, ha a msgbox kiolvas valami választ (OK, Cancel, Yes, bármi) akkor a kódból ki kell hagyni a Msgbox részt és a feltételezett-kézi-választ be kell írni (hardcoding) a makróba.

Ekkor nem áll meg megkérdezni, hogy "Ízlett-e a kávé, user Úr" (Yes/No) hanem a kódban a változó a Yes értéket kapja és következő lépésként megsimogatja a titkárnő buksi fejét.
Előzmény: O. Kán (13037)
O. Kán Creative Commons License 2010.10.19 0 0 13037
Mert alapesetben ez egy user-friendly program, szépen megkérdezi a felhasználótól, hogy hogy tetszik lenni, hogy szolgál az egészsége, akar-e egy picit klikk(el)eskedni, hogy megkapja a napi betevő információt, stb.stb. így szépen sorban. Nade nekem, mint programírónak és főszerkesztő úrnak nincs szükségem ilyen emelt szintű kiszolgálásra, nem kell a fenekem alá tenni mindent, jó nekem egy mezei "yes" válasz is, egyből, bele a közepibe.
Előzmény: SQLkerdes (13036)
SQLkerdes Creative Commons License 2010.10.19 0 0 13036
Ha makróból kezeled akkor nem kell a msgbox-ból kiválasztani a lehetőségeket. Ilyen esetben miért használnál msgbox-ot egyáltalán?
Előzmény: O. Kán (13035)
O. Kán Creative Commons License 2010.10.19 0 0 13035

Ehhez a problémakörhöz tartozik még egy kérdés: egy programban felbukkanó msgbox üzenetet lehet-e kézi beavatkozás (az üzenet ok gombjára való rákkantítás nélkül) nélkül, makróból lekezelni egy megfelelő utasítással? Ha igen, akkor hogyan?

 

Köszönöm előre is a választ.

Előzmény: Törölt nick (13008)
Delila_1 Creative Commons License 2010.10.19 0 0 13034
Ennek örülök. Szívesen.
Előzmény: repuleskepekben (13033)
repuleskepekben Creative Commons License 2010.10.18 0 0 13033
Köszönöm szépen, erre gondoltam! Nagyon jól működik!
Előzmény: Delila_1 (13017)
SQLkerdes Creative Commons License 2010.10.18 0 0 13032
Akkor alaposan át lett gondolva az a 10 soros kód :-)
Előzmény: Törölt nick (13030)

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