Keresés

Részletes keresés

goosebump Creative Commons License 2011.08.30 0 0 15916

Sziasztok!

 

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 :)

 

Köszi, üdv 

Törölt nick Creative Commons License 2011.08.29 0 0 15915

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.

Előzmény: bolygohollandi (15913)
SQLkerdes Creative Commons License 2011.08.28 0 0 15914

Előre is leszögezem, hogy nem tudom a megoldást.

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.

Előzmény: bolygohollandi (15913)
bolygohollandi Creative Commons License 2011.08.28 0 0 15913

Köszönöm, hogy eltöprengtél a problémámon!

 

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?

For i = 1 To mennyi
    Selection.RemoveItem 1
Next

 

Előzmény: _Nyuszi (15912)
_Nyuszi Creative Commons License 2011.08.28 0 0 15912

Látom, küzdesz ezerrel, de sajnos nem tudok segíteni, sajnos minden szakkönyvem bent van a cégnél, én meg hát nem... Google sem nagyon segít? :S

Előzmény: bolygohollandi (15911)
bolygohollandi Creative Commons License 2011.08.27 0 0 15911

Fogjuk rá, hogy el tudom nevezeni a hülye combobox-omat mondjuk ComboBox1-nek

Most ott tartok, hogy ezt a két sort elfogadja és végre is hajtja:

 

ActiveSheet.Shapes("ComboBox1").Select

Selection.AddItem Cells(1, 1)

 

 

De még mindig nem tudok belőle törölni, nem tudok rá "select" nélkül sehogysem hivatkozni...:(((

bolygohollandi Creative Commons License 2011.08.27 0 0 15910

Segítsen valaki!!!

Egy egészen kézenfekvő dolgot nem tudok megcsinálni.

Hogy a fenébe lehet egy worksheetre odarakott combobox-ba programsorral új elemet beletenni, hogy lehet a combobox-ra egyáltalán hivatkozni programból?

Egyáltalán, hogy lehet elnevezni egy comboboxot másképpen, mint ahogy alapértelmezetten odarakja a képernyőre mondjuk "Lenyíló 5" néven?

Egyetlen példa sem működik, amit a helpekben, interneten találok, tehát pl. a "ComboBox1.AddItem "qwert" " parancsot képtelen értelmezni és egyszerrűen nem értem, mi a fenét rontok el, pedig ennek baromi egyszerűenek kellene lennie....

Delila10 Creative Commons License 2011.08.25 0 0 15909

Köszönöm.

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

Activesheet.Codename

Előzmény: Delila10 (15906)
SQLkerdes Creative Commons License 2011.08.25 0 0 15907

ActiveSheet.Name

Előzmény: Delila10 (15906)
Delila10 Creative Commons License 2011.08.25 0 0 15906

Hogy lehet makróban lekérdezni az aktív munkalap elsődleges nevét (Munka1, Munka10) ?

Törölt nick Creative Commons License 2011.08.24 0 0 15905

Nekem is. Akkor nem ez a hiba. El tudod küldeni a fájlt emailben?

Előzmény: Tündi2003 (15904)
Tündi2003 Creative Commons License 2011.08.24 0 0 15904

Megnéztem: 2003-as Office-om van.

Előzmény: Tündi2003 (15898)
Jozsef Creative Commons License 2011.08.24 0 0 15903

Egyébként kisebb pontatlanságoktól eltekintve (pl. a gyűjtőszámla háromhavi tőkésítése helyett havi tőkésítéssel számoltak, így 926eFt jött ki 920eFt helyett) korrektül végigszámolták a cikkben szereplő paraméterekkel. Egyébként ez az eltérés csupán kb. 300Ft eltérés jelentene a törlesztésben.

Előzmény: piréz vitéz (15901)
Jozsef Creative Commons License 2011.08.24 0 0 15902

pl. JBÉ, RÉSZLET esetleg RRÉSZLET, PRÉSZLET

Előzmény: piréz vitéz (15901)
piréz vitéz Creative Commons License 2011.08.24 0 0 15901
nikojam Creative Commons License 2011.08.22 0 0 15900

Kedves Mindenki!

 

Köszönöm szépen az ötleteket, példákat. Mielöbb ki is próbálom!

 

Előzmény: Delila10 (15899)
Delila10 Creative Commons License 2011.08.22 0 0 15899

Munkalapon így hivatkozol a másik füzet egy adatára:

=[Másik_füzet]Munka2!$C$1

 

VB-ben, ha a B2 cellában szeretnéd látni a fenti adatot:

Cells(1, 2) = Workbooks("Másik_füzet").Sheets("Munka2").Range("C1")

 

A Másik_füzet Munka2 lapján a C1 cella kétszeresét akarod látni az első füzet B1 cellájában:

Cells(1, 2) = Workbooks("Másik_füzet").Sheets("Munka2").Range("C1")*2

 

Ebből kiindulva meg tudod írni a függvényedet.

Előzmény: nikojam (15896)
Tündi2003 Creative Commons License 2011.08.21 0 0 15898

XP-m van, Officeból talán 2003-as, de ezt most nem tudom fejből. Kedden megyek dolgozni, akkor majd megnézem, és referálok.

Előzmény: Törölt nick (15890)
pimre Creative Commons License 2011.08.21 0 0 15897

Nem értem, programot akarsz írni, vagy Excel függvényt használni? Mert úgy értettem, hogy programból megy. Ha csak excel függvényt akarsz meghívnia táblázatban, akkor működik a dolog.

 

Előzmény: nikojam (15896)
nikojam Creative Commons License 2011.08.21 0 0 15896

Szia!

 

Köszönöm szépen a gyors válaszodat, ha nincsen más mód élek is vele. Lehet hogy nem írtam le pontosabban, sajna én függvényben szeretném ezt megoldani.

Még egyszer köszönöm szépen!

Előzmény: pimre (15895)
pimre Creative Commons License 2011.08.21 0 0 15895

Egyszerű. Megnyitod egyidejűleg mindkét fájlt.  Abban a fájlban, illetve annak abban a cellájában ahova a függvényt akarod írni,  megnyomod az egyenlőségjelet, majd elengeded a billentyűzetet, és az egérrel átmész a másik fájlba, ott az egérrel ráállsz a kiválasztandó cellára, és az egérrel rákattintasz. Ha csak ennyi, akkor entert nyomsz. Ha folytatni kell, például összeadás jön, akkor nem enter jön, hanem megnyomod a + jelet, és kikeresed a következő adatot. És így tovább.

 

Ha persze az elején az egyenlőségjel után egy függvényt akarsz kezdeni az hasonló. Például összegzésnél beütöd, hogy =szum( majd ezen a ponton (a nyitó zárójel után) hagyod félbe a pötyögést, és mész az egérrel a másik fájlban a keresett cellákra. 

 

Ezzel a technikával akár egy fájl több munkalapjának adata, de akár több fájl különböző munkalapjainak adata is lehet egyetlen képletben.

 

Azt hiszem van egy határ, hogy a képlet szövegének hossza nem haladhat meg valahány karaktert (én olyan 800-900 közötti értéket  találtam), de ezt pontosan nem tudom.

 

Még annyit, hogy ha a képletet javítani kell, nem kell elölről kezdeni, hanem a cellára állva fenn a parancssorban megjelenik annak aktuális képlete. És ott javítható, kiegészíthető a képlet.

 

Remélem érthető, így leírva bonyolultabbnak látszik, mint a gyakorlatban megcsinálni.

 

Előzmény: nikojam (15894)
nikojam Creative Commons License 2011.08.21 0 0 15894

Sziasztok!

 

Nagyon sok okosságot lehet itt találni, amiket utólag meg is köszönnék.

Eddig nem kérdeztem tőletek, de most a tudományom végére értem. Ha tudtok segítsetek. Egy függvényt szeretnék írni ami egy mezőt tölt ki, de a feltételeknek megfelelő adatokkal ami egy másik xls-ben van. Programként jól működik, de függvényként mintha csak az aktuális xls-t látná és a másikat nem.

Segítségeteket előre is megköszönném!

pimre Creative Commons License 2011.08.21 0 0 15893

Én is vidultam, mikor megláttam. De bizisten nem volt szándékos.

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

Nekem is feltűnt az a szó az eredeti post-ban. De teljesen helyénvalónak éreztem :)

Előzmény: SQLkerdes (15891)
SQLkerdes Creative Commons License 2011.08.21 0 0 15891

OMG

A hónap posztja.

Freud hangosan röhög a sírjában :-)

Előzmény: pimre (15889)
Törölt nick Creative Commons License 2011.08.21 0 0 15890

Furcsállom, mert nekem a program maga lefutott. (Csak azt nem tudtam ellenőrizni, hogy mit csinál.) Arra gyanakszom, hogy a hiba a gépedben lehet. Próbáltad másik számítógépen? Milyen op. rendszered van? Milyen Office verzió?

 

Esetleg ránézhetek közelről, ha el tudod küldeni a doksit email-ben. Előtte persze törölj ki belőle mindent, ami nem kell, csak a két makró modul maradjon bent.

Előzmény: Tündi2003 (15887)
pimre Creative Commons License 2011.08.20 0 0 15889

Bocsánat, egy kellemetlen elütés. Helyesen: ... akkor ne fusson rá a program...

Előzmény: pimre (15888)
pimre Creative Commons License 2011.08.20 0 0 15888

Sziasztok, csak beszámolok egy érdekes meglepetésemről a programozásnál. Egy adott ponton az iif függvényt használtam:

iif(sor<0 or oszlop<0,0,függvény(sor, oszlop)) formában, ahol a meghívott függvény használta a cells(sor,oszlop) kifejezést.

 

A szándékom az volt, hogy amikor a nem megfelelő paraméterek miatt közvetlenül kell adatot megadnom, akkor ne fosson rá a program egy olyan kifejezésre, ami hibát okozna.

 

Viszont legnagyobb meglepetésemre a függvényt a program akkor is meghívta, ha a feltétel miatt csak az iif függvény true értékének megfelelő kifejezést kellett volna visszaadnia.

 

Nem okozott gondot, átírtam a normál if...then szerkezetre. Csak érdekes (talán mondhatom, hogy apró hiba), hogy ezek szerint a program előbb kiértékeli az iif függvénynek mindkét ágát, és csak utána dönti el, hogy melyiket adja vissza. (20 évvel ezelőtti emlékeim szerint, ahol még Clipperben programoztam, nem volt ilyen gond az ottani iif függvénnyel)

Tündi2003 Creative Commons License 2011.08.20 0 0 15887

Konkrétan ez nem működik benne (az aláhúzott részeket jelzi ki hibásnak, a hiba neve: "Compile Error: Internal error"):

 

Private Function SetPrinterProperty(ByVal iPropertyType As Long, _
      ByVal iPropertyValue As Long) As Boolean

 

   'Code adapted from Microsoft KB article Q230743

    Dim hPrinter As Long          'handle for the current printer
    Dim pd As PRINTER_DEFAULTS

Előzmény: Tündi2003 (15886)

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