-
Fototrend
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
-
Lasersailing
senior tag
Sziasztok,
Próbálnék indirect függvényt használni, de valami nem kerek, valamit nem értek ezen.
Az alábbi képletet szeretném megcsinálni, úgy, hogy a sheet nevét az első sorban látható adatból vegye, pl. F1-es cella:
Azt hinném, hogy ez lenne a képlet, de nem jó. Mi a gond?
-
Lasersailing
senior tag
Sziasztok,
Excelben szeretnék egy táblázatban összeadni sorokat.
Úgy szeretném, hogy a D oszlopban található számnak megfelelő oszlopot adja össze az 1. sorban meghatározott értéknek megfelelő celláig.Az F7-es cellában például a 64-es sorig szeretném öszeadni az értékeket a hivatkozott táblában, mert az F1 cellában 64 szerepel
A T oszlopot szeretném összeadni, mert a 20. oszlop az excelben a "T"(értelemszerűen sok sorba és sok oszlopba kell átmásolnom a képletet, dollározással még nem foglalkoztam, azt megoldom)
Köszönöm előre is! -
Lasersailing
senior tag
Sziasztok,
Egy makróval szeretnék e-mailt küldeni. Mivel már volt ilyen makróm fogtam és átmásoltam, de sajnos nem működik:
Sub email()Dim level As Outlook.Mailitem ' levélDim ouapp As Outlook.Application ' e-mail'e-mail kiküldése automatikusanSet ouapp = New Outlook.ApplicationSet level = Outlook.CreateItem(olMailItem)With level.Recipients.Add "XXX".Recipients.Add "YYY".Subject = "Trial kitting - " & Date.BodyFormat = olFormatHTML.HTMLBody = "Sziasztok! ".SendEnd WithEnd SubÉs ezt mondja:
compile error: user-defined type not defined
a levél nevű sort emeli ki F8-ra, azzal van a gondja.Mit rontok el?
köszi előre is!
-
Lasersailing
senior tag
válasz
Delila_1
#52603
üzenetére
Köszönöm, küzdök továbbra is

Most a gondom az alábbi: (és valószínűleg a háttérbeli ok ugyanaz: nem ismerem a formátumokat excel vba-ban)
Az alábbi függvényrészlet soha nem talál egyezőséget, pedig ránézésre (inputbox alapján) ugyanaz a két érték pl. sm=4-nél (lásd képernyőkép később)
sm = 3
Do
sm = sm + 1
'Loop Until year(right(Sheets(sob).Cells(sm, 1).Value,4)),month(mid(Sheets(sob).Cells(sm, 1).Value,4,2),day(left(Sheets(sob).Cells(sm, 1).Value,2))) = datum
InputBox (Sheets(sob).Cells(sm, 1).Value & Chr(13) & Right(Kiszallitasform.datumok.Value, 2) & "/" & Mid(Kiszallitasform.datumok.Value, 6, 2) & "/" & Left(Kiszallitasform.datumok.Value, 4))
Loop Until Sheets(sob).Cells(sm, 1).Value = Right(Kiszallitasform.datumok.Value, 2) & "/" & Mid(Kiszallitasform.datumok.Value, 6, 2) & "/" & Left(Kiszallitasform.datumok.Value, 4)(A sob sheeten az értékeket összehúzva dátumként kezeli az A oszlop értékeit.)
Egyezőségről képernyőkép:

Mi lehet a gond és főleg mi a megoldás?
kiszallitasform.datumok tulajdonságai:
-
Lasersailing
senior tag
válasz
Lasersailing
#52600
üzenetére
Megoldási javaslatod mentén elindultam, most egy másik hibát találtam, ami megint dátumformátum hiba:
Ezzel mi a gond?
(korábban: dim datum as date) -
Lasersailing
senior tag
Sziasztok,
UK cég vagyunk és a dátumformátum okoz gondot nekem most.
Van egy "sob" nevű excel sheetem, ami az első oszlopában dátumokat tartalmaz. Ebből szeretnék bizonyos értékeket feltölteni egy form mezőbe az alábbi sorral:Kiszallitasform.datumok.AddItem Sheets(sob).Cells(sm, 1).ValueEz remekül működik, amíg nem akarok olyan adatot hozzáadni, aminél a hónap/nap nem egyértelmű:
Az első két sornál egyértelmű, hogy május 30-át jelent a dátum --> szépen beviszi és május 30-ként értelmezi.
A két alsó viszont június 3-at jelent --> az excel március 6-kén értelmezi.Hogyan tudom a formnak "megtanítani", hogy hogyan értelmezze a dátumot?
Amit végképp nem értek, hogy az excel sheeten még tudja, hogy június 3, mert ha hozzáadok egyet, akkor június 4-et kapok, nem március 7-ét...
Köszi előre is minden támogató ötletet / megoldást!
-
Lasersailing
senior tag
Sziasztok,
Szeretnék egy excel sheetet két példányban kinyomtatni. A sheetet makróval megformázom, azzal minden oké. A két példány között két különbséget szeretnék:
1) az egyik sheetet szinesben a másikat fekete-fehérben szeretném kinyomtatni
2) a fekete fehér példányon szeretnék egy feliratot megjeleníteni, hogy "másolat"Egyedül a másolat felirat nem jön össze, fontos lenne, hogy nagyméretben kerüljön rá, hogy véletlenül se tudják összekeverni a két példányt. A jelenlegi programkód a második példány nyomtatására:
' ActiveSheet.TextBox.Visible = True
ActiveSheet.PageSetup.BlackAndWhite = True
Selection.PrintOut Copies:=1, Collate:=True
ActiveSheet.PageSetup.BlackAndWhite = False
' ActiveSheet.TextBox4.Visible = FalseA két kitörölt sor nem működik lépésenkénti futtatásnál megáll (eredetileg textbox 4-nek hívta, de sima textbox-szal sem működik
(a textbox áttetsző + Másolat felirat van benne)Hibaüzenet:
Run-time error '438':
Object doesn't support this property or method -
Lasersailing
senior tag
válasz
Lasersailing
#52040
üzenetére
Bocsánat, hogy magamnak válaszolok, de úgy tűnik, hogy ez a megoldás:
[link]Tools / references / AccessibilitycplAdmin 1.0 type admin-t kellett kiválasztani.
(Lehet hogy ezen a gépen én még nem futtattam ezt a makrót és azért nem volt itt kiválasztva?) -
Lasersailing
senior tag
Sziasztok,
(Excel365, VBA)
A makró korábban napi szinten le lett futtatva és működött, most nem akar működni. Nem emlékszem, hogy bármit változtattam volna ami ezt eredményezhetné:
Egy makró első pár sorát kivágtam, a legalsó látszó sornál elakad és kiírja a fenti hibát. Mit jelent ez a hibaüzenet?
szándékom szerint ha a 15. oszlopban nem az szerepel, hogy "nyomtatva", és a 7 oszlop ki van szinezve, akkor kinyomtat egy oldalt.Mi lehet a gond?
köszönöm előre is!
szerk:
valószínűleg az SOBvel lehet a gondja, de az constansként meg van adva, hogy mi a sheet neve (elírás nincs) (mert más soroknál is megakad, ahol ez szerepel) -
Lasersailing
senior tag
válasz
Lasersailing
#50821
üzenetére
(bocsánat a dupláért, de már nem szerkeszthető)
Az lehet, hogy a fenti sor nem is 1 teljes másodpercig vár, hanem csak addig amíg új másodperc nem kezdődik???
(F8-cal érzésre nem azonos időközök telnek el a várakozások között) -
Lasersailing
senior tag
-
Lasersailing
senior tag
Sziasztok,
Még egy kérdésem merült fel:
excel, VBA, userform / listview-t használok táblázatban lévő adatok megjelenítésére.
Azt valahogyan el lehet érni, hogy a listview header-ben az adatokat tördelje, ha nem elég széles a mező amit megadok neki?riport.Ordertabla.ColumnHeaders.Clear
riport.Ordertabla.ListItems.Clear
Ordertabla.View = lvwReport
Ordertabla.Gridlines = True
Ordertabla.LabelWrap = True
Ordertabla.ColumnHeaders.Add , , Sheets("orderriport").Cells(3, 1).Value, 105
Ordertabla.ColumnHeaders.Add , , Sheets("orderriport").Cells(3, 2).Value, 130
Ordertabla.ColumnHeaders.Add , , Sheets("orderriport").Cells(3, 3).Value, 180A fenti sorokkal töltöm fel adatokkal. Az adatoknak elég a fent megadott szélesség, de a fejlécben olyan tömören kell fogalmaznom, hogy az már az érthetőség rovására megy. Lehet ott tördelni automatikusan?
-
Lasersailing
senior tag
válasz
Fferi50
#50683
üzenetére
Szia,
Ismét köszönöm válaszodat!

Én írtam ki így az adatot (mármint a makróm), így tuti. rá. Sajnos angol cég vagyunk így örökös dátumformátum problémákkal küzdünk.
Ami igazán "szép", hogy ez a dátumformátum az exceltől jött automatikusan...
Ezzel írom ki a dátumot oda, ahonnan később beolvasom:Sheets("serials").Cells(sm, 3).Value = Date & "_" & TimeMegcsináltam a mókolást, elég csúnya lett, de működik. Azért megosztom, hátha van szebb ötleted Neked, vagy bárki másnak:
keresdatum = Mid(Sheets("Serials").Cells(se_sm, 3).Value, InStr(1, Sheets("Serials").Cells(se_sm, 3).Value, "/20") + 1, 4) & "/" & Right("0" & Left(Sheets("Serials").Cells(se_sm, 3).Value, InStr(1, Sheets("Serials").Cells(se_sm, 3).Value, "/") - 1), 2) & "/" & Right("0" & Mid(Sheets("Serials").Cells(se_sm, 3).Value, InStr(1, Sheets("Serials").Cells(se_sm, 3).Value, "/") + 1, InStr(1, Sheets("Serials").Cells(se_sm, 3).Value, "/20") - InStr(1, Sheets("Serials").Cells(se_sm, 3).Value, "/") - 1), 2)Ez úgy tűnik, hogy jól működik, csak nem szeretem, ha kilóg a képernyőről a képlet...
Ill. ekkora képletnél már előfordulhatnak hibák, amit nehéz kiszúrni, ha nem nagyon látványos... -
Lasersailing
senior tag
Sziasztok,
(excel vba kérdés office 365 fut, angol nyelvi beállításokkal)
Két dátumformátumot szeretnék összehasonlítani:
1) "vegdatum":ezt az alábbi módon hozom létre:vegdatum = riport.evig.Value & "/" & riport.hoig.Value & "/" & riport.napig.Value
Pl. 2023 dec. 28-a így néz ki:
28/12/20232) keresdatum. Ezt az alábbi képlettel állítom elő:
keresdatum = Left(Sheets("Serials").Cells(se_sm, 4).Value, InStr(1, Sheets("Serials").Cells(se_sm, 4).Value, "_") - 1)
Pl. ebből a sorból:
2/9/2023_9:54:02 AM
(ez február 9-ét jelől, amit így látok a locals ablakban:
02/09/2023
(azaz szeptember 2-ának gondolja február 9-e helyett)A "Serials" sheet adatformátumán nem szeretnék változtatni, mert az nagyon sok mindent érintetne... hogyan lehetne ezt normálisan beolvastatni vele?
-
Lasersailing
senior tag
-
Lasersailing
senior tag
válasz
Fferi50
#50516
üzenetére
Szia,
Bocsánat, hogy eddig nem válaszoltam, csak közben elragadott a munkám, így ezzel (a szintén munkámmal
) kevesebbet tudtam foglalkozni...Office 365-öt használunk.
Közben annyit még kinyomoztam az IT-n keresztül, hogy jelenleg 2 vírusírtó fut a szerveren, ami lassítja az írás - olvasást. Elvileg folyamatban van, helyettük egy harmadik telepítése, ha lekerül az első kettő, az segíthet, főleg, hogy az egyik a kettő közül híresen lassú a (helyi) IT szerint...
A dedikált terület nem szerencsés megoldás: Az adatbázis egyik sheetje szériaszámokat tartalmaz. Egyik gépen megnyitják az adott szériaszámot (A-B-C oszlopokba írás), amit a másik gép lezár (D-E oszlopba írás). Ezek között elvileg lehet, hogy csak 5 perc telik el, de akár kevesebb is lehet...
A file megnyitást már úgy csináltam meg, hogy amikor csak olvasni akar belőle, akkor csak olvasásra nyissa meg, azaz az írási jogot meghagyja más felhasználónak.
A munkafüzet megosztást lényegében teljesen kizárom, az (számomra) kezelhetetlen problémákat okozna az adatbázisban (azonos cellába két különböző adat írása), akkor százszor inkább legyen 2 sec az írás.Nagyon köszönöm segítségedet!
Visszatérve az eredeti felvetésemre. Ezeken kívül még van valami, amit érdemes ki/be kapcsolni?
-
Lasersailing
senior tag
válasz
Fferi50
#50509
üzenetére
Szia!
Először is köszönöm a segítségedet!
1) tömörítés: Ezt nem lehet kikapcsolni esetleg? (hamarabb leszek nyugdíjas, mint hogy a foglalt tárhely számítson, pedig még félidőnél sem járok...)
Most nem látom az adatbázist, de szerintem ~száz kb lehet jelenleg és szerintem évek mire Mb-os méretűvé válik
2) beolvasás miatti megnyitás: Az volt a koncepcióm (lehet, hogy hibás), hogy két file van: Egyik az adatbázis maga, amiben adatokat tárolok (lényegében 3 sheet 3-10 oszlopnyi adattal), másik meg a programot tartalmazza, amit futtatunk 4 számítógépen. A program különböző funkciókat tud ellátni, és mindig az adatbázis file-ba írja az adatokat (ez egyszerre 1-5 cella értékének megváltoztatása). Az adatbázis semmilyen függvényt nem tartalmaz, hogy ne kalkulálgassa újra (ill. egy counts van benne, ezt mondjuk ki tudnám szedni, érdemes lenne?)
3) adatbáziskezelő: sajnos nem értek hozzá. Ill. egész pontosan még középiskolában (25 éve) DBF, meg Clippert tanultam, de azóta azt csak felejtettem. DBF-et tudna excel kezelni? Van esetleg erre valami jófajta oktatóanyag?
accesst nem ismerem egyáltalán, abban nem mernék elmélyedni...
4) beolvasások - kiírások típusa:
elvileg ugyanabba a cellába nem akarok írni kétszer, viszont sokszor írok új sorba. Magyarán az előfordulhatna, hogy mondjuk a 125. sorba írjon egyszerre a program két verziója, két különböző adatot. Amúgy a közös használatúvá tételt 15+ éve használtam melóban, de elég rossz tapasztalatunk volt vele, mindig konfliktus volt belőle, amit viszont az adatbázissal (amit emberi szem nem is lát) nem mernék kockáztatni. -
Lasersailing
senior tag
Sziasztok,
Van egy makróm, ami egy hálózat több számítógépén is fut egyszerre, mely makró (minden futó példánya) egy adatbázist (xlsx) megnyit beolvas/kiír valami adatot, majd bezárja a file-t.
Mit tudok tenni azért, hogy a megnyitástól a bezárásig minél kevesebb idő teljen el?
(az imént egy teszt során 2.24 sec telt el, a szkenneléstől a következő szkennelésre történő készenlétig)Eddig ezeket tettem meg:
application.displayalerts = falseapplication.screenupdating = false
(Köszönöm Fferi50 - nek az ötletet
)- az eljárást mindig úgy írtam, hogy a lehető legkésőbb nyissa meg a file-t és a lehető legkorábban be is zárja.
Mivel napi többszáz megnyitás és bezárás van, ezért gyakorlatilag minden századmásodperc spórolás érdekes lehet számomra.
Köszönöm előre is!
-
Lasersailing
senior tag
válasz
Lasersailing
#50470
üzenetére
Úgy látom, a replace megoldja (nem csak a hosszát, hanem a karaktersorozatot is ismerem)
-
Lasersailing
senior tag
válasz
Fferi50
#50468
üzenetére
Kár, pedig olyan szép lehetett volna

Sajnos a több textboxot nem szeretném, mert a textboxok adattartama lehet 1-2-3-4 sor is. És úgy írtam az egész makrót, hogy ha kell lehessen 10 soros is a textbox (szakmailag indokolt lenne...).Másik ötletem az alábbi lenne:
Háttértörténet:
Ez a textbox tartalmaz 2 vagy több alkatrész cikkszámot + megnevezést, amikhez tartozó egyedi azonosítót be kell szkennelnie a dolgozónak. Azt szeretném mutatni neki, hogy melyik van már meg és melyik van még hátra.
Mivel azt már megtaláltam, hogy hol kezdődik a törölhető rész és a hosszát is tudom, így elvileg akár ki is törölhetném a már beszkennelt cikkszámokat.
VBAban string típusú változót karakterenként tudok másolni?
Arra gondolok, hogy átrakom a textbox értékét egy stringbe, majd az eredetileg pl. 60 karakter hosszú stringból kitörlöm a 24-40 közötti karaktereket. Ezt hogyan lehet megtenni? (értelemszerűen az új string 43 karakter hosszú lesz) -
Lasersailing
senior tag
Sziasztok,
Excel, VBA userform, textbox mezőn szeretném kiemelni valamilyen módon (áthúzás lenne a legjobb) egy szövegrészletet (makró végzi, nem a user döntése alapján). Már megvan a kezdő karakter sorszáma és a szöveg hossza is, csak a kiemeléssel magával nem boldogulok. Erre tudna valaki egy példát mutatni?
Köszönöm előre is!
-
Lasersailing
senior tag
Userformon hogyan lehet azt meghatározni, hogy az egyes mezők, pl. textboxok közül melyik legyen előlrébb és melyik hátrébb? (melyik takarja ki a másikat)
(50458-as példánál maradva: szeretném, hogy a szken1 és szken2 egy harmadik mező mögé legyen elrejtve.)
szerk:
Megtaláltam, bocsánat:
jobbklik és bring forward / bring backward -
Lasersailing
senior tag
válasz
Lasersailing
#50347
üzenetére
Végül az alábbi megoldást választottam, mert amit Delila írt / linkelt, az más problémát okozott (valószínűleg az a probléma is kezelhető lett volna, csak amikor elkezdtem ide írni a kérdésemet rájöttem a legegyszerűbb megoldásra, lásd lent)
Az alap problémám az 50347-ben leírtam.
A megoldás pofonegyszerű: csinálok szken1 és szken2 nevű textboxot és mindkettő meghív egy harmadik procedure-t, amiben van a lefuttatandó makró (előtte elmentem az értéket egy mezőbe, legalább a user is látja, hogy mit szkennelt be).
A szkennelés után mindig átugrik a másik textboxba, mivel a többi mező tabstop false-ra van állítva.(leírtam, hátha más is belefut ilyenbe)
-
Lasersailing
senior tag
válasz
Lasersailing
#50349
üzenetére
Kicsit pontosítom a kérdésemet:
Remekül végig tudom szkennelni az adatokat, minden fut szépen. A gondom az, hogy ezt követően egérrel szeretném, hogy a felhasználó választhasson 4 menüpontból (egérrel), de nem tudom kattintani egyiket sem. Hiába kattintok rá, nem történik semmi. (Ill. lépésenkénti futtatásban látom, hogy lefut a program amit írtál, de a program amit az adott gombhoz rendeltem nem fut le.)Az alábbiak mit jelentenek, mit csinálnak? lehet az a baj, hogy ezt nem értem:
byval cancel as msforms.returnbooleancancel = trueGondolom ez adja meg a fentinek az értéket(bocsánat az amatőr kérdésért még pascal-ban tanultam programozni, excel dolgait cseppenként szedegetem össze)
-
Lasersailing
senior tag
-
Lasersailing
senior tag
Sziasztok,
Excel VBA-ban lenne a következő kérdésem:
Van egy userform, amit használ a felhasználó. Azt szeretném, hogy ezen a userformon csak egy textbox-ba tudjon a felhasználó adatot beírni / beszkennelni. Az elvégzendő programrészlet készen is van, afterupdate()-tel hívom meg (azaz csak ha a megrendelésszámot teljesen beírta / beszkennelte).Eredetileg a userform-on minden cella tabstop = false-ra van állítva, kivéve a szken nevű textboxot, ahol szeretném a felhasználónak, hogy adatot berögzítsen, de ez nem jó, mert szkennelés után nem tud az "soremelés (enter)" után új cellára átugrani, azaz már a programkód sem kerül lefuttatásra.
Gondoltam, semmi gond berakok egy kamu mezőt, amire átugrik (kamu_mezo: tabstop = true). Ez működik is, csak akkor meg ide szeretné a következő adatot szkennelni, én viszont a szken-be szeretném.
Most úgy működik, hogy minden szkennelés után tab-ot kell nyomni, de ez így elég buta megoldás, hogyan lehetne ezt megoldani okosabban? -
Lasersailing
senior tag
válasz
Fferi50
#50294
üzenetére
Köszönöm Neked, de sajnos ez nem az amire én vágynék:
csinált nekem ~13 kis ablakot, amiből bezárogattam 11-et majd elrendezem azt a kettőt normálisan. Na mondom ez így jó lesz, de utána mikor váltani akarok egy ablakot nem vált, hanem új ablakot nyit meg a már meglévő kettő fölé. Ennél még a a képlopó is jobban használható. Sajnos arra nem gondoltak, hogy az ember szereti látni is amit csinál...
-
Lasersailing
senior tag
válasz
Fferi50
#50286
üzenetére
Köszönöm szépen, Neked és Delilának is a segítséget!
olyan kérdés jutott eszembe, hogy két monitoros környezetben dolgozom és szeretném, ha az egyik monitoron a VBA object-jét tudnám nézni, míg a másikon a VBA code-ját. Értelemszerűen ugyanannak az excelnek (általában) ugyanazon userformját
Van erre lehetőség?
-
Lasersailing
senior tag
Bocsánat még egy kérdésem lenne:
Ha egy userform-on egy combobox értékét megváltoztatom ahhoz a _change() funkció segítségével tudok programlépéseket hozzárendelni. Hogyan lehet azt elérni, hogy amikor a makró változtatja meg az adott combobox értékét, akkor viszont ne fusson le? -
Lasersailing
senior tag
Sziasztok,
Excel 365 VBA kérdésem lenne:
Van egy adatbázis, amibe makró segítségével szkennelek be adatokat. Teszt alatt 6 sora van, a sorból az első a megrendelés szám, ami tartalmilag egy 10 jegyű szám (csak szám). Az első 5 sorba beszkennelt adat valamiért text formátumban lett letárolva, most viszont ha beszkennelek adatokat, akkor azokat számként tárolja el. (gondolom azóta valamit átírhattam a makróban, de ez mindegy is, mert nem tudom, hogy mit...)Nem is lenne ezzel gondom. A makró egy másik részében kiolvasom ezeket a sorokat és az első oszlop adatát, mint kulcsot használva keresem vissza, hogy a felhasználó a lehetséges kulcsok közül melyikhez tartozó adatokat szeretné megnézni. A gondom itt kezdődik: Ha text-ként van letárolva a mező adata, akkor azt megtalálja, ha viszont számként, akkor nem találja meg. Pedid a beolvasott adatra keresek (felhasználó csak kiválaszthatja a beolvasott adatot, nem írhat be), azt gondolnám, hogy mindenképp meg kellene találja, de nem.
Eltárolt adatok:

A 2-6 sor között a zöld háromszög mutatja, hogy "text"-ként értelmezi az adatokat
A 7-es sor viszont szám. Bár minden adat text típusú (fent jelőlve). Ha összehúzom a cellákat csak A7-et adja hozzá, a többi az excel szemében nem szám.Az alábbi sor keresi a "Seged" táblában az "ordervalaszto.value" (itt választja ki a user a 6 lehetséges érték valamelyikét) értékét.
Ha pl a 2133990001-et választom ki megtalálja, ha a 2135480001-et akkor viszont nem találja meg, vidáman továbblép (F8-cal léptetve a futást látom):Do
sm = sm + 1
Loop Until Sheets("Seged").Cells(sm, 1).Value = ordervalaszto.Value Or IsEmpty(Sheets("Seged").Cells(sm, 1))Mi ennek az oka, és főleg hogyan tudnám ezt elkerülni?
Biztosan minden orderszám kizárólag számból fog állni, de amúgy az sem gond, ha text-ként tárolom de találja meg "saját magát" mindig.(remélem érthetően sikerült megírni a kérdést)
-
Lasersailing
senior tag
válasz
Sátán44
#50078
üzenetére
Szia,
A data menüben van data validation, ott állítsd be az engedélyezett cellákat list-re, majd a forrásnál egérrel kijelölöd/beírod, hogy mely cellákból fogadjon el értéket.
$-jeleket használd a szokásos módon, ha másolni szeretnéd a cellákat!De ez (tudtommal) nem tud olyat, hogy kitöltéskor szűkítse a listát és a végén csak választhassál:
- itt vagy kiválasztod, hogy melyiket szeretnéd,
- vagy beírhatod pontosan azt.Ha elírod, akkor hibaüzenettel nem enged kilépni a cellából (bár ez állítható, ha megnézed a kisablak tabjait)
-
Lasersailing
senior tag
válasz
Fferi50
#50056
üzenetére
Köszönöm!
A második ötletet simán el tudom képzelni, ez magyarázná, hogy miért csak néha dob hibát.
Holnap megpróbálok betenni egy rövid szünetet ("sleep") és úgy fogom használni egy pár napig, ha akkor is előjön, akkor jelentkezem. Ha nem, akkor meg kitesztelem mi a legrövidebb várakozási idő ami még elfut. (mert közben az is a gond, hogy rengetegszer kell hálózati file-t megnyitni - bezárni, így pont várakoztatni nem szeretném a programot) -
Lasersailing
senior tag
válasz
Fferi50
#50050
üzenetére
Bocsánat valamit elbénáztam, a csatolásnál:
Ugyanaz a programrészlet egyszer elakad máskor nem. Holnap bentről tudok csatolni hosszabb programrészletet.
Amiket ír:
"invisible": ennek az elemnek a láthatóságát nem variálom a makróban, mindvégig látható --> kizárnám
"not enabled": ez nem tudom mire vonatkozhat???
"type does not accept focus": máskor meg elfogadja, talán nem ez a gond, nem?
-
Lasersailing
senior tag
Sziasztok,
Excel vba-ben lenne kérdésem:
egy userform-on szeretnék egy mezőt kiválasztani az alábbi sorral:orderattekinto.szken.SetFocus
Ez bizonyos esetekben működik úgy ahogyan szeretném, majd más esetekben hibára fut:
Ennek mi lehet az oka? Mi lehet a hiba? -
Lasersailing
senior tag
Sziasztok,
office 365 VBA-hoz kapcsolódó kérdésem lenne:
probléma 1:
Van egy userform-om, amin található egy textbox típusú mező, ahova szeretnék adatokat beszkennelni. Odáig eljutottam, hogy beszkennelem az adatot.
(A szkennelés egy notepadban ellenőrizve tartalmazza az <enter> karaktert is (vagy legalábbis a soremelést biztos)). VBA userformon elvileg el kellene ugrania egy következő mezőre, amin a tabstop engedélyezve van. Ezt követően elvileg el kellene kezdje az alábbi programrészletet:Private Sub szken_AfterUpdate()
De nem kezdi el, csak ha rákattintok egy másik mezőre a szkennelés után.Ami az igazán furcsa, hogy egy másik programrészletnél meg működik ez gond nélkül, de nem látok semmilyen különbséget ami okozhatná ezt.
probléma 2:
Próbáltam megkerüléssel kezelni a problémát:
Csináltam egy üres textbox-ot, csak azért, hogy ott átállítsam a "focus"-t a megfelelő cellára, de erre az alábbi hibát dobja:Valamelyikben tudtok segíteni, hogy mi lehet a gond?
Köszönöm előre is!
-
Lasersailing
senior tag
válasz
Fferi50
#49044
üzenetére
Szia!
A userform kódlapján van a program, ami meghív egy file megnyito modult ami a folapon van. Utána dolgozik a userform progi, majd a folapon lévő másik program bezarja a filet.
1) azért van külön bontva, mert a megnyitást és bezárást több helyen is használom.
2) fontos, hogy az adatbázis minél rövidebb ideig legyen megnyitva, mert ugyanezen programot másik gépen is futtatjuk majd, és közös adatbázisba dolgoznak.Amit javasoltál hétfőn megnézem, de elvileg ma próbáltam és teljesen meghülyült tőle az excel. De lehet, hogy rosszul csináltam, mert tobb dolgot is csináltam egyszerre (pedig erre nem vagyok kepes, szóval hibazhattam... 😀 )
-
Lasersailing
senior tag
Sziasztok,
Office 365 angol, userformon adatbekérés, majd adatok kimentése másik file-ba (szerk)
Írok egy programot, aminek segítségével adatokat lehet szkennerrel beolvasni. Egymás után három adat kerül beolvasásra (megrendelés száma, cikkszám, dbszám). Ezek beolvasása működik is jól. Ha mindhárom adat beolvasása megtörténik, akkor egy másik excel file-t megnyitok, kiírok adatokat, majd bezárok. Ez is működik. A gondom az, hogy az adat kiírás után szeretném, ha egyből tudna a felhasználó újra szkennelni, de jelenleg nem tud, mert a userform nem aktív az adatkiírás után. Ha rákattintok a userform-ra, akkor lehet egyből szkennelni tovább (azaz a megfelelő mező aktív a userformon belül), de nem a megfelelő ablak az aktív windows-on belül. Erre tudtok megoldási ötletet adni?
-
Lasersailing
senior tag
Azt nem, tudtam, akkor sorry.
daver88:
Akkor amit szerintem lehet tenni, de ez nagyobb meló:
csinálsz egy adatbázis file-t, ill. egy másik file-t. A másik file-t nyitja meg minden felhasználó, az sem baj, ha csak read only-ban, mert más is használja.
Ez a másik file struktúrája ugyanúgy néz ki, mint az adatbázis maga:
1-es felhasználónak betöltöd a teljes file-t, míg
a 2-es felhasználónak csak az AB oszlopokat.
Végül mentésnél kiírod az adatokat az adatbázisba.Csak az a gond, hogy gondoskodnod kell az alábbiakról:
- mi van akkor, ha ugyanazt az adatot két ember egyszerre írja felül? Kinek lesz igaza, vagy esetleg szólsz a második mentőnek, hogy ezt közben valaki felülírta (ez esetben kell egy "láthatatlan" másolatot betölteni, hogy lássad, hogy miről mire változtatott a felhasználó, és a "miről"-t összehasonlítani az adatbázissal
- sortörlés, sorbeszúrás kezelése
- és millió dolog ami még nem jutott eszembe...
Én csináltam ilyen jellegű programot, de ott a felhasználó csak 2-3 oszlopot írhat át (átírhat többet is, de azok elvesznek makrós-mentéskor)
- nincs sorbeszúrás - törlés gond (13-jegyű cikkszámok alapján azonosítja a sort)
- És rajtam kívül még 1 felhasználó használja (+ programok mentenek az adatbázisba), akit ki lehetett képezni a használatra. Ez utóbbi a legfontosabb! Ha nagyon alap tudással rendelkeznek a felhasználók, akkor nagyon sokat kell programozni, hogy minden lehetséges hibát lekezelj... -
Lasersailing
senior tag
válasz
daver88
#48932
üzenetére
Szia,
Makróval: file megnyitásnál
Application.username-el lekérdezed az aktív felhasználó nevét, majd annak megfelelő oszlopokat megjelenítesz / elrejtesz. Értelemszerűen nem atombiztos, de gondolom nem a rosszindulatot, hanem a figyelmetlenséget kell kezelni.(pontosabban én úgy csinálnám, hogy ha nagyobb jogú felhasználó esetén megnyitáskor megjelenítenék a C oszloptól mindent, bezáráskor pedig elrejtem ugyanezen oszlopokat. Így ha jön egy új felhasználó ő alapból nem fog látni mást csak A és B oszlopot)
-
Lasersailing
senior tag
Sziasztok,
Vonalkódot szeretnék cimkenyomtatóra nyomtatni excel VBA-val. Most ott tartok, hogy egy sheeten egy excel cellát megformáztam és ki is tudom nyomtatni, de olyan nyomtatásra lenne szükségem, ami nem változtatja meg az aktív cellát. Jelenleg ezzel nyomtatok:
Sheets("print").Cells(1, 1).Value = "*" & vonalkod & "*"Sheets("print").SelectActiveSheet.PrintOut copies:=1, collate:=True, ignoreprintareas:=FalseEbből a második sorral van gondom, úgy szeretnék nyomtatni, hogy az aktív sheet-et ne változtassa meg a program.
Ill. az is jó lehet, ha sheet használata nélkül nyomtatok, (de a betűtípusnak Barabara-nak kell lennie, amit a nyomtató ismer), ez nehezebbnek hangzik.
Gondolom lehetne azt, hogy az aktív sheetet lementem, átváltok a printre majd nyomtatás után vissza a lementettre, de az időrablónak hangzik...
-
Lasersailing
senior tag
válasz
Fferi50
#48875
üzenetére
Sajnos elakadtam:
"Can't show non-modal form when modal form is displayed"A gondom az, hogy szerettem volna az adatbázis megnyitást (és bezárást) a főmodulba tenni, mivel ezt több userformon is meghívom. Viszont így nem engedi

Most kb. az jut csak eszembe, hogy átadom az aktív userform nevét és ott jelenít meg egy dobozt a szöveggel, csak így minden userform-ra rá kell tennem ezt a szövegdobozt...
Esetleg van jobb ötlet, ahogyan a fenti ötletedet működésre lehet bírni nálam? -
Lasersailing
senior tag
válasz
Lasersailing
#48876
üzenetére
Ok, rájöttem. Használtam, csak nem tudtam hogy így hívják.
Közben FFeri50 javaslata tetszik azt próbálom meg használni, mert amúgy is userformos minden ebben a programban.
-
Lasersailing
senior tag
válasz
Lasersailing
#48852
üzenetére
Továbbgondolva az eredeti kérdésemet, az alábbi megoldás érdekelne:
Userform használatával arra gondoltam, hogy megjelenítek egy formot, hogy adatkiírás folyamatban. Azt hogyan lehet megoldani, hogy miközben ez megjelenik, aközben fusson le a mentés? (és a végén elhide-olnám) -
Lasersailing
senior tag
Sziasztok,
(angol office 365, excel vba)
Egy programmal szeretnék írható formátumban megnyitni egy exceles adatbázist. Azt nem tudom biztosítani, hogy épp abban a pillanatban más program ne írjon a file-ba, de azt igen, hogy a másik program ha megnyitja írásra, akkor írás után zárja is be azonnal az adatbázist.
Jelenlegi megoldásom: megnyitom a file-t ha readonly, akkor bezárom és újranyitom, közben kap egy üzenetet a felhasználó, hogy várjon és 1 másodperc múlva újra próbálom nyitni a filet:Res = SH.Popup(Text:="Az adatbázisba éppen másik program ír adatot. Kis türelmet kérek: " & Chr(13) & szamolo & " -szer fogom még megpróbálni", secondstowait:=1, Title:="Adatbázis írás", Type:=vbOKOnly)
Ez egész jól is működik, csak nem tudom, hogyan lehetne a várakozási időt pl. 0.1 másodpercre levinni. Ezt hogyan lehet megtenni?Vagy a másik szintén jó megoldás lenne, ha az adatírás előtt ki tudné tenni a képernyőre egy üzenetet, hogy "adatok írása", ami addig van kint, amíg az adat kiírása meg nem történik.
Köszönöm előre is a segítséget!
-
Lasersailing
senior tag
Én eddig kétféleképp csináltam:
1) Másolandó cella legyen aktív. jobb alsó sarokra állsz, amikor kis plusz jelenik meg és duplakatt
2) csak billentyűhasználatnál:
másolandó cella kiválaszt: CTRL + c,
balra,
CTRL + le
jobbra
CTRL + SHIFT + fel
CTRL + VMindkettő addig másol, amíg a balra található cellák ki vannak töltve (akár üres eredményt adó függvénnyel).
Első előnye hogy gyors, "cserébe" nem veszed észre ha a táblázat "hiányos" és nem másol végig...második előnye, hogy könyebben észre veszed ha hiányos a tábla és nem kell megkeresni az egeret

Ill. van egy 3. módszer:
másolandó cella kiválaszt: CTRL + c,
CTRL + le
balra
CTRL + fel
jobbra
CTRL + SHIFT + fel
CTRL + VEz utóbbi a hiányos táblákhoz is végig másolja a képletet, mert gyakorlatilag megkeresed a legutolsó sort.
Leírva lehet bonyolultnak hangzik a 2-es és 3-as módszer, de ha rááll az ujjad, akkor örökké ezt fogod használni...

-
Lasersailing
senior tag
válasz
ny.erno
#48447
üzenetére
Szia,
Én jobb szeretem ilyenkor a vlookup-ot használni (magyarul FKERES) : utólag könnyebb módosítani, meg én legalábbis könyebben átlátom, mint a sok IF/HA függvényt egymásba ágyazva.
Kis értelmező segíség:
A oszlopban vannak az értékeid, amiket növelni kell.
B1 képletét látod a tetején. Másolható lefelé
D oszlop: Ebben keresi pl. A1 értékét
F oszlop: semmire nem kell, csak a szemednek segítség. Excel nem használja, akár el is lehetne hagyni
E oszlop: ezzel növeled A oszlop értékét a B-ben, (megfelelő sorban szereplő értékkel).Az utolsó két sorba tettem olyan példát ami hibát dob:
1: nincs 1 vagy ennél kisebb szám a jobb oldali táblázatban
181: 181+???-et nem tudja értelmezniVLOOKUP / FKERES:
1) mit keressen
2) hol keresse (első oszlopában fogja keresni csak!)
3) hanyadik oszlopot jobbra számolva adja vissza (pl. itt a D az első, E a második, F a harmadik, 4 esetén hibát dobna!)
4) 0 ha csak pontos találat esetén adjon eredményt,
1, ha "pontatlan" találat esetén is adjon eredményt. "Pontatlan" keresés jelentése: Az utolsó olyan sor, amikor a keresett értéknél kisebb a tartomány értékeEz utóbbiból következik, hogy a jobboldali tábla rendezett kell legyen!
-
Lasersailing
senior tag
válasz
Fferi50
#48431
üzenetére
Office 365 van a céges gépeken

Az egyszerre törlést megnézem, hogy működhet-e, mindenképp segítség lenne!(Elvileg változhat a sheetek neve, de:
- ebben nem vagyok biztos, már vagy 2-3 éves a makró
- gyakorlatilag szerintem sose változtatja nélkülem (én meg nem szoktam)) -
Lasersailing
senior tag
válasz
Fferi50
#48429
üzenetére
Szia,
Köszönöm, sajnos nem segített:
a makró utolsó sorába írtam így sincs semmi változás: Meghülyül, ha kikapcsolom a displayalerts-et majd bármikor később visszakapcsolom. Ha nem kapcsolgatom, akkor működik jól, csak tizensokszor kattintatni a "delete"-re (ennyi sheetet törölgetek közben) -
Lasersailing
senior tag
válasz
Lasersailing
#48379
üzenetére
Ma arra rájöttem, hogy az
application.displayalertsokozza a gondot, bár nem értem, hogy miért:A makró elején kitörlök néhány sheetet. Hogy a felhasználót ez ne zavarja van egy sorom:
application.displayalerts = false
a sheetek törlése után pedigapplication.displayalerts = trueHa így van, akkor a sheetek törlésénél nem kérdez rá a felhasználónál a makró, hogy törölje-e, viszont utána a mentésnél a mentés ablak nem tűnik el: ott ragad, mintha még mindig mentené (de intézőben látható, hogy már lementette).
Ha a fenti két sort kiszedem, akkor nem produkálja a hibát. Azt ellenőriztem, tutira lefut a második sor is, nincs feltétel, stb. mögé elrejtve (F5-tel megállítottam a programfutását).
Azt el lehet érni más utasítással, hogy a törlésnél ne kérdezzen rá a usernél, akkor megoldódna a gondom?
-
Lasersailing
senior tag
válasz
dellfanboy
#48414
üzenetére
Én már párszor belefutottam abba, hogy egész oszlopok meg voltak formázva, esetleg egy szóközzel kitöltve, ami 1millió sornál már sokat is jelenthet. Főleg, ha képlet, amit mindig újraszámol és "nincs is látható eredménye".
Én ilyenkor először minden tabon nyomok egy CTRL + End-et, ami az utolsó használt oszlop utolsó használt sorára ugrik. Ha ez irreális, akkor ott a törlés segíthet (nem mindig, csak bizonyos esetekben) -
Lasersailing
senior tag
válasz
Lasersailing
#48379
üzenetére
Erre esetleg van valakinek ötlete, hogy mi okozhatja?
-
Lasersailing
senior tag
válasz
Fire/SOUL/CD
#48389
üzenetére
Figyelmetlen voltam, köszönöm, javítom!
-
Lasersailing
senior tag
válasz
Fire/SOUL/CD
#48387
üzenetére
Kicsit máshogy, de lényegében ezt írtam be: compile hibát ír:
"Can't assign to read-only property"Ezt a tulajdonságot, hogy "listcount" nem is látom a userformon a combobox kiválasztásánál
-
Lasersailing
senior tag
válasz
Delila_1
#48383
üzenetére
Tulajdonképpen sikerült is, csak szépségtapaszt szeretnék még rá:
Ha futtatás közben kiválasztok egy elemet, akkor a következő lenyitásnál azt mutatja egyből. Lehet olyat, hogy ne az aktuálisan kiválasztott elem legyen a legördülő lista tetején, hanem a lista elejéről mutassa? -
Lasersailing
senior tag
Szeretnék excel makróban userformon megjeleníteni 20 választási lehetőséget a felhasználónak, amikből választhatna egyet. (ill. a felkínált lehetőségek lehet, hogy több mint 20, tehát + oldalválasztógombok is kell betegyek).
Van arra lehetőség, hogy a "commandbutton"-okat makróba rendezzem? ciklussal tölteném fel az értékeket, nem kellene egyesével címezgetni...
Vagy van esetleg erre valami jobb megoldás, hogy automatizálni lehessen a választható értékek kiírását? -
Lasersailing
senior tag
Sziasztok,
Van egy elég fura gondom, abban sem vagyok 100%-ban biztos, hogy excel gond...
Céges hálón van fent a file.
Van egy A makró, ami meghív egy B makrót. Ha a kolléga lefuttatja az A makrót, akkor amikor az meghívja B makrót, akkor a B makró által megnyitni szándékozott file-nál a
downloading: ab/cd/xyz.xlsx ablak feljön, majd nem történik semmi. Ha a cancel-re kattintunk, akkor azt látom, hogy a file-t igazából megnyitotta, csak ez a hibaüzenet feljött.
Ha közvetlenül a B makrót futtatja a kolléga, akkor lefut gond nélkül.
Ha viszont én futtatom hálóról az A makrót, úgy fut, ahogyan kell, azaz lefut az A makró, majd meghívja a B makrót, lefut, mindenki örül.~2 évig nem csinálta ezt kolléga gépén sem, azóta kezdte el a hibát produkálni, hogy átírtam neki a makrót, hogy otthonról is működjön (amit átírtam mappa elérést, már elvileg visszaírtam). A kérdésem az lenne, hogy mi lehet a gond az A makróban? Szerintem valamit kikapcsoltam, hogy gyorsabban fusson ami nincsen visszakapcsolva, de nem találok ilyet...
Ha az A makrót futtatom kolléga gépéről, de a B-t nem, majd próbálnám lementeni, ugyanaz fogad: mintha nem tudná lementeni, de közben lementi...
Remélem érthető voltam...
-
Lasersailing
senior tag
válasz
Fferi50
#48326
üzenetére
szia,
Find-dal nem próbáltam (igazából nem is ismerem)Van egy adatbázis ami a termékeink összetevőit tartalmazza:
- A oszlop melyik cikkszám készül,
- B oszlop melyik cikkszámból,
- C oszlop mennyi kell belőle.
Ha egy cikkszám több összetevőből áll, akkor egymás alatt sorolja fel őket. Ez 25 ezer soros excel, amit minden bent lévő megrendeléshez (~100 db) végignéz a makró, majd kiszámolja, hogy van-e hozzá alapanyag, ha nincs táblázatba jelzi, hogy mivel mikor lesz gond, de ami megszépíti (lelassítja), hogy az alapanyag is lehet, hogy összetevőkből áll, ahhoz ismét keres a 25 ezer sorban..."Másrészt a munkalap adatai behúzhatók memóriába (tömbbe) is, ahol minden művelet nagyságrendekkel gyorsabb, mint a munkalapról."
Ha jól értem ezt a 25ezer sort kellene memóriába egy tömbbe betennem. Ennek mi a módja? (mert ha egyesével pakolom bele, az nem biztos, hogy gyorsabb lesz a végén, gondolom)
szerk:
(azért lenne cél a 100%, mert addig másra úgysem használja a gépet, aki naponta futtatja a makrót) -
Lasersailing
senior tag
válasz
Lasersailing
#48324
üzenetére
-
Lasersailing
senior tag
Sziasztok,
Van egy makróm, ami elég sokáig fut. Futtató gép képességétől függően 3-5 percig.
Próbálnám kicsit felgyorsítani (képernyőkikapcs megvolt), a keresés gyorsításával (eddig "brute force"-t használtam, azaz soronként mentem, míg meg nem találtam, most bináris keresést alkalmazok /remélem így hívják: rendezett állományt mindig felezem és ha kisebbet keresek, akkor a második felét vetem el, ha nagyobbat, akkor az első felét a listának).
Ezt még tesztelem, de közben azt látom, hogy a task manager szerint a CPU kihasználtság 25-35% között ugrál. Tudok azért tenni valamit, hogy elmenjünk 100%-ig? (egyáltalán mennyire megbízható a task manager százaléka? elvileg lenne még szabad kapacitása (~50%)
-
Lasersailing
senior tag
válasz
sztanozs
#47503
üzenetére
A file-ban a gyártási sorrendet lehet variálni (~200 cikkszám sorrendjét kell eldönteni). A mentés akkor történik meg, amikor rákattintunk a mentés makróra (az adatok kimentése egy másik file-ba történik)
A gond akkor van, ha az adatokat betöltjük reggel 8-kor, majd a mentés csak du. 2-kor történik meg, mert felülírunk olyan adatokat is, amiket nem szeretnénk (mert addigra már más adat van az adatbázisban). Ennek elkerülésére szeretnék egy olyat, hogy ha nyitva van a file mondjuk 5 percig, akkor figyelmeztessen, majd még 5 perc után zárja be mentés nélkül. -
Lasersailing
senior tag
Sziasztok,
VBA-ban lenne kérésem. Van egy "adatbázis" file, amiből több különböző excel makró kiszedi a neki szükséges adatokat, ill. beírja a változtatásokat. Többször futottunk már bele abba, hogy valaki (van hogy én...
) az egyik file-ba betölti az adatokat. Majd 3-4 óra múlva módosít valamit, ezt követően elmenti az adatokat a makró segítségével. A gond az, hogy közben az eredeti adatok már módosultak(mert a 3-4 óra alatt egy másik programmal lementettek egy gyártott mennyiséget), ez esetben értelemszerűen felülír olyan adatot, amit esetleg nem szándékozott .Megoldásként egy olyanra gondoltam, hogy a file megnyitását követően pl. 5 perccel automatikusan kellene egy üzenet a felhasználónak, hogy vagy mentsen azonnal, vagy zárja be a programot. Van esetleg erre ötletetek, hogyan lehetne ezt makróval megoldani?
(tuti megoldásként 10 perccel később pedig automatikusan bezárnám a megnyitó programban az adatokat, hogy ne lásson régi adatokat).
köszönöm előre is!
-
Lasersailing
senior tag
válasz
Lasersailing
#47439
üzenetére
Úgy tűnik az alábbi segített:
Sheets(TKE).Cells(tke_sm, 1) = DateValue(Sheets(bemenet).Cells(input_sm, 9)) -
Lasersailing
senior tag
válasz
Lasersailing
#47436
üzenetére
Megpróbáltam az eredeti hozzászólásomban kigondolt megoldással, egy lépésben másolni a két adattartományt, majd lerendezni.
A gondom az, hogy a két forrásban nem azonos dátum formátum van használva (mindkettő egy rendszer outputja, tehát nem változtatható).
Az egyik dátumot felismeri, a másikat nem, így nem tudom lerendezni dátum szerinti sorrendbe. Ha a "rossz" dátumba F2-vel bemegyek, majd enter, akkor már rájön, hogy ez egy dátum. Hogyan tudom VBA-ban elmondani, hogy az adott cella egy dátum formátum?Jelenleg ezzel próbálkozom, de nem segít:
Sheets(TKE).Cells(tke_sm, 1).NumberFormat = "yyyy/mm/dd" -
Lasersailing
senior tag
válasz
Lasersailing
#47436
üzenetére
tripla, bocsánat
-
Lasersailing
senior tag
válasz
Lasersailing
#47436
üzenetére
tripla, bocsánat
-
Lasersailing
senior tag
Sziasztok,
Előre is elnézést, kicsit hosszú lesz a probléma leírás. Ha van ötletetek, akkor kérlek segítsetek megtalálni a hiba okát!Egy üres excel sheetről indultam. A file jelenleg a C: drive-on fut, így is produkálja a hibát, ha hálózaton van, akkor is előjön a hiba. (Hálózati futtatás során az alábbi hiba még read-only státuszt is eredményez, de ezzel ne foglalkozzunk, mert ha az alábbi problémát megoldjuk, akkor a read-only probléma megoldódik.)
A file-t a makró futtatása előtt ötször lementettem, bezártam, megnyitottam, semmi hibát nem tapasztaltam.
Excelben lefuttatva egy makrót, majd a file-t elmentve az alábbi hibaüzenet fogad.
Ha az alábbi makrót lefuttatom, file-t elmentem, majd ismét megnyitom előjön az alábbi hiba:

Yes-re kattintva az alábbi fogad:
A problémát okozó makró:
A makró alábbi része, gyakorlatilag a trial kitting nevű file-ból átmásol egy táblázatot, közé beszúrva az eredeti excel file-ban található sorokat. Utólag belegondolva, lehet egyszerűbb lenne az egész táblát átmásolni, mögéfűzni az új sorokat, majd az egészet dátum szerint lerendezni. (Mentségemre: nem excel vba-ban tanultam programozni, hanem még turbo pascalban, ott meg ilyen lehetőség nem volt)
Sub trial_kitting_kalkulator()Dim tke_sm As IntegerDim tk_sm As IntegerDim tk_smig As IntegerDim input_sm As IntegerDim datum As DateCall rendezSheets(TKE).SelectRange("A4").SelectRange(Selection, ActiveCell.SpecialCells(xlLastCell)).SelectSelection.DeleteApplication.ScreenUpdating = FalseWorkbooks.Open filenevWindows("Trial kitting.xlsm").ActivateIf ActiveSheet.AutoFilterMode Then Selection.AutoFilterSheets(SOB).SelectRange("A3:V3").SelectSelection.CopyWindows("trial kitting kalkulátor.xlsm").ActivateSheets(TKE).SelectRange("A3").SelectActiveSheet.Pasteinput_sm = 16tk_sm = 4tke_sm = 4Dodatum = Sheets(bemenet).Cells(input_sm, 9)'Trial kittingből kimásolja azokat a sorokat, melyek korábbiak, vagy aznapiakWindows("Trial kitting.xlsm").Activatetk_smig = tk_smWhile (Sheets(SOB).Cells(tk_smig + 1, 1).Value <= datum)tk_smig = tk_smig + 1Wend'Rows(tk_sm & ":" & tk_smig).SelectIf Not (IsEmpty(Sheets(SOB).Cells(tk_smig + 2, 1).Value)) Thendatum = Sheets(SOB).Cells(tk_smig + 1, 1).ValueElsedatum = "2021/01/01"End IfRange(Cells(tk_sm, 1), Cells(tk_smig, 22)).SelectApplication.CutCopyMode = FalseSelection.CopyWindows("trial kitting kalkulátor.xlsm").ActivateSheets(TKE).SelectCells(tke_sm, 1).SelectActiveSheet.Pastetke_sm = tk_smig + input_sm - 15tk_sm = tk_smig + 1'Trial kitting előrejelzésbe beírja a szükséges adatokatWhile (Sheets(bemenet).Cells(input_sm, 9).Value < datum) And Not (IsEmpty(Sheets(bemenet).Cells(input_sm, 9)))Sheets(TKE).Cells(tke_sm, 1) = Sheets(bemenet).Cells(input_sm, 9)Sheets(TKE).Cells(tke_sm, 2) = "Dummy"Sheets(TKE).Cells(tke_sm, 3) = "Dummy"Sheets(TKE).Cells(tke_sm, 4) = "Dummy"Sheets(TKE).Cells(tke_sm, 5) = Sheets(bemenet).Cells(input_sm, 2)Sheets(TKE).Cells(tke_sm, 6) = "Dummy"Sheets(TKE).Cells(tke_sm, 7) = "Dummy"Sheets(TKE).Cells(tke_sm, 8) = "Dummy"Sheets(TKE).Cells(tke_sm, 9) = "Dummy"Sheets(TKE).Cells(tke_sm, 10) = "Dummy"Sheets(TKE).Cells(tke_sm, 11) = Sheets(bemenet).Cells(input_sm, 9)Sheets(TKE).Cells(tke_sm, 12) = Sheets(bemenet).Cells(input_sm, 9)Sheets(TKE).Cells(tke_sm, 13) = Sheets(bemenet).Cells(input_sm, 7)Sheets(TKE).Cells(tke_sm, 14) = "Dummy"Sheets(TKE).Cells(tke_sm, 15) = "Dummy"Sheets(TKE).Cells(tke_sm, 16) = Sheets(bemenet).Cells(input_sm, 5)Sheets(TKE).Cells(tke_sm, 17) = 0Sheets(TKE).Cells(tke_sm, 18) = Sheets(bemenet).Cells(input_sm, 5)Sheets(TKE).Cells(tke_sm, 19) = "Dummy"tke_sm = tke_sm + 1input_sm = input_sm + 1Wend'Loop Until (IsEmpty(Sheets(bemenet).Cells(input_sm, 1))) Or datum = "01/01/2021"Loop Until datum = "01/01/2021"Application.ScreenUpdating = TrueVan ötletetek, hogy a fenti sorokból mi okozhatj a a file sérülését?
köszi előre is!
-
Lasersailing
senior tag
válasz
friccccc
#46499
üzenetére
Nem az a gond, hogy pl. "A" file D1 cellájából másolsz "B" file A1-es cellájába?
A fenti példában a D1-es cellában lévő hivatkozás az előző oszlopra hivatkozik, amit meg tud tenni, mert ez a C1, de ha pl. az A oszlopba másolsz, akkor az már az A előtti oszlopba akar másolni, amit nem tud értelmezni.
Remélem sikerült érthetően leírnom, hogy mire gondolok... -
Lasersailing
senior tag
válasz
Lasersailing
#46381
üzenetére
Most kicsit utána olvastam, az RMB a RENMIBI rövidítése, de ha jól értelmezem ez gyakorlatilag a CNY, amit viszont az MNB jegyez...
https://en.wikipedia.org/wiki/Renminbi
CNY-t meg jegyzi az MNB, így kérdés törölve. -
Lasersailing
senior tag
Tud valaki olyan honlapot, ahonnan a kínai yuan árfolyamát le lehet tölteni (min. 1 hónapra visszamenőleg, ingyenesen)?
(MNB-ről tudok letölteni VBA-val, de az MNB meg nem jegyzi a yuan-t) -
Lasersailing
senior tag
válasz
wreakz
#46337
üzenetére
Szia,
B oszlopban lévő képletet látod a C oszlopban:
(Nálam W01-en van két "sz", W02 üres, a többi meg nem létezik, azért ad rá hibát)Ezt megcsinálnám az adott sheeten végig (A oszlop: W01-W52, B oszlopba a képlet amit a C2-ben látsz), majd Szumma B1 : B52 megadja a számot amit keresel. (ill. egy minusz nálam kimaradt)
Üdv.
-
Lasersailing
senior tag
válasz
Cartman023
#46199
üzenetére
Szia,
Van egy olyan tulajdonsága a commandbutton-nak, hogy visible = true / false. Én azzal szoktam játszani, azaz létrehoznék 1-2-3-4-re is commandbuttont, majd az A kiválasztása esetén a 3-4-es
commandbutton.visible=false, míg 1-2-escommandbutton.visible=true, B esetén pedig fordítva. Ez az a) megoldás.b)-t akkor csinálnám esetleg, ha 1-3 és 2-4 választása esetén nagyon hasonló dolgokat kell a programnak csinálnia. Ez esetben meg a caption-ban tudod a user által látott feliratot megváltoztatni, miután kiválasztotta A-t vagy B-t.
Új hozzászólás Aktív témák
- Samsung Galaxy Z Fold5 - toldozás-foldozás
- OLED monitor topic
- Gyúrósok ide!
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Xiaomi 15T - reakció nélkül nincs egyensúly
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- One mobilszolgáltatások
- iPad topik
- Robotporszívók
- Bambu Lab 3D nyomtatók
- További aktív témák...
- HP EliteOne 800 G5 All-in-One i5-9500 32GB 1000GB 23.8" Érintőkijelző!! 1 év garancia
- HIBÁTLAN iPhone 15 Pro 128GB Natural -1 ÉV GARANCIA - Kártyafüggetlen, MS3501, 90% Akkumulátor
- ÁRGARANCIA! Épített KomPhone Ultra 7 265KF 32/64GB RAM RX 9070 16GB GAMER PC termékbeszámítással
- Telefon felvásárlás!! Apple Watch Series 9/Apple Watch Ultra/Apple Watch Ultra 2
- Xiaomi 13T Pro 512GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő












