- bitpork: Augusztus 2- szombat jelen állás szerint.
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- eBay-es kütyük kis pénzért
- Luck Dragon: Asszociációs játék. :)
- Geri Bátyó: B550 szűk keresztmetszet, de mi és miért?
- Fogkefe: elektromos vagy manuális?
- Magga: PLEX: multimédia az egész lakásban
- Parci: Milyen mosógépet vegyek?
-
LOGOUT
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
KaliJoe
tag
Sziasztok,
Tud valaki trükköt vagy konkrét parancsot, amivel egy VBE makróban kijelölt (pl. Bármi.Select - tel kiválasztott) és / vagy beillesztett cellamegjelöléseket le lehet venni a cellákról? Vagyis olyan mintha ki lenne jelölve, aztán ESC gombot nyomna a felhasználó...
Ötlet? Parancs? Trükk?
-
Fferi50
Topikgazda
Szia!
Próbáld ki a következőt:
Sub osszerako()
Dim hova As Worksheet, fajlneve As String, usor As Long, xx As Integer
Set hova = ActiveSheet
fajlneve = Dir("*.xls*")
Application.EnableEvents = False
Do While fajlneve <> ""
xx = xx + 1
usor = hova.UsedRange.Rows.Count + 1: If usor = 2 Then usor = 1
Workbooks.Open Filename:=fajlneve, ReadOnly:=True
ActiveSheet.UsedRange.Copy Destination:=hova.Cells(usor, 1)
ActiveWorkbook.Close False
fajlneve = Dir()
If xx Mod 10 = 0 Then Application.StatusBar = "Másolva: " & xx & "db fájl!"
Loop
Application.EnableEvents = True
Application.StatusBar = False
MsgBox "A másolásnak vége, kérem, mentse el a fájlt!", vbInformation, "Fájlok összemásolása"
End SubRemélem segít.
Üdv.
-
-
Fferi50
Topikgazda
Szia!
Ez a gomb szerintem csak közös használatú munkafüzeteknél aktív.
Nem egészen világos még mindig: Adott 300+ fájl egy-egy munkalappal különböző számú sorokkal.
Az adott fájlból a munkalapon levő sorokat a "Főfájl" egyetlen munkalapjának az utolsó sorai után kell bemásolni?Mindenesetre jó lenne, ha az összes fájl egy könyvtárban lenne. Akkor lehet egy viszonylag egyszerű makrót írni az összemásolásukra.
Most más dolgom van, de ha visszajövök, segítek, de írd meg lsz. jól értettem-e a feladatot.
Üdv.
-
air
nagyúr
válasz
Fferi50 #24891 üzenetére
Igen, tudom, hogy ki lehet tenni akár a gyorselérési eszköztárra, akár a menüszalagra. Ki is tettem, de mindenhol inaktív.
Azt gondoltam, hogy a különböző verziókat homogenizálni kell, de ez a kisebbik gond.
Ezek egy webes alkalmazás riportjainak exportált listái.
Minden fájlban egyetlen egy munkalap van, és azon x, y, z db sor.
A feladat, az összes fájlból a munkalap tartalmát összemásolni folytonosan, egymás után. Semmi flikk-flakk, csak egymásutáni másolás.
Sajnos, a kézzel történő összefűzés nem megoldható. 300 fájlnál ez még egy gyakorlott Excel felhasználónak is legalább 5 óra, ha csak 1 percet számolok fájlonként.
Makróval hogyan nyitogatok meg fájlokat, és hogyan mondom meg, hogy az egyikről x, a másikról y, és így tovább, különböző darabszámú sorokat másoljon át? -
Fferi50
Topikgazda
Szia!
Egyrészt, nem tudom, hogy a Munkafüzetek összehasonlítása és egyesítése menüpont azt csinálja-e amit szeretnél. Másrészt ki lehet tenni ezt is a menüszalagra, a testreszabásnál ki kell választanod, hogy minden parancsot szeretnél látni és akkor egyéni csoportba "át tudod tolni" a menüszalagra is.
Továbbá, mit értesz azon, hogy egyesíteni kellene egyetlen darab fájlba?
Azt, hogy az összes munkafüzetben levő összes munkalapot bele kellene másolni egy db munkafüzetbe,
vagy azt, hogy a munkalapokon levő adatokat valamilyen algoritmus szerint egy db munkafüzetbe össze kellene fésülni (pl. a Munka1 munkalapon levő cellák értéke a legutolsó előfordulás szerint legyen)?Azért nem gondolod Te sem komolyan, hogy különböző verziókban leledző többszáz munkafüzet majd csettintésre átalakul egy munkafüzetté? Meg kell azért bizony dolgozni. Szépen sorban meg kell nyitogatni őket, majd elvégezni rajtuk/velük a szükséges műveletet (átrakni az "örökös" munkafüzetbe) és utána visszazárni.
Ezt egy nem túl nagy makró megcsinálja, ha tudod, hogy mit szeretnél.Üdv.
-
Fferi50
Topikgazda
válasz
pirit28 #24888 üzenetére
Szia!
Úgy gondolom, az elakadás amiatt van, mert direktben xls kiterjesztésre van kondicionálva:
myfile = Dir(folderName & "\*.xls")
Ha más kiterjesztés is van, akkor így kellene:
myfile = Dir(folderName & "\*.xls*")A mentésnél pedig ezt a sort kellene kiváltanod:
ActiveWorkbook.SaveAs Filename:=folderName & "\" & Replace(myfile, ".xls", "ok.xls")
úgy gondolom erre:
ActiveWorkbook.SaveAs Filename:= Replace(ActiveWorkbook.FullName, ".xls", "ok.xls")
Itt már nem probléma, ha a kiterjesztés pl. xlsx, mert csak az xls cserélődik ki.
A FullName már tartalmazza a teljes elérési utat is, ezért nem kell a folderName hozzá.Üdv.
-
air
nagyúr
Sziasztok!
Lenne egy olyan problémám, hogy ~300 db Excel munkafüzetet kellene egyesítenem egyetlen egy darab fájlba.
Ezek között van 97-2003-as xls és 2007-es xlsx is.
Hiába kerestem a neten használható lehetőséget csak egyet találtam. Ez az Excelben a "Munkafüzetek összehasonlítása és egyesítése" parancs lenne. Azonban ez a parancs a Menüszalagról nem érhető el, csak a Gyorselérési eszköztárra rakható ki. Ott viszont folyamatosan inaktív, vagyis használhatatlan.
Nem tudom elhinni, hogy egy ilyen problémát nem lehet 2 ujjmozdulattal megcsinálni.Előre is köszönöm a segítséget.
-
pirit28
csendes tag
Sziasztok !
EXCEL 2003
Az alábbi vba kód változtatásában kérném hozzáértő segítségét.
Ezt neten találtam ,változtattam rajta de még nem tökéletes és nem tudom ,hogyan folytassam tovább.
A feladata az ,hogy egy kiválasztott könyvtárban levő xls file-okat mégegyszer elmentse xls-ként ,hozzáadva a file nevéhez egy ok-t.
De pl ha a választott könyvtárban xlsx kiterjesztés is van, akkor leakad, megáll.
Meg ha a választott könyvtárban van több könyvtár is akkor az almappákban levő fileokat a választott könyvtárba menti,(főkönyvtár)
és nem oda ahol eredetileg van a file.
Megoldható-e, hogy a választott könyvtárban levő file-ok ,illetve a könyvtárak könyvtáraiban levő file-ok ugyan oda mentődjenek el, ahol eredetileg vannak az jóóó lenne.
Meg az hogy miért akad le azt sajna nem tudom.
A választ előre is köszönöm, és a megoldást is.Sub Button1_Click()
Dim MyFolder As String
Dim myfile As String
Dim folderName As StringWith Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
If .Show = -1 ThenfolderName = .SelectedItems(1)
End If
End Withmyfile = Dir(folderName & "\*.xls")
Do While myfile <> ""
Workbooks.OpenText Filename:=folderName & "\" & myfile
ActiveWorkbook.SaveAs Filename:=folderName & "\" & Replace(myfile, ".xls", "ok.xls")
opened
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True
myfile = Dir
Loop
End Sub -
Fferi50
Topikgazda
válasz
gaborlajos #24886 üzenetére
Szívesen!
-
Agostino
addikt
üdv
létezik amolyan bővített vlookup? összekötni két oszlopot nem gond, akkor viszont gondban vagyok ha az oszlopon belül például duplikált nevek is találhatók. a nev melletti következő oszlop persze tartalmaz már egy születési dátumot, tehát ezzel lehetne szűrni a duplikációból adódó gondot, csak nem tudom hogyan.
-
Fferi50
Topikgazda
válasz
hengelhof #24879 üzenetére
Szia!
A Microsoftnak volt egy dec. 9-i office frissítése az ActiveX sebezhetőség megjavítása érdekében. Az "vágta haza" az aktivex használó programokat. De nagyon gyorsan feltették a megoldást.
Viszont amikor erről beszélgettünk a fórumon, akkor ez még nem volt nyilvánvaló.Üdv.
-
válasz
Fferi50 #24576 üzenetére
Sziasztok!
Én is beleütköztem ebbe az "Az objektum nem szúrható be." problémába. Utánanéztem, és ezt a megoldást találtam. Nekem bejött, és működik.
From other forums, I have learned that it is due to the MS Update and that a good fix is to simply delete the file MSForms.exd from any Temp subfolder in the user's profile. For instance:
C:\Users\[user.name]\AppData\Local\Temp\Excel8.0\MSForms.exd
C:\Users\[user.name]\AppData\Local\Temp\VBE\MSForms.exd
C:\Users\[user.name]\AppData\Local\Temp\Word8.0\MSForms.exd
Of course the application (Excel, Word...) must be closed in order to delete this file.
-
Fferi50
Topikgazda
Szia!
Azért mégis próbáld meg a beillesztéses verziót a következőképpen:
kitoltendo.Select
ActiveSheet.Paste link:=True
Ennek így működnie kell.Az én verzióm ilyen esetekre akkor működik, ha a forrás cellák és a cél cellák címei megegyeznek a két munkalapon (azaz pl A1:H1 mindkét lapon).
Ha ez nem így van, akkor a következőt javaslom:kitoltendo.cells(1,1).formula="=" & dstbook.WorkSheets(1).range("KELL").cells(1,1)address(external:=true,rowabsolute:=false,columnabsolute:=false)
kitoltendo.formula=kitoltendo.cells(1,1).formulaEz azért jobb szerintem, mint a copy mert nem használja a vágólapot.
Üdv.
-
Wyll
őstag
válasz
Fferi50 #24876 üzenetére
Hmm, jó ötlet, nem tudtam, hogy a Range-nek address property-je is van
Valószínűleg csak otthon fogom tudni kipróbálni, ezért addig is egy kérdés:"kitoltendo" és "KELL" ugyanolyan alakú, sokcellás (1sor magas, 25 cella széles) range-ek.
A copy-paste ehhez pont jó, mert a "kitoltendo" összes celláját beállítja, de van egy olyan érzésem, hogy a kitoltendo.formula -ra ez már nem lesz így igaz, hanem egyenként kell beállítanom... Egyetértesz? Ha igen, hogy csinálnád?Amúgy(1): az enyém vajon miért nem működik?
Amúgy(2): itt van egy csávó, aki azt állítja, hogy bármennyire is furcsa, PasteSpecial helyett simán elég volna Paste-t használnom. Nyilván kipróbáltam, de így sem ment...
Szerinted (is) hülyeség? Ha igen, akkor megy neki a mínuszpont
-
Fferi50
Topikgazda
Szia!
Ebben az esetben próbáld az adott cella formula tulajdonságát beállítani, azaz a képletet beírni a cellába, valahogy így:
srcbook.kitoltendo.formula="=" & dstbook.Worksheets(1).Range("KELL").Address(external:=true)
Az address tulajdonság external kapcsolója arra utasítja az excelt, hogy az adott cella teljes elérési útvonalát is tartalmazó címét adja meg - a hivatkozáshoz neked pont erre van szükséged.
Üdv.
-
Fferi50
Topikgazda
válasz
KaliJoe #24872 üzenetére
Szia!
Néhány megjegyzés:
Az idézőjeleket kétféleképpen viheted be a szövegbe:
1. Megduplázod az idézőjelet - ahogyan Te is tetted, ez teljesen szabályos forma
2. A CHR függvénnyel CHR(34) hozzáfűzésével - ezt nem kell duplázni!A számváltozókat nem kell átalakítani a kifejezésekben:
&Trim(str(lng_AktuálisSor))
teljesen felesleges, egyszerűen beírhatod, hogy & lng_AktuálisSorTovábbá: VBA-ban a cella formula tulajdonság képlettel való megadásakor kizárólag angolfüggvénynevek használhatók. Tehát nem HA, hanem IF, nem VAGY hanem OR és így tovább.
Ha magyar függvényneveket szeretnél használni akkor a cella formulalocal tulajdonságát kell beállítanod.
A második példád egészen biztosan ezért ad hibát.
Viszont, ha magyar nyelvű képlettel írod be VBA-ból a kifejezéseket, akkor nem lesz hordozható az excel táblád, mert nem magyar környezetben, vagy a tiedtől eltérő beállításoknál nem tudja értelmezni majd a képletet.Ha lenne még kérdésed, írj bátran.
Üdv.
-
Wyll
őstag
Sziasztok!
Elég fontos volna. Hogyan lehet VBA-ban ezt megcsinálni:
Szerintem így:
dstbook.Worksheets(1).Range("KELL").Copy
srcbook.Activate
kitoltendo.Select
ActiveSheet.PasteSpecial link:=True
Application.CutCopyMode = FalseCsakhogy így nekem marhára nem cellahivatkozások jönnek létre.
Pedig azt szeretnék.
-
tgumis
tag
Sziasztok van olann az excelben hogy más más szeméjnek más más jogosúltságot engedéjzek?
-
KaliJoe
tag
Sziasztok,
Ki tudja, hogyan lehet érvényes formában speciális karaktereket bevinni makróba, úgy, hogy végül képletté lehessen átadni. Valahogy így:
...
str_COszlop = "=SZÖVEG(B" & Trim(str(lng_AktuálisSor)) & ";""nnnn"")"
...
Worksheets(str_DolgozóRövidNév).Range("C" & Trim(str(lng_AktuálisSor))).Formula = str_COszlop
...
vagy
str_HOszlop = "=HA(VAGY(E" & Trim(str(lng_AktuálisSor)) & "=0;D" & Trim(str(lng_AktuálisSor)) & "=0);0;(E" & Trim(str(lng_AktuálisSor)) & "-D" & Trim(str(lng_AktuálisSor)) & ")-G" & Trim(str(lng_AktuálisSor)) & ")"
...
Worksheets(str_DolgozóRövidNév).Range("H" & Trim(str(lng_AktuálisSor))).Formula = str_HOszlop
...
Az első példa tartalmaz olyan részletet, ahol " idézőjelet kellene bevinnem. Nem tudom, az helyes-e így, mindenesetre szintaktikailag nem minősíti hibának, evvel még elindul.
A második példa nem tartalmaz speciális karaktert... mégis azonos az eredmény, futás közbeni hibára fut, miszerint "Application-defined or object-defined error"...Szóval, ki-mit-tud képletbevitel témában?
Ui.: Csak string képletek beírásával van bajom, a számokat tartalmazó képlet hibátlanul átmegy.
-
Fferi50
Topikgazda
válasz
gaborlajos #24868 üzenetére
Szia!
A munkalapod kódlapjára a következőt írd be légy szíves:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("$D$1:$E$50")) Is Nothing Then Exit Sub
Application.EnableEvents = False
vanmar = Application.Match(Target.Value, Range("$H$1:$H$" & Range("H4000").End(xlUp).Row), 0)
If IsError(vanmar) Then
If IsEmpty(Range("H1")) Then
Range("H1").Value = Target.Value
Else
Range("H4000").End(xlUp).Offset(1, 0).Value = Target.Value
End If
End If
Application.EnableEvents = True
End SubA kódlaphoz úgy jutsz, hogy a munkalap fülön jobb egérgombbal kattintasz. Ott kiválasztod a kód megjelenítését. Ezután a lap második felében megjelenik egy lenyiló, general felirattal. Azt átváltod worksheet feliratra. Megjelenik egy Worksheet_SelectionChange sub. Ezzel ne törődj, alá másold be a fentieket.
Amikor a D1:E50 cellák valamelyikébe beírsz egy nevet vagy bármit, a cella elhagyásakor a H oszlopban megvizsgálja, hogy van-e már olyan beírás. Ha nincs, akkor utolsónak beírja. De betű szerint egyeznie kell a beírásnak!
Természetesen a tartományokat a magad képére formálhatod (ha 4000-nél több dolgozó lehet, akkor a 4000-es számot vedd nagyobbra).Remélem valami ilyesmire gondoltál.
Üdv.
-
repvez
addikt
az lehet,de én ebből nem jövök rá, hogy is kéne nekifogni, meg amit a legtöbbet találtam az épp forditva exelből a naptárba frisit.
Meg még az sem tiszta, hogy autómatikusan leszinkronizálja magát az excel amikor megnyitásra kerül vagy minden egyes alkalommal le kéne menteni valahogy az adatokat a naptárból és ujra excelbe tenni? -
gaborlajos
csendes tag
válasz
Fferi50 #24859 üzenetére
Szia!
Teljesen igazad van, de mivel akár néhány száz emberről is lehet szó, ezért listát készíteni nem reális alternatíva. Bízom benne, hogy annyira azért vannak értelmesek, hogy elfogadják az Excel által felajánlott nevet a kezdőbetű beírására. Ezért aztán elég lenne a kód is.
Köszönöm, hogy ennyit foglalkozol a problémámmal.Üdv: G.L.
-
repvez
addikt
Egy újabb egzotikus kérdésem lenne és , hogy van e rá viszonylag egyszerű megoldás amit halandók mint én is meg tudnak csinálni
Szóval azt gondoltam, hogy a google naptárban lévő bejegyséseket össze lehet e hozni valahogy egy excel táblával?
Tehát ha egy androidos telefonon vagy PC-n a naptárba beirok egy eseményt akkor az az excelben az arra a naphoz rendelt cellában megjelenjen mint szöveg amit utána már mint normális szöveg vagy adat tudok tovább feldolgozni az excelben.Pl : Naptárban jan 9-re beirom, hogy találkozó, akkor mondjuk az B10 es cellában megjelenjen, hogy találkozó, amit utánna már bármilyen excel fügvénnyel további felhasználásra tehetem.
-
Delila_1
veterán
válasz
vigyori78 #24865 üzenetére
Most nem tudom megnézni, de valószínű, hogy ebben a menüpontban módosítani tudod a csatolást. Ha igen, akkor a saját füzetedet tallózd ki itt, arra kell átirányítanod a csatolásokat.
Másik módszer, hogy szögletes zárójelet keresel a füzetedben, és egyenként törlöd a külső hivatkozásokat.
-
vigyori78
őstag
Sziasztok.
Volt egy régi táblázatom amiben volt külső hivatkozás (csatolás) ebből csináltam egy új táblázatot amiben már nincs külső hivatkozás,mégis feldobja az elején :Az adatok hivatkozások-nál látom is a csatolást ezt hogyan tudom megkeresni melyik cella tartalmazza ?
Köszi.
-
moklys1
aktív tag
Sziasztok. Egy százalékszámításban kérnék segítséget.
Példa:
=A1/100*A2 (A1= 32,86. A2-ben van megadva egy szám: 10)
Még a fenti képletben azt szeretném ha az A1 ből (32,86) kivonná a kapott eredményt (3,29)
29,57 jönne ki ha jól számol.
Sajnos ezt csak két cellában tudom megoldani és egy képletben szeretném. -
Fferi50
Topikgazda
válasz
gaborlajos #24858 üzenetére
Szia!
Eddig teljesen világos és egy makróval meg is oldható, hogy ha valaki uj nevet ír be, az átkerüljön a nevek oszlopába.
De! Mi garantálja, hogy mindig ugyanazt a nevet írja be és nem "bénázik"?
Én inkább csinálnék egy érvényesítő listát a nevek oszlopába és onnan választatnám ki a nevet. Így biztosan nem lenne félreütés. Persze ehhez tudnod kellene a dolgozók nevét előre. Mi a véleményed?Üdv.
-
gaborlajos
csendes tag
válasz
Fferi50 #24857 üzenetére
Szia!
Igazából semmi mást nem szeretnék, mint a többször is előfordulható dolgozók nevét, egymás alá íratni.Itt nem kell összesíteni semmit.Ez majd átkerül egy másik lapra a megfelelő helyre, az már nem gond. Azért van két oszlop mert abba is kerülnek nevek ugyan ezen elv alapján. Az Office 2015-ös, és magyar nyelvű.
Üdv:
-
Fferi50
Topikgazda
válasz
gaborlajos #24856 üzenetére
Szia!
Te egészen biztosan tudod, hogy mit szeretnél. Amit leírtál, abból viszont nem derül ki - legalábbis számomra:
Az ide másolja át részen látom a dolgozók neveit kigyűjtve. Ezen kívül mit kellene még mellé gyűjteni? Gondolom a teljesített órák számát, amit talán a mind összesen óra oszlop tartalmaz?
Miért van két név oszlop?Gondolat: A dolgozó neve oszlopra csinálsz egy irányított szűrést, egyedi értékekre, az ide másolja át oszlopba.
Ezután a dolgozók melletti cellákban egy szumha függvénnyel összegzed a hozzá tartozó órák számát.Legalábbis, ha ezt szeretnéd.
Légy szíves igazold vissza, jól gondolom-e a "feladatot".
Még valami: Excel verziód száma és nyelve?
Üdv.
-
Mutt
senior tag
válasz
tgumis #24837 üzenetére
Hello,
Ha csak akkor induljon a másolás, ha mindegyik másolandó cella ki van jelölve, akkor ezt próbáld ki:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Const rngKijelol = "B2:B6" 'ebből a tarományból másolunk
Const wsCel = "Sheet2" 'erre a munkalapra másolunk
Dim rngMasolando As Range
Dim vSor As Long 'a cél munkalap utolsó sora
Dim arryAdatok As Variant
'megnézzük hogy ami ki van jelölve az mennyire fedi a másolandó tartományt
Set rngMasolando = Application.Intersect(Range(Target.Address), Range(rngKijelol))
'ha van fedés és az teljes, akkor mehet az utolsó sor meghatározása és az inverz másolás
If Not rngMasolando Is Nothing Then
If rngMasolando.Address = Range(rngKijelol).Address Then
vSor = Worksheets(wsCel).Range("A" & Rows.Count).End(xlUp).Row + 1
arryAdatok = rngMasolando.Value
Worksheets(wsCel).Range("A" & vSor).Resize(, rngMasolando.Rows.Count) = Application.Transpose(arryAdatok)
End If
End If
End SubAz elején vannak változók amiket igényszerint módosíts. Ahhoz a laphoz kell a kódot bemásolni ahonnan történik a másolás.
üdv,
-
Fferi50
Topikgazda
válasz
gaborlajos #24853 üzenetére
Szia!
Két dolog:
1. Az automatizmus magától nem megy, meg kell neki mondani, hogy mit csináljon - pl. eseményvezérelten, vagy gombnyomással vagy stb.
2. Amit írtam, azt nem csak egy oszlopra lehet alkalmazni, hanem tartományokra is - és makróból meg lehet hívni lásd első pont.Tehát, ha felteszel egy mintát és leírod, hogy mikor mit csináljon, akkor könnyebben tudunk segíteni.
Üdv.
-
BenJoe80
senior tag
válasz
Delila_1 #24847 üzenetére
Nem tudom mennyire marad így, de úgy néz ki sikerült megoldani.
Az érvényesítési oszlop (ahol a legördülő listák vannak) szélességét beállítottam 40-re, majd elmentettem és bezártam a táblázatot. Amikor újból megnyitottam, akkor a szélességet visszaállítottam az eredeti 5-re és mentettem. A legördülő lista szélessége azonban maradt.
Még egyszer nagyon szépen köszönök minden segítséget!
-
Fferi50
Topikgazda
válasz
gaborlajos #24846 üzenetére
Szia!
Ha 2010-es (esetleg 2007?) vagy annál újabb exceled van, akkor adatok -> ismétlődések eltávolítása.
Ha korábbi, akkor adatok -> irányított/speciális szűrő. Másolás más helyre, csak az egyedi adatok. Ekkor viszont az adatok első cellája fejléc kell legyen.Üdv.
-
Delila_1
veterán
válasz
BenJoe80 #24845 üzenetére
1. Az Application.EnableEvents = False sor letiltja, hogy az eseménykezelő makró újra lefusson, mikor a Left függvény beírja az első 4 karaktert a D oszlopba, majd True-ra állítva ismét engedélyezi a futást.
A Worksheet_SelectionChange típusú makró minden esetben lefut, mikor új adat kerül billentyűzetről a lapra, ilyen az egérrel kiválasztott adat is. Mindkét makró a beírt értéket felülírja egy rövidebb értékkel, ami újabb beírás, ismételten lefut a makró, ha nem tiltjuk ezt le. Ezúttal a 4 karakterből álló adat 4 első karakterét venné, ami gyakorlatilag nem változtat az új beíráson.
Mivel alkalmanként az ideiglenes letiltás csupán 1 újabb futást "takarít meg", nem látható a futási idő rövidülése. Enélkül is elmegy.2. Nem maga az érvényesítés legördülője lett szélesebb, hanem a kiválasztáskor az általam feltett füzetben még üres a következő oszlop, ezért abban (is) látszik a kiválasztott, több karakterből álló szöveg.
-
gaborlajos
csendes tag
Sziasztok!
Segítséget szeretnék kérni a megoldáshoz. Van egy oszlopom amiben nevek vannak, és lehetnek benne üres cellák is, és ezek ismétlődhetnek is.Egy másik oszlopba át kéne íratnom egymás alá, de minden nevet már csak egyszer. Hát ez meghaladja a képességeimet.
Előre is kösz. -
BenJoe80
senior tag
válasz
Delila_1 #24842 üzenetére
Még egy utolsó kérdés: hogy lehet a legördülő lista szélességét beállítani? Megfigyeltem, hogy az általad módosított táblázat legördülő listájában szépen olvasható a kód és név (legnagyobb része) egymás mellett. Amit én csináltam, ott meg a kód is csak ímmel-ámmal fér be legördülő lista szélességébe.
Pontosítok. A táblázatodban a legördülő lista szélesebb mint maga az oszlop, míg az enyémben csak olyan széles, mint maga az oszlop.
-
BenJoe80
senior tag
válasz
Delila_1 #24842 üzenetére
Nagyon szépen köszönöm!!! Közben kértem segítséget máshonnan is és ha nem baj összehasonlítanám a tieddel. A te makród:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 Then
Application.EnableEvents = False
Range(Target.Address) = Left(Target, 4)
Application.EnableEvents = True
End If
End SubA másik amit kaptam:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D:D")) Is Nothing And Target.Value <> "" Then
ActiveCell.Value = Left(Target.Value, 4)
End If
End SubBár mindkét makró pontosan azt teszi amire szükségem van, csupán kíváncsiságból: mi a különbség?
-
KaliJoe
tag
Sziasztok,
Írok egy jelenléti ív programot. Oda jutottam, hogy egy újabb vizsgálatnál ki akarom íratni a dolgozó teljes nevét. Ehhez most éppen a rövid név áll rendelkezésemre, ami egyezik a dolgozó jelenléti adatait nyilvántartó Munkalap nevével. Viszont a beírt VBE sor hibára fut. Megnéztem előtte sima képlettel ott rendben van. Az adatok:
Az Excel sor: =INDEX(Személylap!B2:K25;HOL.VAN("KalinaJL_1";Személylap!K2:K25;0);1)
A VBE sor kiemelve a kódrészlettel:
For Each wsh_DolgozóRövidNév In Worksheets
If dat_BeírandóDátum <= Worksheets(wsh_DolgozóRövidNév.Name).Cells(Worksheets(wsh_DolgozóRövidNév.Name).Cells(1, 1).Value, const_DolgozóNévOszlop).Value Then
int_Válasz = MsgBox("A kiválasztott" & Chr(10) & Chr(13) & _
Chr(9) & WorksheetFunction.Index(const_SzemélylapAdatbázis, WorksheetFunction.Match(wsh_DolgozóRövidNév.Name, const_SzemélylapRövidNévOszlop, 0), 1) & Chr(10) & Chr(13) & _
"nevű dolgozó adatbázisában későbbi időpont az utolsó bejegyzés, mint az Általad választott dátum. Akarod felülírni az űrlapon megadott információkkal az adatbázisban lévőt illetve beszúrni, ha nem létezik bejegyzés erre a dátumra?", _
vbQuestion + vbYesNo + vbDefaultButton2, "Felülírás-Beszúrás?")
If int_Válasz = vbYes Then
bol_Beszúrás = True
ElseIf int_Válasz = vbNo Then
Exit Sub
Else
'Úgy vesszük, mintha Nemet mondott volna = Visszalépés az űrlaphoz, hogy módosíthasson
Exit Sub
End If
End If
Next wsh_DolgozóRövidNévA piros rész dob hibát, miközben, az értékeket rendesen tudja:
A hibaüzenet:
Kinek, mi az ötlete, mi lehet a gond? És, főleg, mi lehet a megoldás?
-
Delila_1
veterán
válasz
BenJoe80 #24831 üzenetére
Kissé megkésve, de sok szeretettel.
-
slashing
senior tag
Ha még nem illesztetted be őket akkor érdemes lehet sokat tud gyorsítani rajta, csak a végén ne felejtsd el visszakapcsolni.. A tonnányi képlet kiszámolás tuti sokat számít arra mindenképpen érdemes berakni az első kapcsolót.
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.Enableevents=false -
Wyll
őstag
Sziasztok!
Van kezdetben egy főlap munkalapom, és egy BASIC munkalapom.
A főlap segítségével a júzer létre fogja hozni egyenként a BASIC munkalap sok-sok másolatát, mindet egy-egy egyedi névre átnevezve, és a főlapra ezen egyedi lapok bizonyos cellái be lesznek linkelve.
A BASIC lapon elég sok összetett képlet van, így annak másolatain is elég sok összetett képlet lesz.
Továbbá a BASIC laphoz tartozik még egy tonna bonyolultan definiált név is (amiket a képletek használnak), amik Munkalap szintűek, így aztán minden egyes másolathoz is tartozni fog egy-egy tonna, az adott másolatra érvényes név is.
Namost tesztelgetés közben azt vettem észre, hogy már 10 lap körül is igencsak érezhetően belassul egy-egy ilyen másolatnak a létrehozása. Ez nem túl biztató, mivelhogy az a terv, hogy nagyságrendileg 150 ilyen másolatot akar majd a júzer összesen létrehozni...
A file mérete ránézésre nem tűnik vészesnek, 510kB. Viszont a megnyitása már most is tart vagy 20-30 másodpercig.
A kérdésem, hogy mennyire bölcs dolog így ez az egész konstrukció?
Megáll-e a lassulás egy elfogadható szinten, vagy lineárisan, netán exponenciálisan csak romlani fog? -
tgumis
tag
válasz
Fferi50 #24836 üzenetére
Sub megrendeo_nyil_tart_masol()
'
' megrendeo nyilvantartas masolasa utolso ures sorba a 2-es munkalapramasol Makró
'
usor = Cells(Rows.Count, 1).End(xlUp).Row + 1
Munka2.Cells(usor, 1).Value = Munka1.Cells(2, 2).Value
Munka2.Cells(usor, 2).Value = Munka1.Cells(3, 2).Value
Munka2.Cells(usor, 3).Value = Munka1.Cells(4, 2).Value
Munka2.Cells(usor, 4).Value = Munka1.Cells(5, 2).Value
Munka2.Cells(usor, 5).Value = Munka1.Cells(6, 2).ValueEnd Sub
ez a makróm de nem müxik
-
tgumis
tag
-
Fferi50
Topikgazda
válasz
tgumis #24827 üzenetére
Szia!
Az utolsó üres sort megkapod a következőképpen:
az A oszlopban
usor=cells(rows.count,1).end(xlup).row+1ha más oszlopban szeretnéd, akkor az oszlopszámot átírod.
Transzponálni nem kell erőlködnöd. Simán átveszed az értékeket:
pl.
Munka2.cells(usor,1).value=Munka1.cells(1,4).value
Munka2.cells(usor,2).value=Munka1.cells(2,4).value
Munka2.cells(usor,3).value=Munka1.cells(3,4).value
Sőt:
For xx= 1 to 3
Munka2.Cells(usor,xx).value=Munka2.cells(xx,4).value
NextEz a kód a Munka1. D1:D3 cellájának értékét átteszi a Munka2 utolsó sorának első -második és harmadik cellájába. Az oszlopszámokat szükség szerint állítsd át.
Üdv.
-
BenJoe80
senior tag
válasz
Delila_1 #24825 üzenetére
Szia Delila_1!
Először is köszi az önzetlen segítségedet úgy most, mint a múltban (volt pár alkalom).
Megnéztem az általad módosított táblázatot, de amit én igazából szeretnék, hogy a legördülő lista az "A/C" oszlopban (D5:D70 tartomány) legyen. Mégpedig úgy, hogy a legördülő listában legyenek a választható, összesített tételek (pl.: 1000 Income, 1100 Other income... stb.), viszont amint kiválasztom a megfelelő tételt, az "A/C" oszlopban ((D5:D70 tartomány) csak a tétel kódok legyenek láthatóak (tehát: 1000, 1100... stb.)
Ez megoldható?
Egyenlőre előre-hátra lapozok az adott hónap és az "Acc." lap között, mert fejből nem tudom az összes tétel kódját és arra gondoltam, így egyszerűbb lenne. Viszont a tétel neve nem kell(ene).
-
tgumis
tag
válasz
Fferi50 #24826 üzenetére
Mint írtam készűl egy szebb megoldás viszont most csak egy olyan makrót szeretnék ideiglenes megoldásnak,hogy kijelöl egy adott területet(a sárga tartományt) az 1. munkalapon majd azonnal be is illessze a 2.munkalap utolsó üres sorába. A gond ott van, hogy hogyan adom meg neki a transzportálást és az utolsó üres sort.
-
Fferi50
Topikgazda
válasz
tgumis #24824 üzenetére
Szia!
Én a munkalap Selection_Change eseménykezelőjébe tenném be a következőket:
Megnézném, hogy a kérdéses terület van-e kiválasztva (ezt az intersect függvénnyel tudod megtenni)
Ha igen, rákérdeznék, hogy másoljam-e át (msgbox eredménye yes vagy no).
Ha másolni kell, akkor megkeresem a második munkalapon az utolsó sort és a cellák értékét egyesével átadom első cella az első oszlopba, második cella a második oszlopba . és így tovább.Üdv.
-
Delila_1
veterán
válasz
BenJoe80 #24823 üzenetére
Feltettem ide.
Az Acc. lap C oszlopában összefűztem a kétféle adatot, közöttük pár szóközzel. A sárga hátterű tartománynak a lista nevet adtam. Ezt vittem érvényesítésként a January lap B oszlopába. Nem valószínű, hogy ebben az oszlopban kellene választanod, de nem írtad, melyikben szeretnéd.
-
tgumis
tag
sziasztok
hogy tudom azt megoldani makróval hogy a sárgával jelzett részen lévő adatok kijelölése után egy másik munkalapon a piros színnel jelölt részre irányított beillesztés transzportálással a munkalap utolsó üres sorába kerüljön
Próbálkoztam userformmal de macerás és egy csomó hiba van benne és sürgésen prezentálnom kellene de nem megy légy szí segítsetek. -
BenJoe80
senior tag
Sziasztok
és boldog új évet mindenkinek!
A következőhöz lenne segítségre szükségem. Excel 2003-ban szeretnék egy legördülő listát létrehozni. A legördülő listában szerepeljen a "Kontó szám" és a hozzátartozó "Kontó név". Ebből a listából a megfelelő tétel kiválasztása után csak a "Kontó szám" látszódjon a cellában.
Ezt hogy tudom megoldani Excel 2003-ban?
A szóban forgó táblázat innen letölthető.
Az táblázatban az "Acc." lapon találhatóak a "Kontó számok" és a hozzátartozó "Kontó nevek". A legördülő listát pedig a "January" lapon az "A/C" oszlopba (D5:D70 tartomány) szeretném, de úgy, hogy csak a "Kontó számok" látszanak.
A segítséget előre is köszönöm!
-
-
csferke
senior tag
válasz
Delila_1 #24819 üzenetére
Arra gondoltam, hogy a nyomtatási parancsban valahol meg lehet adni, hogy ne nyomtassa azokat a sorokat ahol F oszlop cellája üres.
Valamikor a múltban tőled kaptam 2 néhány soros makrót. Egyik eltünteti az üres sorokat a másik visszahozza őket
. Beillesztettem közéjük a nyomtatást. Működik. Picit lassú, de mivel csak évente párszor kell ez a nyomtatás, hát kivárom.
-
KaliJoe
tag
Sziasztok,
Van egy felsorolásom, amelyik a hét napjait tartalmazza, magyarul.
Van egy űrlapon két Combobox-om, amelyek .Value paraméteit a felhasználó állítgatja, természetesen a hét számát választja ki az egyikkel és a hét napját a másikkal.A problémám akkor keletkezik, amikor vissza akarom fejteni ezeket az adatokat újra dátummá, vagy dátumértékké, emígyen:
dat_BeírandóDátum = DateAdd("n", (CBox_Hét.Value - 1) * 7 + CBox_NapNeve.Value, Date)
vagy emígyen:
dat_BeírandóDátum = DateAdd("n", (CBox_Hét.Value - 1) * 7 + enu_HétNapja = CBox_NapNeve.Value, Date)
Miközben enu_HétNapja tökéletesen tudja (és értéket is rendel a hét napjaihoz), hogy mennyit ér mondjuk 'péntek', ahogy ezt az alábbi kép is mutatja:Persze, arra is rájöttem, h enu_HétNapja = CBox_NapNeve.Value összefüggésre max. egy False válaszra méltat az Interpreter... mivel:
... és közben CBox_NapNeve.Value típusa karakterlánc (magától értetődően), amikor nekem számot kellene az összeadásba adnom... :-(
Tehát a kérdésem az, h hogyan kellene helyesen megfogalmazni a fentiekben Látható sort VBE módra, hogy az összefüggés helyesen adja az éven belül eltelt napok függvényében a dátumot? -
Delila_1
veterán
-
csferke
senior tag
válasz
Delila_1 #24817 üzenetére
Sziasztok!
Egy táblázat A-F oszlopaiból szeretném kinyomtatni az A,B és F oszlopokat de csak azokat a sorokat amelyeknek az oszlopa nem üres.
Eddig eljutottam
de itt a nyomtatásban látszanak azok a sorok is melyeknek az F oszlopa üres.Ezt a nyomtatást egy ActiveX Command Button-al kellene lefuttatni Excel 2007-ben.
köszi
-
-
Delila_1
veterán
-
Delila_1
veterán
-
zoli1962
csendes tag
Mutt segítsége jó lett
De még egy problémám lenne. Van olyan oszlop ahol nem minden cellába kerül adat (szám) És ott ez a függvény nem jó. Tehát az oszlopba írt utolsó cella adatát írja ki egy új munkalap adott cellájába, de az oszlopba lehet valahol üres cella. Ezen a honlapon találtam tippeket : http://www.offcafe.hu/13szept.html akár melyiket írom a névkezelőbe nem jön össze , sőt érdekes módon (ilyet még nem láttam) egy idő múlva a cella hivatkozást átírja
-
DrojDtroll
veterán
Köszönök, az összes ez évi segítséget, és kívánok minden cellabűvölőnek sikerekben gazdag boldog új évet.
-
KaliJoe
tag
Kedves Blogozók,
Én még csak újonc vagyok itt és éppen csak néhány napja csatlakoztam Hozzátok, de nagyon meglepett az a kedves hozzáállás, amivel egymás (köztük az én) problémái(m) iránt viseltettek. Magam is ilyen gondolkodásúnak tartom magam, úgyhogy nagyon örülök, hogy köztetek lehetek!
Evvel az üzenettel és képpel kívánok Boldog Új Esztendőt, és köszönöm meg értékes segítségeteket.
-
KaliJoe
tag
Sziasztok,
Tudtok jó megoldást arra, hogy hogyan lehet ciklusból megcímezni 24 különböző CheckBoxot, amelyek neve csak egy sorszámban tér el? A CheckBoxok egy Frame-ben belül vannak.
A cél, h egy cellákban adott listából feltöltsem a CheckBoxNN.Caption tulajdonságát.Ahová be akarom tölteni programból:
Vagy csak manuálisan lehet az értékeket megadni? Emigyen:
ChboxNév01.Caption = Worksheets("Személylap").Cells(byt_AktuálisSor, "B").Value ,
helyett
ChboxNév01.Caption = Worksheets("Személylap").Cells(2, "B").Value
ChboxNév02.Caption = Worksheets("Személylap").Cells(3, "B").Value
ChboxNévNN.Caption = Worksheets("Személylap").Cells(xx, "B").Value -
Delila_1
veterán
válasz
felora:) #24801 üzenetére
"minden cellának majd a szöveget az "A16"-osba kell begenerálnia, szépen egymás után."
Ezt úgy érted, hogy az A16-ban az utoljára kiválasztott értéknek megfelelően jelenjen meg az OK vagy a NEM OK szöveg?Ha igen, az A16 képlete legyen:
=HA(INDIREKT("A" & DARAB2(A1:A15))="Igen";"OK";"NEM OK")
Az A1:A15 helyett azt a tartományt add meg, ahol kiválasztod az igen, vagy nem szöveget.
-
felora:)
tag
válasz
KaliJoe #24767 üzenetére
Szia!
Eddig fasza, nagyon jóóó, eljutottam addig, hogy meg van a legördülő menüm, az + pont, hogy címet is adhattam neki, de még annyi kéne, hogy pl. ha kiválasztom a legördülő listából, hogy "IGEN" akkor generálja be, az "A16"-os cellába, hogy pl. "OKÉ", ha a "NEM"-et választom ki, akkor azt generálja be, hogy: "NEM OKÉ". azt hogyan?
Ja! még annyit, hogy minden cellának majd a szöveget az "A16"-osba kell begenerálnia, szépen egymás után.
Új hozzászólás Aktív témák
Hirdetés
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, Most kedvező áron!
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Eladó Steam kulcsok kedvező áron!
- Vírusirtó, Antivirus, VPN kulcsok
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest