- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Aliexpress tapasztalatok
- Újabb államok perelik az Apple-t, mert sok pénzt szed ki a vevőkből
- Mikrotik routerek
- Linux kezdőknek
- Musk meggondolta magát, mégsem pereli az OpenAI-t
- Csinált valamit a Nokia: megváltoznak a telefonhívások
- Vírusirtó topic
- A call centerekbe viszi az AI-t a Microsoft
- Microsoft Edge (a Windows Internet Explorer utódja)
-
IT café
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
Fferi50
őstag
Szia!
Ahol a makróban a forrrás és a cél munkalap neve van, ott az adott cellára kell hivatkozni, ahova a nevet beírtad.
Pl. sheets("Munka1").range("B1").copy helyett sheets(activesheet.range("A1").value).range("B1").copyA másolandó munkalap neve az activesheet A1 cellában van.
Ugyanígy a cél munkalappal is.Ha felteszed a makródat "kamu" nevekkel, akkor még pontosabb választ kaphatsz.
Üdv.
-
Fferi50
őstag
válasz LordVader80 #24337 üzenetére
Szia!
Az A1 képlete maradjon az, amit írtál.
B1-től a képlet: =ELTOLÁS($A$1;2;(OSZLOP()-1)*3;1;1)Üdv.
-
Fferi50
őstag
válasz Zola007 #24342 üzenetére
Szia!
Egyrészt, hat képletről írsz, de hét sor van.
Másrészt, milyen excel verziód van.
Harmadrészt elég sok képletet be lehet "zsúfolni" egy cellába, miért gondolod, hogy ezt nem lehet.
Nálam az ehatvány (excel 2010-ben a KITEVŐ függvény) simán elfogad kifejezéseket, amelyekben cellára hivatkozok.Kérlek, pontosíts egy kicsit.
Üdv.
-
Fferi50
őstag
válasz Zola007 #24344 üzenetére
Szia!
"a gondom az, ha bármelyik képleten változtatni akarnék, akkor mindenre rá kell húzni a módosítottat, nem elég mondjuk 1 helyen"
Szerintem ez minden képlettel így van, akkor is, ha külön cellában van a képleted, akkor is, ha egy cellában van egy hosszú képlet.
Próbáld az Átlag függvényt, aminek a paraméterihez beírod a 7 függvényedet szépen egymás után (természetesen a W és R helyett az A1 és a B1 cella szerepeljen).
Pl: =ÁTLAG(A1*(36/(37-B1));A1*(1+0,0333*B1);(100 *A1) / (101,3 - 2,67123 * B1);A1*B1*0,1;(100*A1)/52,2+(41,9*KITEVŐ(-0,055*B1));A1* (1 + 0,025 * B1);(100 * A1) / (48,8 + (53,8 * KITEVŐ(-0,075 *B1))))
Viszont, ha angol exceled van, amire a tizedespontból következtetek csak, akkor nyilván nem Kitevő a függvényed neve.
Üdv.
-
Fferi50
őstag
válasz Zola007 #24347 üzenetére
Szia!
Igen, a kitevő csak az e alapú logaritmusra működik. Minden másra ott a hatvány függvény, vagy rövidítve a "kalap": 4^2 = Négy a négyzeten. Elől az alap, utána a kitevője.
"De ha egy makrót illesztek be, akkor elég csak a makrót átírni és mindenhol változik"
Ez akkor igaz, ha a módosítandó celláid valamilyen rendszer szerint helyezkednek el. Egyébként pedig a makróba ugyanúgy meg kell adni a pár(száz) módosítandó cella címét, csak nem egérrel jelölöd ki. Igaz a makrót csak egyszer kell megírnod ilyen "részletességgel".....
De az is lehet, félreértelmezem amit írtál....
Üdv.
-
Fferi50
őstag
-
Fferi50
őstag
válasz Thrawnad #24367 üzenetére
Szia!
Nem egészen értem, hogy mit "borzol össze" nálad amit leírtál.
Viszont azt gondolom, a Fileformat:=xlText megadása nagy valószínűséggel nem jó. A help szerint vagy
xlTextMac
xlTextMSDOS
xlTextPrinter
xlTextWindows
xlUnicodeTextlehet az értéke, sima xlText konstanst nem látok a fileformat típusok között.
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz Zola007 #24362 üzenetére
Szia!
Szerintem írhatsz kifejezéseket a hatvány függvénynél is mind az alapba, mind a kitevőbe, függvény formában beírva és ^ jelet használva is.
Nálam legalábbis megy, mind a 2010-es, mind a 2003-as excelben. Csak megfelelően kell zárójelezni a műveletek precedenciája miatt (inkább legyen egy zárójelpárral több, mint kevesebb...).
Pl. =((C36*3)/6)^(SZUM(C40:C41)-4)Üdv.
-
Fferi50
őstag
válasz looser #24370 üzenetére
Szia!
Egy makró nélküli mód:
1. A1 - adatok - érvényesítés - érvényesítés lista és a lista helyére beírod Bor;Sör
2. A2 - adatok - érvényesítés - érvényesítés lista - kijelölsz egy 3 cellás területet -mondjuk S1:S33. S1 cella képlete: =ha(A1="Bor";"fehér";"alsóerjesztésű")
S2 cella képlete: =ha(A1="Bor";"vörös";"felsőerjesztésű")
S3 cella képlete: =ha(A1="Bor";"rozé";"spontán")ezután ha az A1-ben kiválasztod a bort, akkor az első értékek jelennek meg az A2 listájában, ha a sört választod, a második értékek jelennek meg a listában.
Makróval pedig a Worksheet_change eseménykezelőbe kell tenni az érvényesítés változtatását.
Üdv.
-
Fferi50
őstag
válasz Thrawnad #24381 üzenetére
Szia!
Ez sajnos a Mentésmásként (SaveAs) logikája, ha kézzel mented, akkor is ez történik!
Ezért a megoldás szerintem az, hogy először elmented a fájlodat activeworkbook.save, majd utána mented SaveAs metódussal textfájlként.
Eután visszanyithatod az első fájlodat.(Létezik ugyan egy SaveCopyAs metódus is, ami az eredeti fájlt érintetlenül hagyja, de ott nem adhatod meg, hogy milyen típusu legyen a mentett fájl.)
Üdv.
-
Fferi50
őstag
válasz PETEE78 #24382 üzenetére
Szia!
Bocs, hogy visszakérdezek:
"kritérium1 : egyéb!U2=0;egyéb!V2=0;egyéb!W2=0;egyéb!X2=0"
Ez mindjárt három kritérium, de ezt tudja kezelni a SZUMHATÖBB függvény
"kritérium2 : DARABTELI(J2;1)"
Ezt nem tudom kritériumként értelmezni, mennyi legyen a darabteli értéke, vagy a J2-ben 1-nek kell lennie?
"kritérium3: DARABTELI(I2;"02 krumpli")"
Erre ugyanaz a kérdésem, mint az előbbinél, 02 krumpli -nak kell lenni az I2 cellában?Üdv.
-
-
Fferi50
őstag
válasz Thrawnad #24384 üzenetére
Szia!
Ne haragudj, hogy értetlenkedek és visszakérdezek:
Milyen típusu textfájlt szeretnél kapni. Ez azért fontos, mert annak megfelelő módszereket kell alkalmazni.
Közvetlen fájlkezeléssel bármit ki tudsz íratni fájlba, anélkül, hogy az alapfájlod megváltozna.
Nézz körül az Open - Print -Put - Close utasítások körül (nem a Workbook.Open metódus, hanem a fájl megnyitó Open).
Ha felteszel egy mintát, szívesen segítek. DE: meg kell mondanod, hogyan nézzen ki a text fájl: azonos szélességű rekordok, határolójellel elválasztott értékek - és ha igen, akkor mi legyen a határolójel,oszlop vagy sor alapján kerüljenek ki az adatok a fájlba stb.Üdv.
-
Fferi50
őstag
válasz Thrawnad #24391 üzenetére
Szia!
Akkor most nem egészen értem:
"Sőt ha kézzel csinálom akkor is ez van hogy mentek, mentek másként, bezárok.
Így létrejön, és be is veszi az SAP és már hibát sem kapok
Csak a végét kellene automatizálni."Ezt amit kézzel csinálsz megoldja egy pár sor a makróban:
Activeworkbook.Save
Activeworkbook.SaveAs filename:=név, fileformat:=forma
Activeworkbook.Close FalseEzzel bezártad a fájlod.
Ha csak az aktív munkalap A oszlopát akarod kitenni egy fájlba, akkor viszont:
Activesheet.Copy ' ezzel az adott munkalapot egy új munkafüzetbe másolod, ami azonnal aktív is lesz.
Activesheet.Usedrange.Offset(0,1).ClearContents 'az A oszlopon kívüli adatok törlése
Activeworkbook.SaveAs filename:=név, fileformat:=forma 'elmented
Activeworkbook.Close False
Ezek után ismét az eredeti munkafüzeted lesz az aktív munkafüzet. Csinálhatsz benne bármit, amit szeretnél.Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
Szia!
Ez bizony a súlyozott számtani átlag alapján van sorbarakva, a helyezési szám minél kisebb, annál jobb a helyezés.
A súlyozott számtani átlagot az Mszorzat (súlyok,helyezési számok) / szum(súlyok) képlettel tudod kiszámítani. Ehhez a helyezési számokat át kell tenni függőleges helyzetbe.
A helyezést pedig sorbarendezéssel és a sorszám függvénnyel tudod megoldani.
A helyezések az első sorban vannak, a súlyok az adott tényezőhöz tartozó számok.
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
Szia!
Kicsit favágós, de működik ("kézi hajtással"):
A feltételes formázás szabálya: a formázandó cellák kijelölése képlettel
A képlet: =SZÖVEG.KERES(szinescellák;A1)>0
Beállítod azt a szint kitöltésnek amit szeretnél.
A szinescellák tartalma kétféle módon adható meg:
A szinezendő cellákról csinálsz egy másolatot. Utána a másolaton adatok-ismétlődések eltávolítása.
Ezzel megvannak az egyedi értékeid, abban a sorrendben, ahogyan az eredeti helyen következtek.
Minden második értéket "kigyomlálod" - vagy összefűzöd egy cellába vesszővel elválasztva.
1.Ekkor a szinescellák helyén ez a cella szerepel, abszolút módon megcímezve.
=SZÖVEG.KERES($K$1;A1)>0
2.Ha nem akarod, hogy a cella ott maradjon, akkor az értékét teszed be a szinescellák helyére.
=SZÖVEG.KERES("Németország,Olaszország,Portugália";A1)>0
A képlet megadásánál kijelölöd az egész formázandó tartományt. Az A1 helyébe a formázandó tartomány első celláját írod, nem $ cimként.Ha bővülne a tartomány, akkor a cellát, vagy a szöveget csak kiegészíted az új értékkel, amit másként kell színezni.
Ennél jobb most nem jutott eszembe.
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz Hegyirabló #24417 üzenetére
Szia!
Ha fülek nevére gondolsz, akkor igen. Ráállsz a lapfülre. Jobb egérgomb, átnevezés: itt olyan nevet adsz neki amilyet szeretnél.
A fülek (és így a munkalapok) sorrendje is megváltoztatható: A fülön állva bal egérgomb lenyomva, húzással oda teszed, ahova szeretnéd.Üdv.
-
Fferi50
őstag
válasz dellfanboy #24424 üzenetére
Szia!
Ha a munkafüzet le van védve - és jelszó is van hozzá - akkor a jelszó ismerete nélkül nem tudod a munkalapot "felfedni".
Próbáld meg a következőket:
Ha ugyanabban a munkafüzetben van üres munkalap, akkor annak az első cellájába írd be ezt a képletet:
=védettlapneve!A1
Ha itt megjelenik adat, akkor minden adatot kinyerhetsz a munkalapról úgy, hogy a képletet végigmásolod minden cellán.
Ha nincs üres munkalap (és valószínűleg nem tudsz beszúrni sem újat), akkor nyiss egy új üres munkafüzetet és annak az egyik munkalapjára írd be a fenti képletet, kiegészítve a munkafüzet nevével.Ha átmész a Visual Basic nézetbe (Alt F11), akkor az immediate ablakban kiadhatod a következő parancssort:
sheets(védettlapneve).usedrange.copy sheets(üreslap).range("A1")
Ez elvileg a képleteket is átmásolja.Persze, ha másolás ellen is védve van, akkor nem fog menni, de azért egy próbát megér szerintem
Üdv.
-
Fferi50
őstag
Szia!
A SZUMHATÖBB függvény arra jó, hogy egy összegzendő tartományt több feltétel - azaz több feltételtartomány-kritérium páros - szerint is vizsgálva adjon összeget.
A példádban több összegzendő tartomány van (a hónapok adatai) szerintem és a kritériumok azonosak (vagy nem).
Ezek összegét úgy kaphatod meg, ha a SZUMHATÖBB (vagy a SZUMHA, ha egy kritérium van) függvényt alkalmazod az oszlopokra és az eredményt összeadod:
=SZUMHATÖBB(elsőoszlop,elsőkritérium,elsőfeltétel,másodikkritérium,másodikfeltétel)+SZUMHATÖBB(harmadikoszlop,elsőkritérium,elsőfeltétel, másodikkritérium,másodikfeltétel) + így tovább...
Mivel külön SZUMHATÖBB függvényekről van szó, az egyes oszlopok összegezési feltételei akár el is térhetnek egymástól.Üdv.
[ Szerkesztve ]
-
-
Fferi50
őstag
Szia!
Csak egy ötlet:
Csoportosítsd át a tábládat úgy, hogy az összegzendő oszlopok egymás mellé kerüljenek. Akkor összefüggő tartományként megadhatod összegzendő paraméternek a 6 oszlopot. (A kiválogatást megcsinálhatod speciális szűrőt használva az adott oszlopokra a jelenlegi táblád végére is.)
Üdv.
-
Fferi50
őstag
Szia!
Amit az előbb írtam, az sajnos nem megy - a vba help becsapott - bocs.
Viszont a másik ötletem a következő (hátha nem fogytak még el a libák. ):
Ha az oszlopaid értékét egymás alá másolod, úgy, hogy a sorcimkéket is tovább másolod velük, majd minden adat mellé a mellette levő oszlopba beírod a hónapot (ami eddig a fejléc volt), akkor az így keletkezett adatoszlopot a sorcimkék és az új - a fejlécet sokszorozó - oszlop alapján kívánság szerint összegezheted.
Remélem érthető, amit írtam.
Üdv.
-
Fferi50
őstag
válasz Mittu88 #24442 üzenetére
Szia!
A hibautan cimke szerintem felesleges.
On Error GoTo hibavan
For sorszam = 2 To osszsorszam
Sheets(masodikadatbazis).Select
raktarszam = Cells(sorszam, 2).Value
munkalapnev = Application.WorksheetFunction.VLookup(raktarszam, Sheets("Raktárak").Range("$M$2:$N$90"), 2, False)
raktarszam = munkalapnev
...
Next
hibavan:
sorszam = sorszam + 1
resume nextNem világos, hogy a munkalapnev változód milyen típusúnak van deklarálva. Ha variant akkor nem okoz futási idejű hibát, viszont az értéke hibaérték lesz és azt kell megvizsgálni
if not iserror(munkalapnev) then raktarszam=munkalapnevViszont megoldható másképp is, ha a munkalapnev nem variant tipusu:
On Error Resume Next
For sorszam = 2 To osszsorszam
Sheets(masodikadatbazis).Select
raktarszam = Cells(sorszam, 2).Value
munkalapnev = Application.WorksheetFunction.VLookup(raktarszam, Sheets("Raktárak").Range("$M$2:$N$90"), 2, False)
if err= 0 then raktarszam = munkalapnev else sorszam=sorszam+1
...
NextÜdv.
-
Fferi50
őstag
válasz MC Pite #24463 üzenetére
Szia!
Bocs, de a kérdés és a leírás teljesen ellentétes egymással (legalábbis az én értelmezésemben).
"egy sorban jobbra növelném a képletben az oszlopcímet, 31esével. Lefele 30 adatsor van, következő oszlopban 31-61ig, következő oszlopban 62-92ig, stb."
Nekem ebből úgy tűnik, a sorszámát kellene növelni 30-as csomagokban.
Erre szerintem az indirekt függvényt lenne jó használni. A sor számát pedig a képletben az oszlop() és sor() függvény felhasználásával tudod beállítani:
= indirekt( "$A" & (oszlop()-1)*30+sor()) a második oszlop első cellájába az első oszlop első cellájának értékét fogja beírni.Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz slashing #24471 üzenetére
Szia!
Az egészen biztos, hogy az automatikus kalkuláció tud problémákat okozni, főleg a következő esetekben:
Amikor olyan munkalap függvények vannak "tömegesen", amelyeknek az értéke frissítés (pl. ilyen az indirekt függvény is), vagy olyan saját függvényt használunk, amelyben benne van az Application.Volatile sor.
Ezek miatt ugyanis minden, de minden egyes cellaváltozáskor újraszámolódik az összes képlet értéke, akkor is, ha nem az azokban érintett cellák változtak.Nagyon sok adatunk van - sok munkalapon, esetleg még külső hivatkozásokkal (lekérdezésekkel) megspékelve és a külső adatok frissítése automatikusra van állítva.
Ilyen esetekben segít, ha a megnyitás előtt a számolást kézire állítjuk át (Application.Calculation=xlCalculationManual), és csak akkor hívjuk meg a számolás, ha ténylegesen változtattunk valamit.
Az újabb excel változatokban makróból már lehet hívni a számolást úgy is, hogy csak az adott munkalapot, vagy az adott cellatartományt számolja újra (de úgy emlékszem, ez az opció csak makróból megy).Segít még az is, ha a külső adatok automatikus frissítését letiltjuk és makróból vagy kézzel frissítünk.
Ha nagyon lassan jön be egy munkafüzet, ilyenekre lehet gondolni.
Üdv.
-
Fferi50
őstag
válasz m.zmrzlina #24477 üzenetére
Szia!
Esetleg próbáld ki a következőt:
a=selection.value
for xx=1 to ubound(a,1)
for yy=1 to ubound(a,2)
if a(xx,yy)<>"" then a(xx,yy)=left(a(xx,yy),len(a(xx,yy))-1)
next
next
selection.value=a1.Ha biztosan nincs üres cella, akkor az if feltételt kihagyhatod.
2.A selection helyett inkább használj konkrét tartomány címet - ez működik akkor is, ha az adott munkalap nem aktív.
Sheets("Munka1").range("A1:B20").value
3.Ez csak akkor működik, ha a tartományod összefüggő.Azért lehet gyorsabb, mert itt a memóriában vannak az adatok, az "a" tömbben.
Elképzelhető, hogy out of memory hibát kapsz, de talán 35000 sornál még nem (persze attól is függ, hány oszlopod van). Ebben az esetben bontsd részekre a műveletet, még úgy is gyorsabbnak kell lennie.Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz m.zmrzlina #24477 üzenetére
Szia!
Az előző hozzászólásomban (24479) írtam: " Ebben az esetben bontsd részekre a műveletet", természetesen nem a műveletet kell részekre bontani, hanem a tartományt kell kisebb "adagokban" számítani.
Másrészt, ha csak a végén van # jel, akkor a
selection.replace what:="#",replacement:=""
parancs megoldja az eltüntetését.Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz m.zmrzlina #24482 üzenetére
Szia!
Csak még egy kérdés: Akkor is belassul, ha a másik munkafüzet üres, vagy csak akkor, ha adatok vannak abban is?
Esetleg egy "közzétehető" mintát meg lehetne nézni (nyilván az érzékeny adatok nélkül)? Mert akkor talán tudunk válaszolni.
Meg lehet még próbálkozni az eseménykezelés letiltásával - az is tud problémát okozni, ha minden egyes cella változásánál "elszalad" az eseménykezelésbe, még akkor is, ha egyébként ott nem kell neki semmit csinálni.
Elébe egy Application.Enableevents=false, utána egy Application.Enableevents=true.
Nem tudom, a képernyőfrissítést ki szoktad-e kapcsolni. (Application.ScreenUpdating)Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
-
Fferi50
őstag
válasz m.zmrzlina #24490 üzenetére
Szia!
Akkor már miért nem így:
Range("A1:G1").Copy destination:=Worksheets("Munka2").Range("A" & Rows.Count).End(xlUp).Row + 1)
Nem kell hozzá utána semmi.
Üdv
[ Szerkesztve ]
-
Fferi50
őstag
válasz szix96 #24501 üzenetére
Szia!
Íme egy lehetőség:
Sub fileosszegzo()
Dim mf As Workbook, lap As Worksheet, fnev, usor As Long
Set mf = ActiveWorkbook
Set lap = ActiveSheet
Do While MsgBox("Akar adatokat beolvasni ?", vbYesNo) = vbYes
usor = lap.Range("A" & Rows.Count).End(xlUp).Row + 1
fnev = Application.GetOpenFilename()
If fnev <> False Then
Workbooks.Open Filename:=fnev ' megnyitás
Range("A8:E56").Copy Destination:=lap.Range("A" & usor)
'lap.Range("A56").PasteSpecial 'Beillesztés
ActiveWindow.Close False 'Bezárja
Range("A2").Select 'Rááll és vége
End If
Loop
MsgBox "Beolvasás vége!", vbInformation
End SubNéhány megjegyzés hozzá:
- az mf ebben az esetben teljesen felesleges, hiszen nem is használjuk a makróban
- a megnyitás után mindig a megnyitott munkafüzet lesz aktív - ezt lehet kihasználni a másolásnál amit lehet közvetlenül a célterületre "küldeni".
- a makró mindig az A oszlop első üres sorától másolja be a következő fájl adatait
- honnan tudod, hogy a megnyitott fájlban éppen az a munkalap az aktív, amire neked szükséged van? Ha csak egy munkalap van benne, akkor ok, de egyébként baj lehet, hiszen más esetleg (vagy akár Te is) elmozdíthatta az aktív munkalapot.
- természetesen a másoladó területet (ami most Range("A8.... nál kezdődik) szintén meg lehet adni úgy, hogy megkeressük a forrás fájlban - csak a szempontokat kell hozzá ismerni.
- a bezárásnál a False paraméter azt jelenti, hogy nem kell az esetleges változtatásokat menteni a forrásban
- a bezárás után ismét az eredeti fájlod lesz az aktív munkafüzet.A do while ciklus addig megy, amíg a kérdésre igent válaszolsz. Ha nem választasz fájlt, akkor nincs mit bemásolni, utána a kérdésre válaszolj nemmel, ha ténylegesen be akarod fejezni a beolvasást, vagy válassz fájlt és akkor folytatódik a beolvasás. (De ha igent válaszolsz és utána nem választasz fájlt, akkor a ciklus továbbra is "pörög" - ez szándékosan van így, hiszen el is téveszthetted a file választást.)
Üdv.
-
Fferi50
őstag
válasz Soulfly842 #24529 üzenetére
Szia!
Talán ha konkrétabban leírnád a problémát, vagy tennél fel egy mintát valahova, hamarabb kerülne segítség is (pl. milyen munkafüzetbe milyen táblát szeretnél felvinni,stb.) .
Mert ez így nagyon általános.Üdv.
-
Fferi50
őstag
válasz MC Pite #24531 üzenetére
Szia!
Szerintem fordítva kellene csinálnod.
Szűrés - csak az üres sorok kiválasztva - a sorokat kijelölöd (az egészet együtt) - sorok törlése - szűrő kikapcsolása.
Ez nyilván akkor jó, ha más oszlopokban nincs adat.Vagy makró:
sub sortorlo
activesheet.usedrange.columns("A").specialcells(xlcelltypeblanks).delete shift:=xlshiftup
end sub
A makró viszont csak az üres cellákat törli.Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz MC Pite #24535 üzenetére
Szia!
Akkor van ilyen hibaüzenet, ha az adott tartományban nem talál üres cellát. Ne feledd, attól, hogy nem látsz a cellában semmit, még lehet benne "információ" (pl. olyan képlet, aminek az eredménye üres string,stb.).
Ezt hibakezeléssel lehet makróban "kivédeni".
Pl.
on error resume next
set rngures=valami.columns("B").specialcells(xlcelltypeblanks)
if error="Nincs ilyen cella" then msgbox "Nincs üres cella"
on error goto 0Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz m.zmrzlina #24556 üzenetére
Szia!
Talán két dolgot lehet tenni.
1. Ha megnyitod az adott fájlt (munkafüzetet), akkor a workbook.path tulajdonság csak az elérési útvonalat adja meg.
2.Érdemes megnézni szerintem a filesystemobject objektumot.Üdv.
-
Fferi50
őstag
válasz bocsi6 #24560 üzenetére
Szia!
No ez az a jelenség, amire szerintem pillanatnyilag nincs normális megoldás.
Próbáld a következőt:
Az excelt nyisd meg egy üres munkafüzettel.
Menj át a VBA nézetbe (Alt+F11 vagy Nézet - makrók - visual basic)
Az immediate ablakba írd be:
application.enableevents=false
Ezután nyisd meg a kérdéses munkafüzetet. Ha előjönnek az activex vezérlők, akkor kapcsold vissza az eseménykezelést: application.enableevents=true
De semmi garancia nincs arra, hogy a következő megnyitáskor nem fog összedőlni az egész excel....Másrészt érdemes lenne megnézni, milyen "references" az amit elér az excel. Azt is a VBA nézetben láthatod. Lehet, hogy kellene egy activex komponesekre hivatkozó MS dll. De erre sem vennék mérget.
Én már több hónapja küzdök ezzel a problémával és nem találtam rá olyan megoldásra, ami garantáltan kiküszöböli.
Nagy eséllyel valamilyen memória kezelési hiba - vagy programozói "hanyagság" - okozza. Ez utóbbit azért tettem idézőjelbe, mert egyébként nem következetes az összeomlás. Van, hogy ugyanaz a program napokig megy hiba nélkül, aztán teljesen váralanul jön a baj, nem indul el, hanem kiakasztja az excelt.Még valami, amit a szerkesztőlécen látsz beágyazként az sajnos már nem activex vezérlő, hanem munkalap vezérlő - valamelyik sorstárs irta, hogy "átalakul az activex vezérlő munkalap vezérlővé".
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz bocsi6 #24571 üzenetére
Szia!
Mint írtam is, én is csak próbálkozom...
Arra gondoltam, ha nem lehet benne activex-et egyáltalán feltenni, akkor hiányozhat ez a komponens. VBA nézetben- Tools menü - References. Ezt kellene megnézni másik gépen, ahol ment a fájl.
Nem tudom, tudsz-e régebbi környezetet "produkálni". Szerintem meg kellene nézni, hogy másik gépen, másik excellel működik-e az activex felrakása.
Esetleg - ha nincsenek benne titkos adatok, vagy azokat ki lehet gyomlálni - feltehetnéd a problémás fájlt valahova, hátha "megnézve" okosabb lehet valaki.Üdv.
-
Fferi50
őstag
válasz bocsi6 #24573 üzenetére
Szia!
Fájlokat több helyre is lehet feltenni teljesen ingyenesen és biztonságosan. Én a Data.hu-ra szoktam feltenni, ott feltöltés után kapsz egy linket, amit be lehet ide másolni. (De más "adattárak" is így működnek.)
A régi környezetet már nem tudod szerintem visszaállítani, ezért javasoltam a "szomszéd, barát, ismerős, munkahely, stb.) másik gépet ill. a feltöltést.
Üdv.
-
Fferi50
őstag
-
Fferi50
őstag
Szia!
Nézd meg lsz. a cella formátumát. Az sem mindegy teljesen, hogy mit szeretnél összefűzni.
Továbbá az ÖSSZEFŰZ függvény helyett használd az & jelet. Tehát:A2 cellába: ="előre" & A1 & "végére"
Előre és végére helyett írod a saját szöveged idézőjelek között.
Egy adott cellában saját magára nem lehet képletben hivatkozni.Üdv.
-
Új hozzászólás Aktív témák
- E-roller topik
- Autós topik
- Ukrajnai háború
- Computex 2024: még két Socket AM4-es Ryzen jön
- Telekom mobilszolgáltatások
- Kávé kezdőknek - amatőr koffeinisták anonim klubja
- A fociról könnyedén, egy baráti társaságban
- Autós topik látogatók beszélgetős, offolós topikja
- EA Sports WRC '23
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- További aktív témák...
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- 10 Darab PC Játék (Bontatlanul!) Egyben 6990Ft.-ért Foxal!!!
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Canva Pro előfizetés - 1 éves
- Microsoft licencek KIVÉTELES ÁRON AZONNAL - UTALÁSSAL IS AUTOMATIKUS KÉZBESÍTÉS - Windows és Office
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen