Keresés

Részletes keresés

Ezoverzum Creative Commons License 2014.03.21 0 0 24596

Szia

 

Tetszik az ötlet de nem tudom lefuttatni.

Valamiért debugol erre a sorra.

Nem lehet, hogy a második sheets elött lévő vesszővel van gond?

sora=application.match(Sheets("Termékek").Cells(1, "C").value),sheets("Vevők").colums(1),0)

 

 

UI: az "A" oszlop tartalmazza a vevő kódokat

Előzmény: Fferi50 (24595)
Fferi50 Creative Commons License 2014.03.21 0 0 24595

Szia!

 

Próbáld a következőt:

 

        sora=application.match(Sheets("Termékek").Cells(1, "C").value),sheets("Vevők").colums(1),0)

        Sheets("SZÁLLÍTÓ").Range("C5") = sheets("Vevők").cells( sora,"B")
        Sheets("SZÁLLÍTÓ").Range("C6") = sheets("Vevők").cells( sora,"C")
        Sheets("SZÁLLÍTÓ").Range("C7") = sheets("Vevők").cells( sora,"D")
        Sheets("SZÁLLÍTÓ").Range("C8") = sheets("Vevők").cells( sora,"E")

 

Ez akkor működik rendben, ha a vevők A oszlopában megtalálja a vevőkódot, tehát gondoskodnod kell arról, hogy az már ott legyen, vagy a hibakezelést kell megoldanod.

A sora hibát fog tartalmazni,  ha nem talált adatot, tehát a következő feltételt kell beiktatnod:

if not iserror(sora) then a sora= sor után.

A sora változót pedig variantnak kell definiálnod.

 

Más:  a cella meghatározás vagy Range("C5"), vagy cells(5,"C") illetve cells(5,3) formulával történhet. A cells("C5") hibát eredményez, ezért javítottam.

 

Üdv.

Előzmény: Ezoverzum (24592)
Ezoverzum Creative Commons License 2014.03.21 0 0 24594

Tudom.

De ha a megoldást mondanád azzal többre mennék.

 

Amit kimásoltam az egy számlázó, raktárkezelő könyvelő stb "program" része lenne. Makrókkal vezérelve.

A folyamatot szeretném egyszerűsíteni azzal, hogy csak egy vevő kódot adok meg (és nem kell név város utca stb, mert az adatbázisból kikeresi) és a többit a makró elvégzi. Kitölti az űrlapot, számláz és nyomtat és stb.

Szóval makró és nem függvény.

Ha valaki ezek figyelembe vételével tudna segíteni.

Azt megköszönném

X

 

Előzmény: Eredő Vektor (24593)
Eredő Vektor Creative Commons License 2014.03.21 0 0 24593

Kicsit úgy érzem, hogy ágyúval lősz verébre. Ez egy egyszerű fkeres függvénnyel megoldható.

Előzmény: Ezoverzum (24592)
Ezoverzum Creative Commons License 2014.03.21 0 0 24592

Sziasztok  

A problémám a következő:

Van egy Workbook 3 oldallal. 1oldal aminek a neve "Termékek", 2oldal "vevők", 3oldal "SZÁLLÍTÓ"

Azt szeretném, hogy ha a "termékek" oldal C1-es cellájába beírom a vevő kódot és lefuttatom a makrót akkor a "vevők" oldalon keresse ki a "termékek" oldalon megadott C1-es mezőbe beírt vevő kódot (ami az "A" OSZLOPBAN VAN) és a mellette lévő adatokat másolja be a "SZÁLLÍTÓ" oldalon lévő C5, C6, C7, C8 cellába.

Az alábbi makróval próbáloztam de nem sikerült.

Lehet nem jó megoldással próbálkoztam.

Valaki kitudná igazítani? Vagy valami ötlet?

Előre is köszönöm

X

 

Vevő = Sheets("Termékek").Cells(1, "C")
    Sheets("vevők").Activate

    If ActiveSheet.Cells(i, "A") = Vevő Then
        név = ActiveSheet.Cells(i, "B")
        város = ActiveSheet.Cells(i, "C")
        utca = ActiveSheet.Cells(i, "D")
        irsz = ActiveSheet.Cells(i, "E")
    
        Sheets("SZÁLLÍTÓ").Cells("C5") = név
        Sheets("SZÁLLÍTÓ").Cells("C6") = város
        Sheets("SZÁLLÍTÓ").Cells("C7") = utca
        Sheets("SZÁLLÍTÓ").Cells("C8") = irsz
    End If

Fferi50 Creative Commons License 2014.03.21 0 0 24591

Szia!

 

if Sheets("Térkép").Shapes(cl.Value).Line.dashstyle= msolinedash then

 Sheets("Térkép").Shapes(cl.Value).Line.ForeColor.RGB = szurke

else

 Sheets("Térkép").Shapes(cl.Value).Line.ForeColor.RGB = vbblack

endif

 

A szürkére nincs külön vb konstans, arra azt javaslom, hogy jelölj ki egy szürke szakaszt, nézd meg a nevét és az immediate panelen írd be (pl hatos:

? Sheets("Térkép").Shapes("hatos").Line.ForeColor

ezt a számot jegyezd meg egy változóban,

pl a vszinez makró elején szurke=szinszam - >amit az előbb leolvastál

Többet nem kell vele foglalkoznod.

 

Üdv.

 

Előzmény: Hoex (24590)
Hoex Creative Commons License 2014.03.21 0 0 24590

Még esetleg annyi, hogy az megoldható a visszaszínező parancsnál, hogy feketére a folytonos vonalakat színezze, a szaggatottakat pedig szürkére?

Előzmény: Hoex (24589)
Hoex Creative Commons License 2014.03.21 0 0 24589

És működik.

 

Köszönöm a türelmet! :)

Előzmény: Fferi50 (24588)
Fferi50 Creative Commons License 2014.03.21 0 0 24588

Szia!

 

A target-et felejts el lsz:

 

Set Rng = Sheets("Adatbázis").UsedRange.SpecialCells(xlCellTypeVisible)
For Each terulet In Rng.Areas
    For Each cl In terulet.Columns(1).Cells
         If cl.Row > 3 Then

           Select Case cl.Offset(0, 1).Value
           Case 10
              Sheets("Térkép").Shapes(cl.Value).Line.ForeColor.RGB = vbRed
          Case 20
             Sheets("Térkép").Shapes(cl.Value).Line.ForeColor.RGB = vbBlue
         Case 30
          Sheets("Térkép").Shapes(cl.Value).Line.ForeColor.RGB = vbGreen
         End Select

       end if

   next

next

 

Üdv.

Előzmény: Hoex (24587)
Hoex Creative Commons License 2014.03.21 0 0 24587

Most így néz ki, de valami még mindig nem jó, mert 'object required' hibát kapok:

 

If Target.Address = Worksheet.Selectionhange Then
Select Case cl.Offset(0, 1).Value
Case 10
Sheets("Térkép").Shapes(cl.Value).Line.ForeColor.RGB = vbRed
Case 20
Sheets("Térkép").Shapes(cl.Value).Line.ForeColor.RGB = vbBlue
Case 30
Sheets("Térkép").Shapes(cl.Value).Line.ForeColor.RGB = vbGreen
End Select
End If

Előzmény: Fferi50 (24586)
Fferi50 Creative Commons License 2014.03.21 0 0 24586

Szia!

 

A Target az a worksheet.change, worksheet.selectionchange eseményhez kapcsolódik.

 

A "C" oszlop az a 2. oszlopa a látható területeknek, ezért a makróban a cl.offset(0,1).value legyen a vizsgálat tárgya.

 

select case cl.offset(0,1).value

case 10

egy szín

case 20

másik szín

 case 30

harmadik szín

end select

 

Az (is=10) nem jó kifejezés, case is  vagy case 10.

 

Üdv.

 

 

Előzmény: Hoex (24585)
Hoex Creative Commons License 2014.03.21 0 0 24585

Üdv újra!

 

Lefutottam pár tesztet, és úgy néz ki, hogy ez nem pontosan az a kód, amire gondoltam.

 

Amit megadtál arra jó, hogy szűkítés után a megmaradt sorokhoz tartozó összekötőket színezi. Viszont ezzel csak egy féle színezést tudok egyszerre megjeleníteni, nekem pedig az összesre van szükségem (az eredeti fáljban, lesz 10 féle lehetőség, ahhoz rendelt színkódokkal).

 

Valami ilyesmire gondoltam (a feltöltöltött fáljra levezetve):

 

If Target.Address = Sheets("Adatbázis").Range("$C$4:$C$9") Then
Select Case Target.Value
Case Is = 10
Sheets("Térkép").Shapes(cl.Value).Line.ForeColor.RGB = vbRed
Case Is = 20
Sheets("Térkép").Shapes(cl.Value).Line.ForeColor.RGB = vbBlue
Case Is = 30
Sheets("Térkép").Shapes(cl.Value).Line.ForeColor.RGB = vbGreen
End Select
End If

 

Természetesen nem történik semmi, nyilván rosszul írtam valamit a kódban (makróban sajnos abszolút kezdő vagyok), de logikailag így tudnám levezetni a dolgokat.

 

Tehát:

 

- keressen az adatbázis megadott tartományában értékeket

- színezze az adatbázisra vonatkozó összekötőt a térképen

     - vörösre, ha az érték = 10

     - kékre, ha az érték = 20

     - zöldre, ha az érték = 30

Előzmény: Fferi50 (24582)
tbando Creative Commons License 2014.03.21 0 0 24584

Valami triviális hiba okozhatja a gubancot.  Szerintem tedd fel ide az inkriminált makrórészletet.

Előzmény: Ezoverzum (24583)
Ezoverzum Creative Commons License 2014.03.21 0 0 24583

Sziasztok

 

Egy raktárkezelő rendszerrel bíbelődöm egy ideje és a folyamatokat próbálom egyszerűsíteni.

A kérdés a következő:

 

Áru kiírásakor eddig a vevőt egy excel mappában összegyűjtött vevő listából választotta ki a program úgy, hogy kiírás előtt kijelöltem a vevőt és az adott kijelölést a makró egyszerűen kimásolta.

 

Amin módosítani szeretnék, hogy a központi rendszerben (ami szintén excel) adom meg a vevő KÓDOT (egy számsort) és ez alapján keresse meg a vevőt és ez alapján amikor kiállítom makróval a szállítót akkor ott jelenjen meg a vevő neve címe stb.

 

Addig a dolog teljesen jól megy, hogy F.Keres függvénnyel megkeresi nekem a vevőt és a központ rendszerben meg is jelenik a név cím stb.

A gond ott jelentkezik, hogy amikor a makrót lefuttatom akkor a szállító kiállításakor a vevő neve címe stb helyére HIÁNYZIK#-ot ír ki.

 

Tömören a kérdés: hogyan módosítsam a makrót, hogy a vevő adatait másolja át a központ rendszerből és ne az f.keres függvényt próbálja értelmezni?

 

Előre is köszönöm.

X

Fferi50 Creative Commons License 2014.03.20 0 0 24582

Szivesen, máskor is.

Előzmény: Hoex (24581)
Hoex Creative Commons License 2014.03.20 0 0 24581

Hatalmas köszönet a segítségért!

Előzmény: Fferi50 (24580)
Fferi50 Creative Commons License 2014.03.20 0 0 24580

Szia!

 

http://data.hu/get/7531097/pelda.xlsm

 

Itt betettem két makrót: szinezi: az adatbázisban leszűrt nevű line-okat pirosra színezi

                                    vszinezi: az adatbázisban leszűrt nevű line-okat feketére színezi

Ha nincs szűrő, akkor az összes line-t színezi.

A szint az RGB paraméter tartalmazza, ezt részletesebben a VBA help-ben nézd meg légy szíves.

 

(A szűrés után több - nem összefüggő tartomány - terület keletkezhet, ezért azokon kell végig menni.)

 

Remélem érthető és segít.

 

Üdv.

 

Előzmény: Hoex (24579)
Hoex Creative Commons License 2014.03.20 0 0 24579

Továbbra sem értem teljesen a dolgot.

 

Mindenestre összeraktam egy példát: http://data.hu/get/7530797/pelda.xlsm Így szerintem tisztábban látszik, hogy mi lenne az elképzelésem.

Delila10 Creative Commons License 2014.03.20 0 0 24578

Egy ciklussal behívod a szűrt adatokat, SpecialCells(xlCellTypeVisible).

Előzmény: Hoex (24576)
Fferi50 Creative Commons License 2014.03.20 0 0 24577

Szia!

 

Az első példádban amikor szűrsz az adatokra, akkor a vonal nevét használod úgy látom. Ez visszafelé is működik. Az adatbázisban ott a vonal neve, azt használd a kijelölésére.

 

Üdv.

Előzmény: Hoex (24576)
Hoex Creative Commons License 2014.03.20 0 0 24576

Üdv újra!

 

A szűrés része az adatbázisban tiszta, a színezés is a térképen. Ott akadtam el, hogy nem tudom, hogyan kapcsoljam össze a kettőt, hogy a szűrt vonalakról elnevezett összekötőket színezze.

Előzmény: Fferi50 (24574)
Hoex Creative Commons License 2014.03.19 0 0 24575

Szia!

 

Holnap beszámolok, a kávé ellenére sem volt már erőm foglalkozni vele a munkahelyen. :) Köszönöm a segítséget!

Előzmény: Fferi50 (24574)
Fferi50 Creative Commons License 2014.03.19 0 0 24574

Eredmény?

Előzmény: Hoex (24571)
hellsing Creative Commons License 2014.03.19 0 0 24573

Bakker :-))) Végül is csak Excel 4.0 óta gyűröm az ipart :-)))

 

Köszönöm!

Előzmény: Fferi50 (24568)
Fferi50 Creative Commons License 2014.03.19 0 0 24572

Szia!

 

Kávézgass és gondolkodj nyugodtan. Én pedig megnézek egy filmet:)

Mindenesetra a nevével tudsz hivatkozni az összekötőre, mint objektumra és a tulajdonságaira. (pl. activesheet.shapes("Név").line.forecolor=vbblack - feketére állítja az adott shape vonalait).

 

Üdv. 

Előzmény: Hoex (24571)
Hoex Creative Commons License 2014.03.19 0 0 24571

Szia!

 

Köszönöm a választ. Elsőre nem biztos, hogy sikerült megértenem (talán egy kávé után..), esetleg lehetne egy picit részletesebben leírni a lépéseket?

Előzmény: Fferi50 (24570)
Fferi50 Creative Commons License 2014.03.19 0 0 24570

Szia!

 

Leszűröd az adatok munkalapon a kívánt adatokkal rendelkező összekötőket.

Végigmész a név oszlopon és a látható névnek megfelelő összekötő vonal vonalát (lineformat.color) beállítod a kívánt szinre.

(a celláról úgy tudod megállapítani, hogy range("A1") vagy cells(1,1).entirerow.hidden  true akkor nem látható, ha false akkor látható). 

 

Visszafelé úgy emlékszem, az összes összekötőt egy lépésben visszaállíthatod az alapszínre, ha nem a szűrés megszüntetése után végigmész ugyanúgy a szinbeállításon mint fent és visszaállítod az alapszint.

 

Üdv.

Előzmény: Hoex (24567)
csakegykérd Creative Commons License 2014.03.19 0 0 24569

Köszönöm mindkettőtöknek! :)

Előzmény: hellsing (24566)
Fferi50 Creative Commons License 2014.03.19 0 0 24568

Szia!

 

Az indirekt függvényről ezt modja a VBA súgó:

 

Ha a hiv_szöveg másik munkafüzetre hivatkozik (külső hivatkozás), a másik munkafüzetnek megnyitottnak kell lennie. Ha a forrásmunkafüzet nem megnyitott, az INDIREKT függvény a #HIV! hibaértéket adja eredményül.

 

Valószínűleg ez a baja.

 

A második verziód az maga egy közvetlen hivatkozás az adott adatra és az működik akkor is, ha a forrás munkafüzet nincs megnyitva.

Próbáld a hivatkozhást összerakni az indirekt használata nélkül.

 

Üdv.

Előzmény: hellsing (24565)
Hoex Creative Commons License 2014.03.19 0 0 24567

Üdv mindenkinek!

 

Makrókkal kapcsolatos kérdésem lenne, illetve kíváncsi lennék, hogy az alábbi dolog megoldható-e.

 

Van nekem egy két munkafüzetből álló excel fájlom. Az első munkafüzet egy vaktérkép rajzolt pontokkal és azokat összekötő vonalakkal. A második munkafüzet a vonalak adatait tartalmazó adatbázis. Az adatbázis első oszlopa tartalmazza a vonalak neveit, a további oszlopokban meg a vonalakhoz tartozó adatok vannak, szűrhető formában.

 

Odáig már eljutottam, hogy csináltam egy 'clickline' makrót, vagyis, ha a térképen egy adott összekötőre kattintok, az adatbázis munkalapra vált és megjeleníti a vonalra vonatkozó adatokat:

 

 

CallingShapeName = ActiveSheet.Shapes(Application.Caller).Name
Sheets("Detailed characteristics").Activate

Range("C3").Select
Selection.AutoFilter
ActiveSheet.Range("$B$3:$Z$5000").AutoFilter Field:=2, Criteria1:=CallingShapeName

 

 

Most egy olyan makrót szeretnék csinálni, hogy az adatok alapján különféle színekkel jelölje az térképen lévő összekötőket. Például: a D "sebesség" oszlopban szűrjön a 80-nál kisebb értékekre, és ezen vonalakhoz tartozó összekötőket a vaktérképen színezze kis vörösre. És természetesen kellene egy "visszaállító" makró is, ami visszaállít mindent az alap színezésre.

 

Van erre lehetőség?

 

Előre is köszönöm a válaszokat!

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