Az „Excel” fórum célja, hogy keretet adjon az Excel felhasználók széles táborának tapasztalataik megosztására, és lehetőséget a segítséget kérőknek. Az alábbi összefoglaló azért készült, hogy segítse a helyes kérdésfeltevést.
– Írd le szabatosan a problémát. Úgy fogalmazz, hogy ne csak te magad, de a szakértő is megértse, mire szeretnél választ kapni.
– Írd le, hogy milyen verziójú Excellel dolgozol. (Vagy ha nem – ill. nem csak – Excel, akkor micsoda?)
– Írd le, hogy milyen úton indultál el, és hol akadtál el rajta.
– A kérdés megértése szempontjából sokat segíthet, ha feltölteszt egy képet, amin látszik, hogy mit szeretnél, vagy illusztrálja azt.
– Még jobb, ha feltöltesz egy minta munkafüzetet valahová (pl. data.hu). Feltöltés előtt távolítsd el belőle a nem publikus adatokat.
– Ha a feladat jellege olyan, célszerű az "előtte" és "utána" állapotokat bemutatni. (Miből kellene csinálni mit?)
– Ha VBA kódon kell javítani, másold be a releváns kódrészt. Rövid kód mehet hozzászólásba, hosszú kód inkább ide: http://pastebin.com/
– Ha valami nem úgy működik, ahogy kellene, add meg a rendellenes viselkedés jellemzőit, a hibaüzenetet, és a hibát okozó programsort.
Nem hiszem, hogy úgy maradt volna, egyszerűen csak az Excel okosabb(nak hiszi magát), és a 2.6 -ra azt mondja, hogy az dátum akar lenni, és az általános formátumot önmatikusan (de szép szó!) átállítja dátumra.
Lehetséges, hogy korábbról megmaradt a cellaformátum dátumnak? Ha ez a helyzet, akkor próbáld meg egyszerűen a cellaformátumot átállítani 'Szám'-ra, vagy 'Általános'-ra.
Excel 2007-et használva akadt némi igen bosszantó problémám. Valószínűleg rém egyszerű a megoldás, viszont nekem még nem sikerült átállítanom...
Beírom egy cellába ezt: 2.6 erre továbblépéskor beszúr egy dátumot: 06. febr a szerkesztősoron meg megjelenik 2011.02.06 dátum...
Próbáltam a Beállítások "Speciális" fül "Cellaértékek automatikus kiegészítése" kikapcsolását meg a "Képletek" fül "Hibaellenörzés" sor "Automatikus hibaellenőrzés a háttérben" kikapcsolását is, de semmi nem változik.
Sub Enable_All_Right_Click_Menus() 'This will enable all BuiltIn Command bars Dim Cbar As CommandBar For Each Cbar In Application.CommandBars Cbar.Enabled = True Next End Sub
Egy kapott excel fájl megnyitása, majd bezárása után nem működik a jobb egérgomb, "nem jön fel" a szerkesztő menü, akkor sem, ha egy új munkafüzetet nyitok. Tudna valaki segíteni?
Ez a függvény feldob egy olyan beépített dialógus-ablakot, amivel a felhasználó ki tud választani egy teszőleges mappát egy tetszőleges meghajtón. Ahogy azt már Delila is mondta, annyi kell csak, hogy
útvonal = MappaTallózás()
és mire ez a sor végrehajtódik, az útvonal nevű változó fogja tartalmazni a felhasználó által kiválasztott mappa teljes elérési útvonalát. Ezt aztán fel lehet használni akármire, pl. mentésre.
Ez egy függvény. Beírod a címét =-jel, mire feljön az ablak, ahol kiválasztod a neked tetsző könyvtárat. OK után a függvény kimenete a választott útvonal lesz.
Ugyanez más makróba beépítve ilyesmi lehet:
Sub mm()
Dim fd, utvonal As String
MsgBox "Válasszunk magunknak útvonalat"
Set fd = Application.FileDialog(4)
With fd
.AllowMultiSelect = False
.Show
If .SelectedItems.Count = 0 Then
utvonal = ""
Else
utvonal = .SelectedItems(1)
End If
End With
utvonal = utvonal & ""
'Jöhet a mentés
End Sub
Csak tudnám, mi a 4-es az Application.FileDialog(4) kifejezében!
Ez olyan, mint a Application.Dialogs(xlDialogOpen).Show?
Én azt hiszem /ha jól értem/, akkor ez már része a makrómnak. Tehát, ha meg van adva neki a fodler, akkor ő már mindent ki fog onnan olvasni/meg fog nyitni stb.
Csak egyedül a folder path-ját nem tudom hogyan lehet rugalmasan megadni.
A dialogbox végülis csak fájlt tud megnyitni-erre jöttem rá időközben-, foldert nem tudok vele megadni...
Function MappaTallózás() Dim fd Set fd = Application.FileDialog(4) With fd .AllowMultiSelect = False .Show If .SelectedItems.Count = 0 Then MappaTallózás = "" Else MappaTallózás = .SelectedItems(1) End If End With End Function
Az szeretném tőletek megkérdezni, hogy ha makrót írtok valakinek, ami "LEMENT", KIOVAS FÁJLBÓL", akkor hogyan oldjátok meg elegánsan, rugalmasra hogy honnan melyik folderből tegye azt?
Nem akarom hardcode-olni a makróba, hanem valahogy rugalmasan megoldani.
Beirathatom persze a felhasználóval egy cellába, aztán a macro kiolvassa...
köszi szépen a válaszokat mindkettőtöknek, a ctrl enter-re át tudok szokni :) csak azt nem értem, hogy eddig működött valahogyan, más nem használja ezt a gépet, végképp nem az excelt rajta, és most kivonás lett a jól megszokott rutinomból.. :) fura.
Az a vicces, áme felettébb bosszantó jelenség akkor lép fel ha "-" jellel kezded a cellát és utána jobbra lépés gombot nyomsz!
Ilyenkor inkább nyomj enter a jobbra nyíl helyett.
Működik az is amit Nyuszi írt, vagy a ctrl + Enter, ami helyben hagyja az aktuális cellát és utána a kedvelt nyiladdal arra lépsz amerre kedved tartja!
Szeretnék feltenni egy banális kérdést. (Excel Starter 2010 magyar verzió). Minden hónapban egy táblázatban foglalom össze a munkások havi jelenlétét (szám, ha dolgoztak, 'fsz' ha szabin voltak, ' - ' kötőjel, ha még nem vagy már nem voltak alkalmazva). Ez eddig úgy működött, hogy pl ha kötőjel kötőjel kötőjel 8 8 8 -at írtam, akkor egyszerűen a megfelelő billentyű után a jobb kurzorral át tudtam lépni a következő cellába.
Most a kötőjel után jobbra lépve kivonást értelmez. Ugyanazt a fájlt használom, csak úgy munkalapot, de eddig nem így viselkedett.. Átállítottam szövegre is a cellákat, általánosra is, semmi változás. Nézelődtem az automatikus számoltatás részen is, ott átállítottam manuálisra - semmi változás, ráadásul ha jól értelmeztem ez a függvényekre vonatkozik.
Tudom, apróság, meg valószínűleg gyermeteg kérdés, de ha valaki tud, kérem adjon vmi tippet :)
Valami ilyesmi lett volna sztem a megoldás (legalább két dolgozó esetén):
Sub teszt() Dim nevsor As Range, c As Range, ws As Worksheet Dim cb As DropDown
Set cb = ActiveSheet.Shapes("Lenyíló 1").OLEFormat.Object Set ws = Worksheets("dolgozok") Set nevsor = ws.Range("A2", ws.Range("A2").End(xlDown))
cb.RemoveAllItems 'minden elemet töröl a combobox-ból For Each c In nevsor.Cells cb.AddItem c.Value Next End Sub
De ha ez az a combobox, amire én gondolok, akkor annak a "Vezérlő formázása" menüpontban be lehet állítani bemeneti tartományát, ami lehet akár nevesített tartomány is, és akkor nem kell pogramból küzdeni a feltöltésével.
De amit látok és elméletben akár rossz is lehet az az, hogy Selection.AddItem Worksheets("dolgozok").Cells(i + 1, 1) -t használsz.
Ehelyett jobb megoldás a Selection.AddItem Worksheets("dolgozok").Cells(i + 1, 1).Value használata.
A kódok bezavarodhatnak ha a Range-re hivatkozol, nem a Range értékére. Mondjuk az esetek többségében az Excel IQ-ból veszi, hogy nem a cellára gondolsz, hanem a tartalmára, de sose lehet tudni.
Az ActiveSheet object használatát is mellőzném, mert ha csak egyszer akaratlanul megváltozik és már nem a kombóbox-ot tartalmazó munkalapra mutat, akkor meghalt a kódod.
Mivel muszáj volt et megoldanom az egész probléma megoldásához (egy béna programot kell hétfőig írnom) mindenhol kértem segítséget.
Hátha másnak is van, lesz ilyen problémája, ezért itt (is) leírom, miképpen oldottam meg:
Hátha másnak sem működik az, hogy egy ComboBox tartalmát módosítsa a HELP-ekben oly könnyedén leírt
ComboBox1.AddItem "ÚjElem"
utasítással.
Nálam ez az utasítás ugyanis nem működött - sem az egyik, sem a másik gépen - és nem tudom, mitől függ; Excel-től, géptől, installálástól, valamilyen beállítástól. Tény, nem működik.
Szóval adott egy Excel-tábla, aminek az első munkalapján van (többek között) egy "nev_combobox" nevű ComboBox, ezt kell feltolteni a másik ("dolgozok" nevű) munkalap első oszlopában lévő nevekkel:
i = 2 Do While Worksheets("dolgozok").Cells(i, 1) <> "" 'nevek adatszámának megállapítása; a nevek a második sortól kezdődnek dolgozokszama = dolgozokszama + 1 i = i + 1 Loop i = 1 Do While i <= dolgozokszama 'nev_combobox feltöltése a nevekkel ActiveSheet.Shapes("nev_combobox").Select Selection.AddItem Worksheets("dolgozok").Cells(i + 1, 1) i = i + 1 Loop
Valaki felvetette, miért probléma, hogy csak a "select"-tel tudom "lérni" a comboboxomat, erre azt mondtam, mert például nem tudok belőle törölni. Nem is lehet, ugyanis ahogy a ComboBox1.Clear utasítás nem működik, úgy a Selection.Clear sem, tehát másképp lehet csak törölni; én ezt találtam működőképesnek (ha valaki pl. az összes elemet ki akarja törölni):
ActiveSheet.Shapes("nev_combobox").Select mennyi = Selection.ListCount 'hány darab elem van a nev_combobox-ban?