- Samsung Galaxy A54 - türelemjáték
- Keretmentesít a Galaxy S25 FE
- Motorola Edge 50 Fusion - jó fogás
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Eltűnhet a Dinamikus Sziget
- Google Pixel topik
- Milyen okostelefont vegyek?
- Redmi Note 13 Pro 5G - nem százas, kétszázas!
- iPhone topik
- Samsung Galaxy Watch6 Classic - tekerd!
-
Mobilarena
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
-
repvez
addikt
válasz
Fferi50 #45913 üzenetére
nem tudom, hogy kéne máshogy paraméterezni, ugyan ezeket a számokat irtam be és ezen a lapon ugyan ezeket a számokat kapom, de amikor rákattintok az okéra akkor a fenti hibát dobja és a cimsorba a képletnél a névértéket vastagitja ki és csak oda enged kattintani a többire nem. szoval valami a névértékkel nem tetszik neki.
-
-
bLaCkDoGoNe
veterán
válasz
Fferi50 #45904 üzenetére
Köszönöm, az első linket még a hozzászólás írása előtt megtaláltam/végignéztem; a második viszont nem volt meg, és abban a megoldás: kinagyítani az comment ablakát annyira, hogy a végére rejtett eredeti megjegyzés olvasható legyen (ez mondjuk valami hihetetlen béna, unintuitív és rettenetesen rossz UX-ű megoldás, hogy az érdemi tartalom elé berak az Excel több sornyi generic szöveget).Lényeg a lényeg, hogy ez így már használható, még ha rettenetes UX is.
Köszönöm a segítséget!
-
woolwich
tag
válasz
Fferi50 #45894 üzenetére
Szia!
Nem jól fogalmaztam, én a data barokra gondolok, de inkább beszúrok egy screenshotot:
Szóval azt szeretném megjeleníteni, hogy adott személy (sor) milyen szintű tudással (az ábrán jelenleg 1-2-3) rendelkezik egy adott területen (oszlop) és a színekkel szemléltetném azt, hogy egyébként érdekli az a terület (zöld) vagy nem érdekli (narancs). A "smiley" mutatja azt, hogy ha nincs tudása az adott területen, de amúgy érdekli vagy hidegen hagyja.
A feltételes formázás-data bars funkcióval egész jól lehet ezt szemléltetni, csak még jobb lenne, ha egy irányba telítődne a bar mindkét szín esetén, de amennyire utánaolvastam tegnap ez nem megoldható ezzel a funkcióval. -
kokokka
addikt
válasz
Fferi50 #45872 üzenetére
Lehet, hogy valamit nem.jol írtam, vagy inkább én nem értem :)
Szóval ez lenne amiről szó van. Ebből szeretném összesíteni külön külön a három színnel jelölt napokat, hogy tudjam, kinek mennyi napja van összesen szakonként (ez ugyanis a dolgozók De, Du, Éj szakjait jelöli). Annyival "bonyolódik" a helyzet, hogy van, amikor hétvégén is kell jönniük és én azt az adott szak színével színezem ki. Az kevés, hogy beirnám az adott szakot és darabtelivel összesítésben (ez meg is van egyébként), mert szeretném, hogy egyszerre tudja milyen szakban jöttek és mikor. Nem tudom érthető e? :) -
-
p5quser
tag
válasz
Fferi50 #45834 üzenetére
Róla lenne szó.
Nincs benne turpisság.
A "szamlazott" és a "konyv" lapon mászik el csúnyán kattintásra a combo. Valamint a "cikkek" lapon a cikkcsoport keresője.
Előre is köszönöm! -
p5quser
tag
válasz
Fferi50 #45834 üzenetére
Szia!
Nincs alatta adatérvényesítés és ActiveX a combo.
Természetesen kimásolva csak azt a munkalapot megszűnik a hiba igaz, most csak egy gépen tudom kipróbálni. Gyanítom egyben lenne jó látni, szóval most kimetszem az érzékeny adatokat a használt file-ból és egyben felrakom.
Köszi! -
bela85
aktív tag
válasz
Fferi50 #45814 üzenetére
Nem az a gond.. ahogy írtam nálam a Krit.fő.állapotnál az eredeti táblámba totál más értékeke vannak mint a Kr.1,Kr2 stb részen. Most ezt a "teszt táblát"is átírtam az alapján. és a 3. sorban ugyanúgy 1-et hoz.
Bocsi, ha eddig félrevezető voltam, az eredeti táblát a GDPR miatt nem fotózhatom.. ezért próbáltam vmi hasonlót beírni.
Talán így a mostani "Alma,Körte,Barack és IGEN NEM részekkel" hiteles és hasonlít legjobban az eredetire, annyi kiegészítéssel, hogy a Kr1,Kr2,Kr3 oszlopok között más oszlopok is vannak.. szóval sokszor azért nem jó pl amit Delila_1 készített képletet. -
bela85
aktív tag
válasz
Fferi50 #45811 üzenetére
Szia!
Természetesen, de azt hiszem megvan a hiba oka..csak a megoldásra nem jöttem rá.
Nálam az eredeti táblában a Krit.Fő állapotban és az Kr1,Kr2,Kr3 résznél más szöveg van.. és ezért a Darabteli részt átírtam arra a hivatkozásra.. és itt dobja a hibát. Természetesen az eredeti felállással működne jól. -
Lokids
addikt
válasz
Fferi50 #45773 üzenetére
Ide feltettem egy minta fejlécet. Második sorban lévő random számok az azonosítók.
Képzeld el úgy, hogy a második tábla ugyan ez, csak nincsenek benne a %-ok és mondjuk bekerült egy plusz oszlop a 4-es és 5-s közé az 1-es és a 7-es meg helyet cserélt.Így próbáltam megoldani:
For sor = 4 To s_MainLastRow
s_MainName = Workbooks(MainWBName).Worksheets(s_wsName).Cells(sor, 2).Value
For fteSor = 4 To s_PrevLastRow
s_FteName = Workbooks(FteWBName).Worksheets(1).Cells(fteSor, 2).Value
If s_MainName = s_FteName Then
For oszlop = 6 To s_PrevLastCol
s_mainFteNum = Workbooks(MainWBName).Worksheets(s_wsName).Cells(2, oszlop).Value
For fteOszlop = 6 To s_wsnameLastCol
s_FteNum = Workbooks(MainWBName).Worksheets(s_wsName).Cells(2, fteOszlop).Value
If s_mainFteNum = s_FteNum Then
Workbooks(FteWBName).Worksheets(1).Range(Col_Letter(fteOszlop) & fteSor).Copy _
Destination:=Workbooks(MainWBName).Worksheets(s_wsName).Range(Col_Letter(oszlop) & sor)
End If
Next fteOszlop
Next oszlop -
karlkani
aktív tag
válasz
Fferi50 #45753 üzenetére
Szia!
Ott a minta a kettővel ezelőtti hozzászólásomban. Ha a
https://szöveg/szöveg/szám/szám.m3u8
-t beillesztem egy üres lapra, hiperhivatkozásként kerül be, a makró működik. DE nálam így szerepelnek, ahogy előzőleg is leírtam:1*file*https://szöveg/szöveg/szám/szám.m3u8
Nem hivatkozásként jeleníti meg, nem csinál semmit a makró.Itt egy 3 soros minta, nem mintha számítana valamit is.
1*file*https://abcdefg.com/abc/123456789/123456789.m3u8
1*title*1. lista címe
2*file*https://abcdefg.com/abc/23456789/23456789.m3u8
2*title*2. lista címe
3*file*https://abcdefg.com/abc/234567890/234567890.m3u8
3*title*3. lista címe
Nem lehet úgy átírni a makrót, hogy sima, mezei szöveg esetén tegye már oda a
valami_
-t a két számot elválasztó / jel mögé?Excel 2013
-
karlkani
aktív tag
válasz
Fferi50 #45751 üzenetére
Szia!
Azt rögtön módosítottam (a linkekben amúgy / jel van). Sima szöveget nem módosítja, ha az elejéről törlöm az 1*file* részt, akkor sem. Hivatkozást módosít, de csak a kattinthatókat. Próbáltam, hogy bevittem egyet, majd azt lehúztam ameddig kell, a tartalmat töröltem. Beillesztettem a lejátszási listát, de mivel ott az elején mindnek a 1*file*, stb. így semmi sem történik.
-
karlkani
aktív tag
válasz
Fferi50 #45749 üzenetére
Szia! Sima szöveg. Azt nem írtam (nem gondoltam, hogy számít), minden sor számozott.
1*file*https://szöveg/szöveg/szám/szám.m3u8
1*title*cím
2*file*https://szöveg/szöveg/szám/szám.m3u8
2*title*cím
Nálam így nem működik. Ha sikerülne átírni, a tartalom visszakerülne a PotPlayer lejátszási listába.Köszönöm!
-
ny.janos
tag
válasz
Fferi50 #45726 üzenetére
Sziasztok!
Fferi50: Ahogy én látom, azért nem ad a DARABHATÖBB függvény önmagában megoldást bela85 eredeti kérdésére, mert ő meghatározott szövegekkel történő egyezést kíván vizsgálni, ami egyértelmű VAGY feltétel, melyre ahogy te is írtad, a DARABHATÖBB függvény nem ad megoldást.Gondolkodtam egyébként egy olyan javaslatban is, hogy a DARAB2 függvénnyel megszámolt összes előfordulásból a DARABTELI vagy DARABHATÖBB függvénnyel megszámolt NEM eseteket vonjuk ki, de úgy ítéltem meg, hogy a tömbfüggvényes javaslat általánosságban jobban alkalmazható, ha esetleg később a lehetséges válaszok bővülnének pl. a következő kifejezésekkel: esetleg, valószínűleg, mindig, soha, bármikor stb.
-
RAiN91
őstag
válasz
Fferi50 #45696 üzenetére
Sajnos nem lett gyorsabb.
Szeretném megkérdezni, hogyPrivate Sub Worksheet_Calculate()
rutinban van a kódom, és ha ezt átrakom
Private Sub Worksheet_Change()
-raaz mit jelent, akkor gyorsabb lenne, itt akadhat meg?
Az Excel most 20ms-ként kapja az adatokat egy külső adatforrásból, és ha fut a VBA akkor ez 4-5 másodpercre módosul.
-
bela85
aktív tag
válasz
Fferi50 #45705 üzenetére
Van rá mód, hogy a Darabhatöbb függvénybe ugyanabból az oszlopból több kritériumot figyeljek? (az ÉS függvényre gondoltam, de valahogy nem sikerül összeágyazzam vele)
Pl: ha IGEN,NEM,TALÁN,LEHET variációk vannak és szeretném az IGEN,TALÁN,LEHET eseteket is egyszerre számolni -
bela85
aktív tag
válasz
Fferi50 #45705 üzenetére
Elvileg van ilyen függvény.. próbálgatom a Pivot azért lenne jobb, mert a jelentésszűröhöz lehet be kell tennem majd még a sorszám alapján való szűrést..mert az egyedi azonosító többször is előfordulhat a táblában és csak 1x kell számolni.
(az eredeti táblában a sorszám be van képletezve, hogy ha az egyedi azonosító már szerepel ne adjon sorszámot, ha nem akkor adjon) -
-
KBaj
kezdő
válasz
Fferi50 #45684 üzenetére
Szervusz!
Ez nagyszerű!
- A sok pont megtette a hatását. Mindig is küzdöttem a Range-vel, de kezdem érteni. Hurrá működik. A jó öreg With segített és megtette amit tudott és erre Te vezettél rá. Nagyon szépen köszönöm.
- Persze tudom ugyanolyan szerkezetű több sort is tudok mozgatni.
A "Pontosvessző" még "sima". Manuálisan: Excelben: kijelölök egy cellaterületet, CTRL+C vágólapra másolom - Nyitok egy új munkafüzetet - megnyíló lapjára CTRL+V bemásolom - mentem Másként az új munkafüzetet CSV UTF-8-ként - Totál Commander Nézőke=adatelválasztó pontosvessző>>>hát persze, hogy nem érti az angol. (Többször is kipróbáltam). Vajon mit csinálok rosszul?
Üdvözlettel. -
mulli86
tag
-
KBaj
kezdő
válasz
Fferi50 #45682 üzenetére
Szervusz!
Elnézést kérek, képként akartam csatolni, de nem sikerült (ezzel is küszködök). inkább leírom. a Range kezdetű sor okozza a hibát:
Run-time error '1004':
Application-defined or object-defined error
Nem értem, abból amit küldtem, hogy gondolod, hogy ragaszkodok...
A megküldött példának a következőket kéne csinálnia: Kiválasztja a munkalapot - jól. Az A1: F1 területre 6 cellába írja be egy másik munkalapról ugyancsak 6 cella tartalmát. Ez 6 oszlopos és egysoros adatfájl lenne. Utána, <ami még nincs kész> írnám a többi adatsort ugyanilyen szerkezetben. Ebben akódban nem gyűjtök semmit, cellát cellába másolok. Vagy valamit rosszul csinálok?
Fontos, hogy az adatok tagolása ne pontosvessző legyen, hanem sima vessző, mert azt nem érti a statisztikai program (angol nyelvű).
Köszönettel. -
tgumis
tag
válasz
Fferi50 #45675 üzenetére
Igen a példa esetén ez ránézésre megállapítható
De több száz tétel egymás alatt és van ami kg -s van ami db-os van ami kevesebb mint 1 kg -os (ot volt valami baja) és volt ami nagyobb mint 1 kg-os.
De rájöttem, hogy mindent átváltok kg-ba és akkor a dbos ár szorozva a mennyiséggel illetve a fajlagos árat a kg-os mennyiséggel.
Szóval egyenlőre úgy néz ki ez lesz a jó vonal.
Köszi az észrevételeket (végül is közelebb vitt a megoldáshoz ) -
KBaj
kezdő
válasz
Fferi50 #45668 üzenetére
Kedves Fferi50!
Köszönöm szépen a reagálásod!
Mint Paklimannak irt bejegyzésemből kitűnik, Javaslatod a fájl mentési kérdés kikerülésére nagyon jól bevált és működik. Köszönöm szépen.
A csv készítéssel (egyszerűsítéssel) még küszködök.Sheets("CSV készítéshez").Select
Range(Cells(1, 1), Cells(1, 6)).Value = _
Sheets("… Adatsor").Range(Cells(1, oszl + 1), Cells(1, oszl + 6)).Value
Készítettem egy CSV készítés nevű munkalapot, mert az előbbi sok minden mást is tartalmaz, ami nem kell a csv-hez. Az adatok átvitelekor azonban az alábbi hibát jelzi és nem tudok mit kezdeni vele.
Kérem segítsél, ha módodban áll.
Köszönöm a segítségedet. -
Agony
aktív tag
válasz
Fferi50 #45673 üzenetére
Végül ez lett a megoldás:
=FKERES("Teljesülés";'C:\Users\......\Desktop\Teszt\Teljesülés.xlsx'!Teljesules;2;0)
Elneveztem a két egymás melletti ellát "Teljesules" -nek a táblákban, bárhol is voltak, így FKERES már megtalálta és akkor itt elég volt beállítani a másik oszlopot amiben az érték van.
-
tgumis
tag
válasz
Fferi50 #45669 üzenetére
Szia
Köszi olvastam ott is. De az az alap probléma hogy lesz mondjuk 5 féle zsömle (vagy paradicsomlé db-os a termék mindegy is)
Szóval van 5 féle zsömlénk.
egy 45 gr-os 32 ft-ért
egy 39 gr-os 34 ft-ért
kettő 54 gr-os egyik 25 ft-ért a másik 45 ft-ért
egy 40 gr-os 23 ft-ért
ugye ezeket ár érték arányban kellene összevetnem:
kiderül, hogy az 54 gr-os 25 ft-ért a jó -
zsolti_20
senior tag
válasz
Fferi50 #45568 üzenetére
Szia
Kiderítettem a probléma az, hogy a cellaváltozás saját magának kezdte el generálni a makró futást. Mivel alapból egy Worksheet-Change-ben volt benne az egész. Ezzel tudtam megoldani a dolgot:
Application.EnableEvents = False
r8.Value = "Double"
Application.EnableEvents = True
-
Lokids
addikt
válasz
Fferi50 #45544 üzenetére
Sajnos az sem.
Viszont megvan a megoldás!!!codeString = " Target.Interior.ColorIndex = 0"
With ActiveWorkbook.VBProject.VBComponents(newSheet.CodeName).CodeModule .CreateEventProc "Change", "Worksheet" .InsertLines .ProcBodyLine("Worksheet_Change", 0) + 1, codeString End With
Ez hozzáadja azt az 1 sort. Működik rendesen.
-
Fferi50
Topikgazda
válasz
Fferi50 #45544 üzenetére
Szia!
Ebben a fájlban
az ujlap makró a Munka1 munkalapot kimásolja egy új munkafüzetbe.
A Munka1 munkalapon nem színezi a cellákat változáskor, de a létrehozott új munkafüzetben a megnyitás után igen.
(Megjegyzés: most pirosra színezi, mert nem sárga a cella és a colorindex=0 esetén nem látszik a változás.)
Kicsit várj a letöltéssel, mert még víruskergetés folyik odafenn a Data.hu-n.
Üdv. -
Lokids
addikt
válasz
Fferi50 #45541 üzenetére
Márpedig azt kell, hogy a makró írjon makrót a létrehozott munkafüzetbe.
Csak azt a fenti 3 sort kéne hozzáadni. Hogy mikor létrehozta az új munkafüzetet és elküldi mailen akárkinek, akkor ott a másik végén megnyitva ezt, már úgy működjön, hogy átszínezze fehérre a módosított cellákat. És nem opció, hogy a mail küldés előtt manuálisan beleírjam. -
daddy9
tag
válasz
Fferi50 #45521 üzenetére
Szia!
Sikerült meghívnom a Moduloknál megírt SUB-ot, így nagyban leegyszerűsödött a dolgom, csak a publikus változókkal kellett még gyors ismeretséget kötnöm, hogy minden jól működjön.
A hiba egyébként az volt, hogy egyszerűen amikor a Function-t használta volna a SUB, akkor szimplán átugrotta, viszont emiatt nem jött létre egy lapfül, amit a Function eredményétől függően (létezik-e már) hoztam volna létre.
Nagyon szépen köszönöm a segítséget! -
ReSeTer
senior tag
válasz
Fferi50 #45448 üzenetére
Szia!
Ez eléggé túl lett szerintem bonyolítva. Kipróbáltam, végigmentem lépésenként, de nem láttam, hogy bármit is kijelölne, sőt a nextnél mindig visszamegy a For Each részig.
Jelenleg sikerült ezzel megoldani látszólag:
Range("A5:RG5", Range("A5:RG5").End(xlDown)).Select
Egyébként ebben a kódban nem tudom mit jelent a második range értéke. Beírtam ugyanazt ami az elsőben volt. Néztem a hivatalos leírást, de nem írja, hogy mi az.
-
Heavyrain
őstag
válasz
Fferi50 #45454 üzenetére
Elosztás nincsen. Csak egy adott terméknek a raklapszáma. Az ország pedig egy termékhez tartozó törzsadat, hogy hol engedélyezett az eladása.
Szóval az 1 raklapnyi terméket el lehet adni RU-nak és RO-nak is. Nem tudjuk melyiknek lesz eladva mert bármelyiknek lehet.
De most már látom benne a logikai buktatót, hogy miért nem lehetséges.
lappy: Ez jó lenne, de ha termék1 kétszer szerepel akkor kétszer fogja melléírni a raklapszámot. Így meg nem ad valós adatot.
-
ReSeTer
senior tag
válasz
Fferi50 #45444 üzenetére
Nem jó, ez csak az A5 oszlopban lévő sorokat jelöli ki. Oszloptól függetlenül kellene. Most nézem, lehet ez nem volt leírva egyértelműen előbb. Bocs.
Tehát, A5-s cella a kijelölés egyik pontja és az utolsó cella amiben van érték/képlet/szöveg az utolsó. Az a cella lehet akár egy másik oszlopban is.@Delila_1
Majdnem jó, csak ez meg valamiért kijelöl plusz sorokat lefele, pedig ott nincs semmi. Szerintem ez azt nézi, hogy mi volt az utoljára "használt" cella, amit akár egy előző kódsor is használhatott, csak most üres, vagy valami ilyesmi.Köszönöm attól függetlenül a próbálkozásokat!
-
Delila_1
veterán
válasz
Fferi50 #45421 üzenetére
Bocs, lusta vagyok kikeresni a kérdést.
Mindig a H2-be ír – ha jól értem –, csak az azonos napon beírt értékeket szeretné 1 sorba beírni a másik lapon. Remélem, jó lesz, de csak holnap derül ki.Private Sub Worksheet_Change(ByVal Target As Range)
Dim sor As Long, oszlop As Integer
If Target.Address = "$H$2" Then
With Sheets("Munka2")
sor = .Range("A" & Rows.Count).End(xlUp).Row + 1
If .Cells(sor - 1, 1) <> Date Then
oszlop = 2
Else
sor = sor - 1
oszlop = .Cells(sor, Columns.Count).End(xlToLeft).Column + 1
End If
.Cells(sor, 1) = Date
.Cells(sor, oszlop) = Target
End With
End If
End Sub -
Fferi50
Topikgazda
-
repvez
addikt
válasz
Fferi50 #45416 üzenetére
ha ezt a makrót használom, akkor nem történik semmi a munka2ben.
Hiába irok bármit a H oszlopba, a munka2be se dátum se érték nem jelenik meg, üres marad.Az elöbbi megoldás jól müködik, csak ott minden érték uj sorba kerül és mindegyik elé kerül dátum is.
Nekem csak egyzer kellene a fátum és az értékek sorba vízszintesen kellene hogy legyenek .
-
KBaj
kezdő
válasz
Fferi50 #45409 üzenetére
Szia!
Hát igen. Korábbi VBA kísérleteimnél többször kaptam Next hibáról hibajelentést. Nem találtam a hibát. Minden For-nak meg volt a párja, le is rajzoltam a kapcsolódásokat. Már lassan ott tartottam, hogy hozom a fejszét és belevágom. Míg egyszer rájöttem. Találtam egy End nélküli If-et. Hát ez a baj. De akkor miért ír Next hibát? ..... Azóta ilyen hibára a keresést End hiányával kezdem. .... Magamban levontam a következtetést: MS-ék a VBa Help rendszerét nem elég mélyen csinálták meg. Lásd most is: a hibán átlépett, mintha minden rendben lenne és az ember azt hiszi mindent elvégzett, amit a programban előírtunk neki. Azóta minden hibajelentést fenntartással fogadok, nem biztos, hogy az a hiba ami le van írva. Tanultam: Ahogy tanácsoltad, hibakezelési sort érdemes beépíteni.
A mostani hibával kapcsolatban: a számításokat nagyrészt a munkalapon munkalapfüggvények végzik, a VBA kisebb számítások mellett ezek elvégzésük időbeni vezérlését és eredmények válogatását végzik. Azért is van vezérelve az újraszámolás, alaphelyzet kikapcsolt, számolás csak Calculate utasításra.
Mindennek ellenére tovább kísérletezem, mert az Excel szép.
Üdv. -
KBaj
kezdő
válasz
Fferi50 #45403 üzenetére
Úgy látom váltanom kell a lapon alkalmazott stílusra.
Szia!
Milyen számításra gondolsz? Én még mindig a korábbi megfigyelésemnél tartok: "És most már innen szállt ki. Tehát NEM tudja végrehajtani a cellába írást?".
Ne haragudj ezért a kérdésemért, de én korábban nem ilyen nyelvi környezetben éltem: mi az a privi?
Üdv. -
KBaj
kezdő
válasz
Fferi50 #45401 üzenetére
Kedves Fferi50
Korábbi bejegyzésem szerinti hibát keresem: „Miszerint egy darabig a VB végrehajtja az utasításokat és adott sortól egyszerűen otthagyja a programot, visszatér az munkalaphoz, mintha egy END SUB-ot kapott volna.” Igaz módosítottam egy kicsit: a Cikl változóra később lesz szűkségem.Cells(6, Előford + 1) = Cells(5, Előford + 1)
'Cells(6, Előford + 1) = Cikl
Mindig a „Cells(6,….)=Cells(5,….)” sornál száll ki. Nem hajtja végre, pedig minden szükséges paramétere ismert, számszerűleg meghatározott.
Igaz, ha a Cells(6,…) cella megváltozna, kiváltana egy újraszámolási Excel műveletet, de ez a program elején az alábbiak szerint Call kep_ki rutinnal ki van kapcsolva:
Sub kep_ki()
Application.ScreenUpdating = False
Application.CutCopyMode = False
Application.Calculation = xlCalculationManual
End Sub
Nem értem miért hagyja ott a rá bízott feladatot (ez nem számítógéphez méltó viselkedés) és mintha mi sem történt volna, visszatér oda ahonnan ideküldték. Rejtély.
Beszúrtam egy kísérleti sort a Kezd változó meghatározása után Cells(6, Kezd + 10) = Kezd. És most már innen szállt ki. Tehát NEM tudja végrehajtani a cellába írást? Ne feledjük Függvény rutinban vagyunk.
Tovább keresek.
Üdvözlettel:
KBaj -
Delila_1
veterán
válasz
Fferi50 #45398 üzenetére
Hát még, ha tagolva lenne a makró! Akkor látszana, ki kivel van.
Function Poisson2(Feltétel2 As Range) As Long
Call kep_ki
Application.Volatile 'Prohardver Delila_1 nyomán
k = 0
Kezd = Cells(8, 7) 'Feltétel kezdete oszlop
Kezd5 = Kezd + 5 'Javasolt számok terület előtti oszlop száma
Kezd22 = Kezd + 22 'Feltételek a javaslat válogatásához
a = Cells(12, Kezd) 'A munkatábla kezdő előtti oszlop száma
Előford = Kezd + a 'K(i) táblázat kezdő előtti oszlop száma
Valószín = Előford + 90 'P(x=1) táblázat kezdő előtti oszlop száma
Várak = Valószín + 90 'n(i) táblázat kezdő előtti oszlop száma
Us = Cells(4, 7) + Cells(2, 7) 'Táblázat utolsó sora
Cikl = Cells(5, Előford + 1) 'A számolás kezdete sor
Cells(6, Előford + 1) = Cikl 'Ez lesz a Ciklusváltozó kezdete
Range(Cells(Cikl + 1, Kezd + 1), Cells(Us, Kezd + 15)).ClearContents 'számítása sorok törlése
Range(Cells(Cikl, Előford + 1), Cells(Us, Valószín)).ClearContents 'K(i) táblázat törlése
Range(Cells(8, Előford + 1), Cells(8, Valószín)).Value = _
Range(Cells(Cikl - 1, Várak + 1), Cells(Cikl - 1, Várak + 90)).Value 'Az n(i-1) sor feltöltése
Cells(14, Előford + 1).Formula = Cells(14, Kezd + 49).Formula
Cells(14, Előford + 1).Select 'Kijelölés kitöltéshez
Selection.AutoFill Destination:=Range(Cells(14, Előford + 1), Cells(14, Valószín)), Type:=xlFillDefault
'Feltételek
Range("AF11:AJ11").Value = Range("AF4:AJ4").Value 'Manuális számítás
'Calculate 'A munkalapfüggvények számolása
For Cikl = Cells(6, Előford + 1) To Us 'Az utolsó + 1-ig
'1. : 'Az n(i-1) és az előző ciklusban kitörölt képletek újrafelépítése a Tartalék raktárcellából BF14
Range(Cells(8, Előford + 1), Cells(8, Valószín)).Value = _
Range(Cells(Cikl - 1, Várak + 1), Cells(Cikl - 1, Várak + 90)).Value 'Az n(i-1) sor feltöltése
Cells(14, Előford + 1).Formula = Cells(14, Kezd + 49).Formula 'Képlet
Cells(14, Előford + 1).Select 'Kijelölés kitöltéshez
Selection.AutoFill Destination:=Range(Cells(14, Előford + 1), Cells(14, Valószín)), Type:=xlFillDefault
'[P(x=1) 13-dik sor]
For i = 1 To 5
For j = 1 To 90
Calculate 'A munkalapfüggvények kiszámolják a 14-dik
If Cells(13, Előford + j) <= Cells(11, Kezd22 + i) And Cells(14, Előford + j) Then
For k = 1 To 5
If Cells(14, Előford + j) = Cells(Cikl, Kezd5 + k) Then GoTo Köv
Next k
Cells(Cikl, Kezd5 + Cells(17, Kezd5 + i)) = Cells(14, Előford + j)
Cells(Cikl, Kezd + 10 + Cells(17, Kezd5 + i)) = Cells(13, Előford + j)
Cells(14, Előford + j) = ""
j = 90
End If
Köv:
Next j
Next i
'2.
Cells(6, Előford + 1) = Cikl
'Calculate 'A munkalapfüggvények számolása
If Cells(Cikl, 4) Then
For j = 1 To 5
Cells(Cikl, Kezd + j) = Cells(12, Előford + Cells(Cikl, 3 + j))
Next j
End If
'Calculate 'A munkalapfüggvények számolása
Range(Cells(Cikl, Előford + 1), Cells(Cikl, Valószín)).Value _
= Range(Cells(Cikl - 1, Előford + 1), Cells(Cikl - 1, Valószín)).Value
For j = 1 To 90
Cells(8, Előford + j) = Cells(8, Előford + j) + 1 'n(i) cellasor munkatáblában(i) cellasor
Next j
If Cells(Cikl, 4) Then
For j = 1 To 5
Cells(Cikl, Előford + Cells(Cikl, 3 + j)) _
= Cells(Cikl, Előford + Cells(Cikl, 3 + j)) + 1
Cells(8, Előford + Cells(Cikl, 3 + j)) = 0 'n(i) cellasor
Next j
End If
'Calculate
Range(Cells(Cikl, Valószín + 1), Cells(Cikl, Várak)).Value _
= Range(Cells(12, Előford + 1), Cells(12, Valószín)).Value
Range(Cells(Cikl, Várak + 1), Cells(Cikl, Várak + 90)).Value _
= Range(Cells(8, Előford + 1), Cells(8, Valószín)).Value
Next Cikl
Call CountCcolor 'Prohardver nyomám Színes cellák számolása**** Modul3 lapon
Poisson2 = WorksheetFunction.Sum(Range("O14:S14")) 'Solver Célcella
Call kep_be
End Function -
KBaj
kezdő
válasz
Fferi50 #45396 üzenetére
Kedves Fferi50 !
Ime a program, elég hosszú. Persze ez is függvény azért, mert ha fog működni SOLVER célcellájaként akarom alkalmazni.
Function Poisson2(Feltétel2 As Range) As Long
Call kep_ki
Application.Volatile ’Prohardver Delila_1 nyomán
k = 0
Kezd = Cells(8, 7) 'Feltétel kezdete oszlop
Kezd5 = Kezd + 5 'Javasolt számok terület előtti oszlop száma
Kezd22 = Kezd + 22 'Feltételek a javaslat válogatásához
a = Cells(12, Kezd) 'A munkatábla kezdő előtti oszlop száma
Előford = Kezd + a 'K(i) táblázat kezdő előtti oszlop száma
Valószín = Előford + 90 'P(x=1) táblázat kezdő előtti oszlop száma
Várak = Valószín + 90 'n(i) táblázat kezdő előtti oszlop száma
Us = Cells(4, 7) + Cells(2, 7) 'Táblázat utolsó sora
Cikl = Cells(5, Előford + 1) 'A számolás kezdete sor
Cells(6, Előford + 1) = Cikl 'Ez lesz a Ciklusváltozó kezdete
Range(Cells(Cikl + 1, Kezd + 1), Cells(Us, Kezd + 15)).ClearContents 'számítása sorok törlése
Range(Cells(Cikl, Előford + 1), Cells(Us, Valószín)).ClearContents 'K(i) táblázat törlése
Range(Cells(8, Előford + 1), Cells(8, Valószín)).Value = _
Range(Cells(Cikl - 1, Várak + 1), Cells(Cikl - 1, Várak + 90)).Value 'Az n(i-1) sor feltöltése
Cells(14, Előford + 1).Formula = Cells(14, Kezd + 49).Formula
Cells(14, Előford + 1).Select 'Kijelölés kitöltéshez
Selection.AutoFill Destination:=Range(Cells(14, Előford + 1), Cells(14, Valószín)), Type:=xlFillDefault
'Feltételek
Range("AF11:AJ11").Value = Range("AF4:AJ4").Value 'Manuális számítás
'Calculate 'A munkalapfüggvények számolása
For Cikl = Cells(6, Előford + 1) To Us 'Az utolsó + 1-ig
'1. : 'Az n(i-1) és az előző ciklusban kitörölt képletek újrafelépítése a Tartalék raktárcellából BF14
Range(Cells(8, Előford + 1), Cells(8, Valószín)).Value = _
Range(Cells(Cikl - 1, Várak + 1), Cells(Cikl - 1, Várak + 90)).Value 'Az n(i-1) sor feltöltése
Cells(14, Előford + 1).Formula = Cells(14, Kezd + 49).Formula 'Képlet
Cells(14, Előford + 1).Select 'Kijelölés kitöltéshez
Selection.AutoFill Destination:=Range(Cells(14, Előford + 1), Cells(14, Valószín)), Type:=xlFillDefault
'[P(x=1) 13-dik sor]
For i = 1 To 5
For j = 1 To 90
Calculate 'A munkalapfüggvények kiszámolják a 14-dik
If Cells(13, Előford + j) <= Cells(11, Kezd22 + i) _
And Cells(14, Előford + j) Then
For k = 1 To 5
If Cells(14, Előford + j) = Cells(Cikl, Kezd5 + k) Then GoTo Köv
Next k
Cells(Cikl, Kezd5 + Cells(17, Kezd5 + i)) = Cells(14, Előford + j)
Cells(Cikl, Kezd + 10 + Cells(17, Kezd5 + i)) = Cells(13, Előford + j)
Cells(14, Előford + j) = ""
j = 90
End If
Köv: Next j
Next i
'2.
Cells(6, Előford + 1) = Cikl
'Calculate 'A munkalapfüggvények számolása
If Cells(Cikl, 4) Then
For j = 1 To 5
Cells(Cikl, Kezd + j) = Cells(12, Előford + Cells(Cikl, 3 + j))
Next j
Else
End If
'Calculate 'A munkalapfüggvények számolása
Range(Cells(Cikl, Előford + 1), Cells(Cikl, Valószín)).Value _
= Range(Cells(Cikl - 1, Előford + 1), Cells(Cikl - 1, Valószín)).Value
For j = 1 To 90
Cells(8, Előford + j) = Cells(8, Előford + j) + 1 'n(i) cellasor munkatáblában(i) cellasor
Next j
If Cells(Cikl, 4) Then
For j = 1 To 5
Cells(Cikl, Előford + Cells(Cikl, 3 + j)) _
= Cells(Cikl, Előford + Cells(Cikl, 3 + j)) + 1
Cells(8, Előford + Cells(Cikl, 3 + j)) = 0 'n(i) cellasor
Next j
End If
'Calculate
Range(Cells(Cikl, Valószín + 1), Cells(Cikl, Várak)).Value _
= Range(Cells(12, Előford + 1), Cells(12, Valószín)).Value
Range(Cells(Cikl, Várak + 1), Cells(Cikl, Várak + 90)).Value _
= Range(Cells(8, Előford + 1), Cells(8, Valószín)).Value
Next Cikl
Call CountCcolor 'Prohardver nyomám Színes cellák számolása**** Modul3 lapon
Poisson2 = WorksheetFunction.Sum(Range("O14:S14")) 'Solver Célcella
Call kep_be
End Function
Elég hosszú a program, van még mit csiszolni, egyszerűsíteni rajta. Mint már említettem kezdő programozó vagyok, nem értem a (</>) gombot mit jelent.
Segítségedet előre is köszönöm.
Üdvözlettel:
KBaj -
KBaj
kezdő
válasz
Fferi50 #45384 üzenetére
Kedves Fferi50 !
Nagy lelkesedésemben eljutottam egy korábban kiderített hibához, amit azóta sem tudtam megoldani, sem megmagyarázni. Konkrétan a 45372 számú bejegyzésemben tett tapasztalásomhoz. Miszerint egy darabig a VB végrehajtja az utasításokat és adott sortól egyszerűen otthagyja a programot, visszatér az munkalaphoz, mintha egy END SUB-ot kapott volna.
Nem tudom mit tegyek. Tudnál segíteni?
Üdvözlettel:
KBaj -
KBaj
kezdő
válasz
Fferi50 #45384 üzenetére
Kedves Fferi50 !
Mint ahogy írtam is a legutóbbi bejegyzésemben, dolgozom az ügyön és most félállásban vagyok, de igen jók a kilátások, hála Neked. A saját számíze szerint átírtam a kódot, úgy néz ki szépen működik és gyors!!! Íme a példa:
'***** Prohardver nyomám Színes cellák számolása
Sub CountCcolor() 'Cellaszín szerinti darabszám
Dim cel As Range, cminta As Range, cter As Range, countcl As Long
Dim xcolor As Long
Dim j As Integer
Range("O14:S14").ClearContents 'Színtalálatok törlése
'If Selection.Areas.Count <> 2 Then MsgBox "Nem megfelelő a terület kijelölése", vbCritical: Exit Sub
' If Selection.Areas(1).Cells.Count = 1 Then ' Kijelölt területek azonostása: Count=1 Mintaszín
' Set cminta = Selection.Areas(1): Set cter = Selection.Areas(2)
' Else
' Set cminta = Selection.Areas(2): Set cter = Selection.Areas(1)
' End If
Set cter = Range(Cells(3183, 15), Cells(3283, 19)) 'Vizsgáladó terület
'A Mintaszínek sorra vétele
For j = 1 To 3
Set cminta = Range(Cells(20, 14 + j), Cells(20, 14 + j)) 'Mintaszín
countcl = 0 'Színes cella számláló
xcolor = cminta.Interior.ColorIndex 'A mintaszín Index száma
For Each cel In cter.Cells 'Végig vizsgálandó területen
If cel.DisplayFormat.Interior.ColorIndex = xcolor Then 'Ha egyforma a vizsgált cella és minta színindexe
countcl = countcl + 1 'Számláló növelése
End If
Next cel
Cells(14, 14 + j) = countcl 'A színből talált darabszám
'MsgBox countcl
Next j
End Sub
Köszönöm szépen az alapötletet.
Üdvözlettel:
KBaj
Új hozzászólás Aktív témák
Hirdetés
- Milyen videókártyát?
- Mibe tegyem a megtakarításaimat?
- Mielőbb díjat rakatnának a görögök az olcsó csomagokra az EU-ban
- Nintendo Switch 2
- Elképesztő mértékben tömörítenék be a nagy nyelvi modelleket
- Epson nyomtatók
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Előrendelhető a OnePlus Pad 3
- Sony MILC fényképezőgépcsalád
- Horizon Forbidden West
- További aktív témák...
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged