- OLED TV topic
- Milyen videókártyát?
- Milyen notebookot vegyek?
- Akciókamerák
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- NVIDIA GeForce RTX 3080 / 3090 / Ti (GA102)
- Hobby elektronika
- SD-kártyát vennél? Ezért ne csak a GB-ot nézd! – Tech Percek #9
- Azonnali notebookos kérdések órája
Új hozzászólás Aktív témák
-
hiperFizikus
senior tag
Szervusz mindenkinek !
A VBScript programnyelvel foglalkozom. Ez nagyon hasonló a VBasic-hoz csak a HTML környezetben van és le van egyszerűsítve. A „ Class...End Class ” eljárással foglalkozom kezdőként éppen, vagyis az OOP-sal. Kérem, hogy valaki magyaráza el, hogy a „ Class...End Class ” kulcsszók között a „ Property {Get, Let, Set} ...End Property ” mire van, hogyan kell használni, mit csinál, mert itt sajnos elakadtam ennél a pontnál??? Itt meg is nézhetitek . -
martonx
veterán
WPF-et, pláne VB.NET-tel ezer éve használatam legutóbb, és csak ez miatt nem fogom fel eleveníteni az emlékeimet. Annyi rémlik, hogy elég triviális volt drag'n'drop-pal rádobni a wpf layout-ra a táblát, és ebből a VS eleve legenerálta a grid-et, meg a háttérben szükséges komponenseket (dataadapter, meg ilyesmik).
Utána pedig ezekkel a háttér komponensekkel kell játszani. -
McReay
aktív tag
Sziasztok!
Visual Basic-WPF programozás esetében datagrid segítségével szeretnék adatokat felvenni, módosítani meglévő adatbázisban.
A kapcsolatot az entity frameworkkel létesítem, szerintetek hogyan lehet megoldani?A meglévő adatok már betöltődnek a datagridbe, de azt hogyan tudom megoldani, hogy ha üres(új) sorba írok akkor mentés legyen, ha meglévő sorban módosítok akkor a módosított cella értéke módosuljon csak az adatbázisban?
-
bende126
csendes tag
Sziasztok!
Bocsánat, hogy eltűntem, de nem akartam, csak annyit beírni, hogy oké megpróbálom, amíg nem próbáltam ki ténylegesen. Szóval próbálgattam, de már nagyon nagyon fáj a fejem, hogy ennyire tré vagyok.
Jelenleg itt állok.
Sub nyomtatas()
sora = 1
sorb = 2
sore = Cells(sora, 1)
sore2 = Cells(sorb, 1)
Do
sora = sora + 1
sorb = sorb + 1
sorc = sora - 1
sore = Cells(sora, 1).Value
sore2 = Cells(sorb, 1).Value
Loop While sore = 2
sork = Cells(1, 1)
sorv = Cells(sorc, 12)
Range(Cells(1, 1), Cells(sorc, 13)).Select
Cells(2, 20).Value = "OK"
Cells(2, 21).Value = sora
Cells(2, 22).Value = sorb
Cells(2, 23).Value = sore
Cells(2, 24).Value = sore2
End subEz annyit csinál, hogy ami 2-es berendezés, az kijelölődik, Innen már csak nyomtatni kell, azzal nem boldogulok, valamint azzal sem, hogy hogyan tudom megkeresni a 3-as aztán a 4-es és így tovább a többi terméket majd kinyomtatni. Nem tudom elmenteni azt a változót, hogy megjegyezze, hogy hol hagyta abba a sorok számolását. Az OK, hogy megszámolja, hogy mondjuk, 6 sornyi 2-es berendezés van, ezt el is menti változóként, viszont hogyan tudom felhasználni, ezt a következő termékek ek megszámolásához? A 7-dik sortól kell elkezdenie számolni, de nem tudom, hogyan lehetne, illetve, hogy hogyan tudom megmondani neki, hogy most már a 3-as berendezést kezdje el számolni, aztán nyomtatni.
Nekem ez nagyon nehéz. Bárki tud segíteni annak nagyon hálás lennék.
Mellékelek egy képet az excel-ről. -
-
Lefty
addikt
válasz
martonx #2193 üzenetére
ne haragudj, excel makró, vba.
még annyit hozzátennék, hogy a public változónév dologgal tisztában vagyok, de én pl olyat szeretnék, hogy egy set-el pl worksheet változóba töltök egy munkafüzetlapot, majd az bárhonnan elérhető legyen. Ok, hogy a public-al létrehozok egy globális változót, de hogyan adok neki értéket is?
-
Lefty
addikt
Sziasztok!!
Elkezdtem most egy új programot, elég sok modulból állna, viszont próbálnám minél elegánsabban megírni.
Lényeg az, hogy lesz jó pár változó, amiket egynél többször nem akarok deklarálni, majd azt használni mindenhol. Ergo globális szinten kellene nekem az, hogy memóriába töltöm őket, majd bárhonnan meg tudjam hívni. Az sem pálya, hogy mondjuk egy külön modulban deklarálok mindent, majd ezt a részt meghívom az egyes subokban. Illetve option explicit sem pálya, mert úgy csak modul szinten tudok deklarálni, illetve memóriában helyet foglalni.
Van erre bármi mód? Köszi előre is!! -
martonx
veterán
válasz
bende126 #2190 üzenetére
Szerintem kezdjük azzal, hogy pontosan mi is az a részfeladat amit ezzel a kóddal meg szeretnél oldani?
Egyébként a kód első ránézésre nagyon túlbonyolítottnak tűnik.Pl ez helyett:
Do While e1 < e2
s2 = s1 + 1
e2 = Cells(s2, 1).Value
e1 = Cells(s1, 1).Valueelég lenne ez:
Do While Cells(s1, 1).Value < Cells(s2, 1).Value
s2 = s1 + 1Ráadásul s1-et nem is növeled, szóval az s1 is felesleges, ha az mindig fix 1
"- Lehet úgy változót deklarálni, hogy a do while utasítás alatt található? Vagy már korábban meg kéne tennem?"
Persze, miért ne lehetne -
bende126
csendes tag
válasz
bende126 #2187 üzenetére
Sziasztok, még mindig ez előzményekben lévő makró megírása.
Jelenleg itt tartok:
Sub nyomtatas()
s1 = 1
s2 = 1
o1 = 1
Do While e1 < e2
s2 = s1 + 1
e2 = Cells(s2, 1).Value
e1 = Cells(s1, 1).Value
Do While Cells(s2, 1) = Empty
s2 = s1 + 1
Loop
sork = s1
sorv = s2
Loop
' a nyomtatás részhez még nem kezdtem hozzá, ezt azért tettem bele, hogy lássam, milyen terülere vonatkozik a fentebbi kód
For t = sork To sorv
Cells(1, 20).Value = s2
Cells(t, o1).Interior.Color = vbYellow
Next
End Sub, tudom, hogy nem jó, és, hogy mennyire jó poén tárgyává váltam, de ezt most hagyjuk!!
)
Lenne néhány kérdésem:
- Lehet úgy változót deklarálni, hogy a do while utasítás alatt található? Vagy már korábban meg kéne tennem?
- Jelenleg végtelen ciklus jön létre az excel kifagy. elvileg a Do While Cells(s2, 1) = Empty sor nem ennek elkerülésére lenne?
- a kijelölésre a ActiveSheet.Range(Cells(s1, o1), Cells(s2, o2)).Select sor jó lehet? - o2 lesz majd később, még nincs
Előre is köszönöm -
bende126
csendes tag
Sziasztok!
Rengeteget dolgozok excelben,de eddig csak a függvények mélységéig jutottam,meg néhány egyszerű script megírásáig. Most viszont kicsit komolyabb dolgom lenne. Vannak termékcsoportok amikbe változó,hogy hány termék található. A feladat az lenne,hogy termékcsoportonként külön-külön lapra ki kéne nyomtatni a termékeket az adataival. A termékcsoportokat az A oszlopban külön-külön számokkal vannak megjelőlve,a B oszlopban található a termékek neve aztán a c-től M-ig a termék adatai. Külön csavar,hogy a felső 4sor fixen meg kellene maradnia minden kinyomtatott lapon. Hogyan lehetne ezt megoldani? Valaki segítene nekem? Hozzáteszem kezdő vagyok. Előre is köszönöm szépen a segítséget. -
martonx
veterán
válasz
kanyolajos #2184 üzenetére
Csak értékek kimásolása:
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=FalseA jelszó beírást meg tudod oldani sendkey paranccsal.
-
kanyolajos
csendes tag
Sziasztok
Egy excelben írt maro-hoz kérnék némi segítséget.
Egy másik excel file-ból olvasok ki egy sheetet.
Két problémám lenne:
A kiolvasás működik,de csak az értékeket szeretném átmásolni, a fügvényeket nem,
valamint két jelszóval védett az excel: első az Encrypt a második a normál olvasás írás védelem.
Ugye hivatkozáskor megnyitás előtt be kell írni a két jelszót manuálisan.
Milyen utasítással lehetne ezt megoldani , hogy a futó macro maga nyissa meg ?
Segítséget előre is köszönömIme a kiolvasó macro:
' .......................................................................................................................................
'Hivatkozás az adat sheetre
Sheets("Datum").Visible = True
'Hivatkozás hova történjen a beírás
Sheets("01").Visible = True
'Hivatkozás aktuális idő lehívása
Sheets("Datum").Select
'Hivatkozás aaktuális idő lehívása
Range("H3").Select
sajatnev = ActiveCell
'Hivatkozás aaktuális idő lehívása
Range("D6").Select
fajlnev = ActiveCell'Hivatkozás honnan olvassa be a stop adatokat
fajlnevY0 = "C:\teszt\" + fajlnev
ChDir "C:\teszt"
'Hivatkozás melyik sheetből olvasson
Workbooks.Open Filename:=fajlnevY0
Sheets("1 data").Select
Columns("A:AZ").Select
Selection.Copy
Windows(sajatnev).Activate
'Hivatkozás melyik sheetbe írja ki
Sheets("01").Select
Columns("A").Select
ActiveSheet.Paste
Windows(fajlnev).Activate
Columns("L").Select
Selection.Copy
Windows(sajatnev).Activate
Columns("J").Select
ActiveSheet.PasteActiveWindow.SelectedSheets.Visible = False
Windows(fajlnev).Activate
Range("A1").Select
Selection.Copy
ActiveWindow.Close (False)Sheets("Datum").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("Mon").Select
ActiveWorkbook.Savethx
Luí -
Baryka007
addikt
Üdvözletem, a Batch fórumról kicsit át merészkedtem ide mert most egy Visual Basic programot kéne írnom ( erre sajnos képtelen a batch...) a lényeg hogy van egy ilyen programom eddig idáig jutottam vele...
Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Sleep 9000 '
For i = 1 To 1000
WshShell.AppActivate "AutoCad"
WshShell.SendKeys "{TAB}"
WScript.Sleep 50
WshShell.SendKeys "1"
WScript.Sleep 1500
WshShell.SendKeys "1"
WScript.Sleep 2000
WshShell.SendKeys "1"
WScript.Sleep 2000
WshShell.SendKeys "1"
WScript.Sleep 2000
WshShell.SendKeys "1"
WScript.Sleep 50
WshShell.SendKeys "a"
WScript.Sleep 50
NextA lényeg hogy a végén az "a" karaktert legalább 3mp ig lenyomva kéne tartania ... de ha meg az "a" betűt külön ciklusba rakom hogy kb 3 secig látszólagosan lenyomva tartsa előtte rendesen túráztatja a processzort és meg is áll egy kicsit az élet a gépem agyába amikor az a ciklus folyik szóval a lényeg hogy az "a" betűt a végén 3 secig kéne lenyomva tartania ... előre is köszönöm!
-
vilag
tag
válasz
martonx #2180 üzenetére
Igen, tudom, hogy visszafelé kompatibilis, azonban az office 2007 (és az utáni) verziókban a menüt sikerült olyan jól megoldani, hogy parancsokat nem tudsz kitenni a menüszalagra csak ha saját xml-t szerkesztessz.
Jelenleg viszont sok olyan a menüben alapból nem szereplő parancsot használok, amelyek egy gombnyomással történő elérése igen sok segítséget jelent.
Tudom, hogy van olyan program ami a gyári menüszalag fölé kiteszi a régi típusú menüt, az viszont nem legális, így erre a sz.r céges gépre nem tehetem fel.
A kérdésem viszont még mindig áll!
Mi a megoldás a felvetett problémára?
Üdv, vilag
-
vilag
tag
válasz
sztanozs #2178 üzenetére
Azt is előkutathatom majd, de a jelenség az Office 2007 mellételepítésével jelentkezett és nem csak programkódból való megnyitás esetén jelentkezik.
Ha már nyitva van egy munkafüzet és megnyitok egy másikat, akkor kiírja, hogy:
A PERSONAL.XLS fájl zárolva van szerkesztésre
'x y'. (én)
Megnyitja "Olvasására", vagy válassza az 'Értesítés" gombot, ha az olvasásra való megnyitás mellett értesítést is kér, mikor a dokumentum használatát bejezték."
Ez ugye arra utal, hogy másik excelt indított az új munkafüzetnek. Továbbá ezt támasztja alá az is, hogy ha a nagy X-el zárom be a munkafüzetet, akkor csak ezt az egy munkafüzetet zárja be, az excel ablakkal együtt is.
Ha meg a kis X-el zárom be a munkafüzetet, akkor meg marad egy üres excel ablakom. -
vilag
tag
A probléma inkább kicsit excel jellegű.
Office 2003 mellé feltelepítettem az Office 2007-et.
Azóta olyan problémával küzdök, hogy ha nyitva van egy excel tábla és megnyitok egy másikat, akkor nyit egy új excelt és abban nyitja meg az új táblát.A jelenségnek a következménye igen kellemetlen, mert ha megnyitok egy új fájlt, akkor mindig kiírja, hogy a personal.xls írásra meg van nyitva bla bla bla.
Egyik programnál pedig azt idézi elő, hogy ha kódból megnyitok egy munkafüzetet ami már egyébként is nyitva van, akkor lesz egy nyitott pl. próba.xls-em és egy nyitott próba.xls [olvasásra] munkafüzetem.
A kérdésem az, hogy hogyan lehet megoldani, hogy ne új excelt nyisson minden megnyitott munkafüzethez, hanem csak egy excel lehessen több nyitott munkafüzettel?
Előre is köszönöm!
-
pajan2
csendes tag
Sziasztok,
Egy lelkes amatör vagyok és szeretnék valami újat tanulni.
Szeretnék megismerkedni a programozással, egy adatbázis alapú szoftvert készíteni, ami kicsit megkönnyítené a munkámat, amiben lehetőség lenne cad fájlok 2D ill. 3D megtekintésére is (habár ez a jövő zenéje), de elsősorban egy adatbázis lenne a CAD fájlaimhoz.
A Visual Basic eddig nagyon szimpatikusnak tűnik, a Visual Studio használatával, van grafikus interface ill rengeteg forrás a neten, ami talán megkönnyítené a tanulást. (A C++ -ra se időm, se kedvem, addig a szintig nem is tervezek eljutni.)
Viszont! A programba később szeretnék integrálni egy speciális 3D fájlformátum nézegetőt, aminek supportja JAVA ill. C++ SDK fejlesztő eszközöket kínál. Egyéb 3D szoftverekkel való kapcsolat pedig még a Pythont is felhozza, amivel scripteket lehet írni Blenderben, Sketchupban és Rhinocerosban.
Tulajdonképpen a kérdésem az lenne, hogy lehetséges e több programozási nyelven elérhető forrásokat (könyvtárakat .dll, SDK) egybe fésülni. Tehát pl.: ha elkezdek VB alapon egy szoftvert akkor mit kell tennem ha integrálni szeretnék egy forrást aminek az SDKja JAVAra vagy C++ -ra van írva ?
-
vilag
tag
válasz
martonx #2173 üzenetére
Azért kérdeztem az időtúllépést, mert ha van ilyesmi, akkor valami környezeti változót kérdezek le és az alapján döntöm el, hogy megnyíljon e a segédtábla vagy sem.
Nem tudom, hogy a VBA programkód vár e egy adott sor végrehajtására (open) vagy csak "bedobja", hogy open aztán megy tovább és vagy megnyilt, vagy nem.
Bár ha jól sejtem, akkor vár, a kérdés csak az, hogy meddig...
-
vilag
tag
Volna egy még újabb kérdésem.
Az egyik programban a munkafüzet megnyitásakor megnyitásra kerül egy segédfájl is amiből adatokat veszek ki és írok bele (amolyan napló ha úgy tetszik).
Az egyik kolléga VPN-en keresztül éri el a helyi hálót.
Amikor elindítja a programot a következő hibaüzenetet kapja:Run-time error '1004':
WorksheetFunction osztály Match tulajdonsága nem érhető el-Először arra gondoltam, hogy nem tudja megnyitni a segédfájlt, de valószínűleg nem ez a probléma, mert On Errorral ezt levezéreltem olyan módon, hogy ha a Workbook Open hibára fut akkor hagyja ki a hozzá kapcsolódó további műveleteket (abból olvasás, és írás) és egyszerűen csak nyissa meg az eredeti fájlt.
Elmondása szerint a korábbi verziók (amikor ez a segédfájl még nem volt hozzákapcsolva) is borzasztóan lassan nyíltak meg (a munkafüzet mérete kb. 800-900 kb).
A kérdésem tehát az, hogy van e az ilyen műveleteknek esetleg időtúllépése a VBA-ban?
Vagy van e valakinek ötlete a hiba elhárításával kapcsolatban?
-
vilag
tag
Akkor kérdezek valami újat.
Egy ListBoxba szeretnék értékeket "bevételezni" a munkafüzet egy tartományából, de csak azokat a sorokat, amelyek láthatóak.
Megoldható ez?
Egyelőre nem találtam csak olyan megoldást, hogy egy segédmunkalapra másoltatom, a keresésnek megfelelő értékeket és azt "vételezem" be.Igazából valami olyasmit szeretnék megoldani, hogy van nekem egy vezérlőm (mondjuk textbox), melyet amolyan keresőmezőnek (vagy inkább szűrőmezőnek) szeretnék használni és a bevitt karaktereknek még megfelelő találatokat szeretném listázni a listboxba.
Tehát minden billentyűleütés után frissülne a listbox tartalma.Azért szeretném így megoldani, mert akkor nincs szükség segédmunkalapra, szűrésre, másolásra -mert ugye ezek mind időbe telnek és a nem kifejezetten csúcskategóriás gépeinken ez hosszú másodpercekbe kerülne.
-
martonx
veterán
Én olvastam, meg gondolom mások is, csak nincs kedvünk az exceles önképzésedet megzavarni. Illetve a vélményemet tudod: Amire az excelt most használod, azzal már rég túlléptél a normalitás határán.
Persze tudom, hogy a körülmények erre kényszerítenek, nincs ezzel gond, de ne várd el, hogy az extrémebbnél extrémebb problémáidra ugorjunk. -
vilag
tag
Üdv!
Mi a fitty-fene van? Netán mindenki nyaral, hogy senki nem válaszol???
-
vilag
tag
Féli már sikerült megoldani a problémát.
Ahhoz, hogy a tördelés megfelelő legyen a következőket kell tenni:
TextBox tulajdonságainál a következőket kell állítani:
MultiLine=True
ScrollBars=3
WordWrap=TrueSajnálatos módon a Scrollbar csak akkor jelenik meg ha a TextBox fókuszba kerül, így kénytelen voltam programból fókuszba hozni, majd átadni egy másik vezérlőnek a fókuszt.
Ennek az a sajnálatos eredménye, hogy a TexBoxban a szöveg úgy jelenik meg, hogy a szöveg vége látszik azaz az eleje van rejtve, nem pedig a hátulja, ahogy az várható volna.Ennek kiküszöbölésére van valakinek ötlete??
-
vilag
tag
Kis segítségre lenne szükségem. Már megint....
Már mindenféle ötletet kipróbáltam ami eszembe jutott, de eddig nem oldódott meg a gubanc.
Van nekem egy Userformom ami amolyan üzenetablakként funkcionál.
Ezen az Formon van egy textbox (korábban label), ami az excel tábla megfelelő cellájában elhelyezett üzenet megjelenítésére szolgál.
A probléma az, hogy egy olyan üzenetet próbálok megjeleníteni benne, ami nem fér el a textboxban, ezért bekapcsoltam a Scrollbar tulajdonságot.
Ezzel kapcsolatban több problémám is felmerül:
1. Csak akkor jelenik meg a scrollbar, ha a textboxban lévő szövegbe belekattintok.
-Én pedig azt szeretném, ha a függőleges srollbar alapból látható lenne (de csak akkor ha a szöveg valóban nem fér el)
2. Jelenleg a szöveg vízszintesen lóg ki a textboxból (így a vízszinte scrollbar jelenik meg), én pedig azt szeretném ha függőlegesen lógna ki (és ennek megfelelően automatikusan tördelésre kerülne), és a függőleges scrollbar jelenne meg.Szerk.: A TextBox Multiline tulajdonsága True-ra van állítva.
-
vilag
tag
válasz
Bobrooney #2164 üzenetére
Teljesen igazad van, úgy (ahogy régi matektanárom mondta) valóban elegánsabb. Holnap ha bemegyek a céghez át is írom.
A programot még 2010-ben kezdtem írni, akkor még fele ennyit sem tudtamAzóta persze sokat tanultam és ha valamire találok elegánsabb megoldást akkor át szoktam írni.
-
vilag
tag
Közben a saját kérdésem nyomán meg is találtam a választ.
A probléma az volt, hogy menet közben programból megnyitottam egy másik fájlt, így az lett az aktív munkafüzet.
Mivel az új aktív munkafüzetben nem volt olyan munkalap ezért a RowSourceot nem tudta beállítani.Szóval mindössze a megnyitás után a ThisWorkBokk.Activate parancsot kellett kiadnom és minden rendbe jött.
-
vilag
tag
Volna nekem egy gondom.
Vélhetően nem nagy probléma, csak egyszerűen nem értem az okát.Van nekem ugye egy UserFormon több comboboxom.
Az egyik ComboBoxnak a másikból vezérelve szeretnék értéktartományt adni a következő módon:
Combobox17_Change()
(...)
If ComboBox17.Value = 1 Then ComboBox18.RowSource = "Egységdíjak!b5:c21"
If ComboBox17.Value = 2 Then ComboBox18.RowSource = "Egységdíjak!b23:c33"
If ComboBox17.Value = 3 Then ComboBox18.RowSource = "Egységdíjak!b35:c38"
If ComboBox17.Value = 4 Then ComboBox18.RowSource = "Egységdíjak!b40:c43"
If ComboBox17.Value = 5 Then ComboBox18.RowSource = "Egységdíjak!b45:c56"
If ComboBox17.Value = 6 Then ComboBox18.RowSource = "Egységdíjak!b58:c58"
If ComboBox17.Value = 7 Then ComboBox18.RowSource = "Egységdíjak!b60:c63"
If ComboBox17.Value = 8 Then ComboBox18.RowSource = "Egységdíjak!b65:c66"
(...)
End SubAzonban ez a hibaüzenet jelenik meg:
"Could not set the RowSource property. Invalid property value."
Ehhez a programkódhoz egy másik UserFormon kiadott parancs juttat el, miszerint:
UserForm1.ComboBox17.Value = Workbooks(filenev).Sheets(1).Range("b2").ValueEgyszerűen nem értem miért nem hajlandó beadni ezt a szöveges értéket beállítani.
Esetleg a ComboBox18 valamelyik tulajdonsága még nincs megfelelő állapotban ahhoz, hogy a RowSourceot be tudja, állítani?
Ha így lenne, akkor melyik az a tulajdonság amelyik nem megfelelő?Esetleg nem az az aktív munkafüzet amiben ez a munkalap található?
Lehet itt teljes hivatkozást megadni??? -
pirit28
csendes tag
válasz
martonx #2157 üzenetére
Szia Martonx !
Frappáns megoldást tudtál nyújtani köszönöm.
Egy kérdésem volna ezzel kapcsolatban ,hogyan tudom honnan látom egy kb 900 cellás táblázatból, leszűrni,hogy mi változott és mi nem.Van e valami plusz beállítás ?
Ha pl minden nap ugyan azt a táblázatot töltöm és mindig változik egy cella naponta többször is akkor honnan fogom tudni, egér rárántás nélkül hogy mit írtam át aznap és mit nem...A választ előre is köszönöm .....
-
pirit28
csendes tag
Jóó napot az uraknak ,hölgyeknek !
Ismételeten egy nagy kéréssel fordulok,hozzátok.
A kérésem a következő lenne.
Van egy excel táblázatom,amiben különféle adatok vannak.Vannak olyan cellák is amelyek függvény formájában szedik ki egy másik táblázatból az adatokat.
A feladatom az lenne hogy bármely cellát módosítva az adott módosított cella színe megváltozzon, ezzel mutatva hogy a cella tartalma megváltozott. Én 10 színkódra gondoltam pl a világostól a sötétig.Tehát egy cella alapesetben fehér színű,és én azt szeretném,hogyha egy cellát átírnak 2 óra elteltével, akkor ennek a cellának a színe legyen más színű. Mivel annyira nem vagyok otthon a makró Írásában ,ezért kérném azon hozzáértő ember magyarázatát ,segítségét aki tudja erre a választ, hogy hogyan is kell egy ilyen dolgot végrehajtani.
Mindez azért kell, mert ebben a táblázatban az adatokat folyamatosan frissítik ,amiből én láthatnám hogy az egyes cellák változáson mentek keresztül.
Remélem érthetően fogalmaztam ,!
A választ előre is köszönöm.
-
vilag
tag
Így indult ez nálam is.
Mikor idekerültem egy (pontosabban több is) VBA-val megbolondított excel táblát kellett használnom bizonyos munkákra.Mikor beletanultam láttam, hogy vannak hiányosságai, gyermekbetegségei, vagy éppen csak változtatni kellett valamit. Ilyenkor mindig a kollégát kellett "zaklatnom", aki írta a programot. Olyankor ott ültem mellette és kérdezgettem, hogy ez miért így, meg mért nem úgy, ez mire való, nem lehetne esetleg ezt így megcsinálni, stb.
Később más munkáim megkönnyítésére elkezdtem magamtól programozni, ha elakadtam (ami persze az elején elég sokszor előfordult) csak akkor kérdeztem a kollégámat, ha meg már ő sem tudott megoldást kínálni vagy találni, akkor írtam ide.Ez mára oda jutott, hogy a legnagyobb projekt most kb. ötezer soros, de mindig valami apró cseprő, vagy (most éppen) nagy volumenű javításon, kiegészítésen dolgozom ha van idő. (Évi átlag 2.000 ügyirat ezzel készül a hivatalnál
, szóval úgy érzem volt értelme eltölteni vele az időt.
Több más mellett írtunk egy olyan programot is amire igen büszke vagyok, mert sikerült vele felváltani a sz*r papír alapú postakönyvet is, de persze egy sima postakönyvtől sokkal többet tud
Mondjuk én azért még így is inkább a kezdő szintre lőném be magam, tekintve, hogy rengeteget kell kérdeznem tőletek, meg látva, hogy mennyi olyan VBA elem van a súgóban amiről még csak lövésem sincs mire való.
-
Homer
tag
válasz
martonx #2153 üzenetére
"Laza kellemes hely lehet", ha mellette ráérsz fórumozgatni is közben.
Na jól van, nem leszek gonosz.
Az, hogy valaki mással (is) tölti az ebédidejét /szabad kapacitását nem jelenti azt, hogy olyan laza lenne a munkája. Én spec azért kezdtem el tanulni a VB-t, mert hasznát vettem a munkámban. Már nem egyszer fordult elő, hogy egy Excel-es feladatot VBA segítségével oldottam meg. Innen indult a programozás iránti érdeklődésem. Most ott tartok, hogy Turbo pascal megy valamennyire (ezt még egyetemen tanították), meg VB olyan alap-közép közti szinten (legalábbis itt érzem magam). Ezt már autodidakta módon tanultam.
-
vilag
tag
válasz
martonx #2151 üzenetére
Ezek szerint a Te "uralmad" alatt is ugyan ez lenne a helyzet, mert a napi 8 óra maszekolással eltöltött munkaidő miatt nem lenne időd foglalkozni mással...
Lehet, hogy ők is ezt csinálják, ezért nem halad semmi sehová.
/Mondjuk a saját rendszergazdánknak van rendes munkaköre is, talán ezért sem ér rá igazán mással foglalkozni./
Mivel foglalkozol munkaidőben?
-
martonx
veterán
Van rálátásom közszférában dolgozó rendszergazdák (középiskolai rendszergazdától kezdve egyetemi rendszergazdán át, megyei önkormányzat - vagy hogy is hívják mostanában - rendszergazdájáig) munkájára. Ha én egyszer ott dolgozhatnék.
Tudom nem nagy pénz, de mellette napi 8 órában mehet a maszek. -
vilag
tag
válasz
martonx #2149 üzenetére
Mivel közszférában dolgozom, az utolsó megjegyzést csak megerősíteni tudom!
...sajnos
A gépeink elavultak (erről mondjuk pont nem a rendszergazda tehet), a szoftvereinkről meg ne is beszéljek.
Utóbbihoz (persze csak a gépek kapacitásán belül) azért már a rendszergazdánknak is igen jelentős a szerepe.
A gépeink nagy részén a megérkezésük óta (azaz kb. 2004 óta) ugyan az a Windows Xp fut, pedig a legtöbb már megérett egy újratelepítésre...
saját pénzből vett monitor
és még sorolhatnám....Úgy is mondhatnám, hogy:
'sok a baj, oszt egy se kicsi' -
martonx
veterán
Szia!
Ez egy VB topik, mi akik itt segítkezünk szeretjük a VB-t, sok mindenre szvsz a VB a legjobb választás. Viszont mint te is látod, erre a tök egyszerű dologra éppen nagyon nem jó választás. Mint látod pl. DirectX-hez, meg mindeféle alacsony szintű grafikus API-hoz baromi körülményes passzintani.
De hogy konstruktív is legyek. Ha én VB-ben mindenképpen ezt akarnám megvalósítani, akkor:1. VS2010 kuka, VS2012-t használnék. Ismét megkérdezem miért VS2010-et használsz?
2. WPF-ben csinálnám vagy Silverlight-tal (szintén halódó, de létező technológiák), sokkal jobban kezelik alapból mindeféle DirectX, meg OpenGL nélkül is az animációkat, mint a windows forms.
3. Esetleg XNA-vel csinálnám, abszolút nem csak windows phone-ra jó, xbox-ra, meg sima windows-ra is lehet XNA-vel fejleszteni. Szvsz a sorozatos beteg MS döntések egyike (remélem a legutolsó) volt, hogy tavaly óta nem fejlesztik tovább, így win8-ra, új Xbox-ra, wp8-ra már az XNA nem megfelelő, azaz halálra van ítélve. -
Homer
tag
válasz
martonx #2145 üzenetére
Nyilván bele lehet kötni abba is, hogy egyáltalán miért éppen visual basic... Azért, mert ez van, és kész!
Nem akarok sem windóz 9-et írni, sem quake 5-öt visual basic-ben. Én csak arra lennék kíváncsi, hogy hogyan lehet egy egyszerű alakot egy formon villódzásmentesen frissíteni 25 fps-el, mert ugye ez kell, hogy folyamatos legyen a mozgás. Ha ehhez dx kell, akkor gondoltam nézegetm azt is, de ha xna akkor azt. Egyelőre egyikhez sem konyítok. Amit olvastam eddig róla, angol fórumokon, hogy közvetlenül kell programozni a videokártya gpu-t melyhez különféle windóz api-k vannak (OpenGL,DX, XNA...stb). OpenGL és DX kilőve a VB2010-ben, mert csak VC++ lib-et lehet hozzáadni a Visual Studio-hoz, azt is csak körülményesen. Az XNA meg, (amennyire látom), windows phone-hoz van gyárilag, tehát ez is buhera megoldás. (Persze megint lehet, hogy tévedek. Javíts ki ha gondolod!)Na mindegy! Azért természetesen köszönöm a válaszokat!
-
martonx
veterán
Na most érted. Ha elolvastad, amit belinkeltél, akkor mi a kérdés? Várj, mielőtt újra felteszed a két kérdésedet, kérlek újra olvasd végig, amit belinkeltél
Na ugye, hogy ott a válasz.Gyengébbek, meg angolul nem tudók kedvéért, összefoglalom a lehetőségeidet:
1. Visual Basic használata XNA-vel (tudnod kell, hogy az XNA a win8 megjelenésével halottnak nyilváníttatott, de ettől még használható ha nagyon akarod).
2. VS2012 (tényleg miért éppen VS2010-et használsz) C++ projekt használata DirectX-el.Egyébként játékot nem windows form alkalmazásban kell írni, nagyon nem.
-
Homer
tag
válasz
martonx #2143 üzenetére
És egyáltalán lehet dx11 referenciát hozzáadni vb2010 projecthez?
Itt azt írják hogy nem:
[link]Igaz lehet ez? Van valami alternatíva? XNA vagy ilyesmi?
Az a problémám, hogy mozgatni szeretnék egy form főablakán egy "golyót" és folyton vibrál a frissítésnél.
Double buffered beállítással már próbálkoztam, picit jobb de nem tökéletes.
VB2003-ban még úgy emlékszem, hogy ment a dx. Az alapokat emlékszem, hogy próbálgattam benne, de itt sehogy nem akar összejönni. -
martonx
veterán
Sehogy, a referenciákat minden projekthez külön kell hozzáadni.
Másrészt ha egyszer már belőttél egy projekt típust, akkor tudsz belőle saját projekt template-et csinálni. És legközelebb abból tudsz új projektet csinálni, így végeredményben az új projektedben már benne lesz a megfelelő referencia. -
Homer
tag
Hello,
Visual Studio 2010-ben, Visual Basic-hez hogyan lehet beállítani a dx referenciakönyvtárat úgy, hogy az minden új projectnél megmaradjon?DX11 SDK (june 2010) telepítve van már.
-
vilag
tag
válasz
martonx #2140 üzenetére
Jelenleg úgy működik a dolog, hogy a programban megadott adatok alapján xls-be készül egy ügyirat (ezt ugye mindenki ki tudja nyomtatni, meg tudja nézni, stb.).
Mivel azonban (ha nem is gyakran de) előfordul, hogy a felhasználó valamilyen adatot helytelenül adott meg.
Felmerült tehát az igény, hogy meg lehetne-e oldani, hogy ne kelljen egy teljesen új ügyiratot létrehozni (és minden adatot újra megadni), hanem mondjuk olvassuk vissza az adatokat.Ebből látható, hogy kénytelen vagyok a "generált" ügyiratokból visszaolvastatni az adatokat.
Ezért kérdeztem, hogy a fájl megnyitása nélkül (ez sem foglalná a memóriát az amúgy sem túl erős hivatali gépeken) lehet e belőle olvastatni, de sajnos eddig úgy tűnik, hogy nem.Azért még reménykedem, hátha rámcáfoltok.
-
martonx
veterán
Úgy érted, hogy adatbázisként szeretnéd használni? Mert az ADO tudja adatbázisként használni az excel file-t, anélkül hogy neked kézzel külön vezérelned kellene a megnyitását.
Bár már kifejtettem, hogy kevés szerencsétlenebb dolog van, mint xls-t használni kvázi adatbázisként.
-
martonx
veterán
válasz
sztanozs #2136 üzenetére
Erről jut eszembe. Itt van egy nagyon hasznos excel függvény név fordító.
Én legalábbis szívtam már azzal, hogy hogy van ez vagy az a függvény angol excelben, meg német excelben. És fordítva is, amikor angol, német megoldást látok, az hogy van magyarul.http://hu.excel-translator.de/
Hátha más excelesnek is hasznos lesz.
-
vilag
tag
Van egy újabb kérdésem (még nem próbáltam).
Lehet e egy NEM nyitott excel tábla (de ismert az elérési útja) bizonyos cellájának adatát kinyerni, vagy mindenképpen meg kell hozzá nyitni?
-
vilag
tag
válasz
martonx #2134 üzenetére
Az ötleted nyomán a kollégám ezt hozta össze:
Sub Gomb1_Kattintás()
Dim komp
Set fs = CreateObject("Scripting.FileSystemObject")
For Each komp In Workbooks("proba.xlsm").VBProject.VBComponents
ize = komp.Name
If komp.Name = "Module1" Then
komp.Export ("d:\temp\module1.bas")
Workbooks("proba2.xlsm").VBProject.VBComponents.Import ("d:\temp\module1.bas")
fs.DeleteFile ("d:\temp\module1.bas")
End If
Next
End SubMég nem próbáltam, hogy működik e.
Ha odáig jutok szólok. -
vilag
tag
Egy új problémára keresem a választ:
Röviden:
Van egy programom ami létrehoz egy másik xls fájlt, melyben statikusan tároltatom el az eredetiben megadott adatokat.Megoldható e, hogy a programból létrehozott új statikus fájlba programkódot vigyek át?
Ha a munkalapot másoltatnám akkor tudom, hogy megy a laphoz tartozó kód is, de jelen esetben ez sajnos nem megfelelő megoldás.Van esetleg ötlet, hogy hogyan lehetne "átküldeni" a kódot az újonnan létrehozott fájlba?
-
vilag
tag
-
vilag
tag
válasz
martonx #2125 üzenetére
Egy ilyet találtam:
Set fs = Application.FileSearch
With fs
.LookIn = "v:\Szamlatervek"
.Filename = "*000-2*.xls"
If .Execute > 0 Then
MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
MsgBox .FoundFiles(i)
Next i
Else
MsgBox "There were no files found."
End If
End WithSzerintem némi átalakítással még használható is lesz.
-
vilag
tag
válasz
martonx #2122 üzenetére
A *-al már kísérleteztem, de egyelőre nem tűik használhatónak.
Pedig nekem pont arra lenne szükségem, hogy úgy tudjam megnyitni, hogy a fájlnévnek csak egy része van meg. Az elérési utat pontosan ismerem.Bekeresőssel azért nem akarom megoldani, mert az adott mappában több mint ezer fájl található (már most, és hol van még az év vége...) és nem akarom azzal megszívatni, hogy nézegettetem vele a több ezer fájlt, hogy nesze paraszt, válassz egyet...
Eddig ezt találtam az ötleted nyomán:
fileToOpen = Application _
.GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen <> False Then
MsgBox "Open " & fileToOpen
End IfDe attól tartok, hogy ezt nem tudom átalakítani olyanra amilyenre szeretném...
Nem lehetne esetleg olyat csinálni, hogy az ismert fájlnév részletet kerestetem az ismert elérési úton belül és ha a találatok száma mondjuk 1, akkor azt a fájlt megnyittatom?
-
vilag
tag
Egy hasonló kérdés az előzőhöz.
Programkódból szeretnék megnyitni egy fájlt, azonban nem ismerem a pontos fájlnevet.
Tudok e itt valamilyen helyettesítő karaktert használni a hivatkozás megadásakor? -
vilag
tag
Üdv!
Egy valószínleg igen bagatel kérdéssel fordulok a tisztelt publikumhoz.
Van-e olyan karakter ami a "bármit" helyettesíti?
Semmi="" -ből kiindulva.
Azért keresem, mert a darabteli függvényt szeretném használni, de ott konkrét keresési értéket vár tőlem.
A konkrét példa az lenne, hogy van nekem egy olyan oszlopom aminek nem minden sorában ugyan de különböző dátumok vannak.
Azt szeretném megtudakolni, hogy mennyi olyas cella van amiben van bármilyen érték, tehát nem üres.Köszönöm!
-
Rapido251
csendes tag
válasz
martonx #2114 üzenetére
Megpróbálok én magamtól az újabb verzióval foglalkozni (Visual Studio 2010, mivel ezt találtam, ami még fut XP-n), mivel nekem azért vannak céljaim a programozással, csak hozzá kell szoknom az újhoz is. Később meg fogok más nyelvekkel is foglalkozni, csak nem tudom egyelőre, hogy melyekkel éri meg kezdőbb szinten a VB-n kívül (Pascallal is foglalkoztunk már).
-
Rapido251
csendes tag
Arról már nem tehetek, hogy a tanár ragaszkodik ehhez.
-
sztanozs
veterán
válasz
Rapido251 #2106 üzenetére
imagebox (vagy picturebox?)-ba kell belerakni. Ha jól rémlik akkor a shape az "lightweight control":
MSDN:
In Visual Basic 6.0, the Shape control provides an easy way to draw rectangles, circles, and other shapes on a form at design time. The Shape control is a "lightweight" control - meaning that it does not have a Windows handle, also known as an HWnd....
In Visual Basic 6.0, you can use a Shape control to draw a shape on top of a container control such as a PictureBox or Frame control by adding a Shape control to the container.
-
Rapido251
csendes tag
Ui: Amit néztem, hogy a Shape vezérlésnek nincs Click eseménye, szóval nem tudom ezt hogy lehetne megoldani (VB 6-ban).
-
Rapido251
csendes tag
Köszönöm a választ martonx-nek és sztanozs-nek, megpróbálkozok valamelyikkel. Egyébként ez a 3 kör alakú vezérlővel megoldás működik akkor, hogyha azt szeretném, hogy véletlenszerűen bukkanjanak fel ezek a "táblák"? Arra gondolok, hogy megoldható, hogy ne essen szét ez a 3 kör? És hogy lehet azt megoldani, hogy több legyen ezekből a "táblákból" (lehet hülyeséget mondok, de megírható külön az, hogy egy ilyen körökből álló táblát csinálok, amit aztán annyiszor be lehet tölteni, amennyit választ a felhasználó?) Remélem azért valamennyire érthető amit kérdezek.
-
sztanozs
veterán
-
vilag
tag
válasz
sztanozs #2093 üzenetére
A vizsgálatra a Change eseményt használom, abból a megfontolásból, hogy miért hagyjam hogy végigírja a hülyeséget.
A fókusznál gondolom TabStop helyett a TabIndexre gondoltál, mert a TabStop értéke csak True, vagy False lehet.
Egyébként ezt a megoldást én is próbáltam már korábban, mert a vezérlőnek amit szeretnék újra fókuszba hozni a TabIndexe=0, szóval ez sem megoldás.
Sántít ez a Frame kapja vissza a kontrollt dolog, mert most megnéztem és az általam feldobott hibaüzenet okézása után a az ActivConrol.Name szerint a MultiPage1 az aktívkontroll.
-
vilag
tag
válasz
martonx #2101 üzenetére
Elméletileg ütközés nem jöhet létre, mert -egyelőre legalábbis- minden felhasználónak van egy sora és abban tároltatok néhány dolgot (pl.: utolsó belépés időpontja).
Szóval minden felhasználó esetében csak a nevéhez kötődő sorba kerül érték, így ütközés elméletben nem jöhet létre. Kivéve persze ha ugyan abban a pillanatban, ugyan azzal a felhasználónévvel két gépen is elindítja a programot.
A kérdésedre én magam sem tudom a választ, pontosan emiatt kértem ötleteket.
Az xml és a csv mennyiben más, mint a sima excel tábla?
Ezeket még sosem használtam, pontosabban az MVH-nál történő egységes kérelem beadás kapcsán már találkoztam xml fájl-lal, meg mondjuk régen a DC++ kapcsán, de írni még nem írtam.Jelenleg úgy használom, hogy a program meghívja a fájlt, ír bele (pl.: a belépés dátumát rögzít), menti, majd pedig bezárja.
A felhasználók számára létrehozott aktualitásokat tartalmazó üzeneteket is ebben rögzítem és itt kerül rögzítésre, hogy olvasottá jelölte e az üzenetet vagy sem.
Jobban végig gondolva az üzenetes rész miatt akár végtelenségig is nyitva lehet a segédfájl egy felhasználó által, ha az üzenetablakra nem nyom semmit.
Lehet, hogy ide meg írnom kéne valami időlimites részt??? -
martonx
veterán
A háttérben futó közös használatú file-al az a baj, hogy lazán engedni fogja felülírni egymás módosításait.
Ha nem háttérben fut, akkor szépen figyelmeztet, hogy melyik jusson érvényre, de háttérben futva mit fog csinálni?
Ha már háttér fájl, akkor használj xml-t, vagy csv-t, és azokat kvázi adatbázisként használva (elvileg), nem lesz ilyen problémád.
Bár nem tudom, hogy a háttér file-t hogy használod, lehet az ilyen problémát már valahogy kiküszöbölted excelen belül.
Új hozzászólás Aktív témák
Hirdetés
- BESZÁMÍTÁS! Asus B760M i7 12700KF 32GB DDR4 512GB SSD RX 6800 16GB Rampage SHIVA FSP 700W
- BESZÁMÍTÁS! Gigabyte A620M R5 7500F 32GB DDR5 512GB SSD RX 6700 XT 12GB ZALMAN S3 TG CM 700W
- BESZÁMÍTÁS! MSI B450M R7 5700X 16GB DDR4 512GB SSD RTX 3060 12GB Rampage SHIVA Chieftec 600W
- AM4-es félkonfig, 5800X, 32gb Ram, B450, BeQuiet TF, FractalDesign Meshify C, Seasonic 650W
- BESZÁMÍTÁS! Asus TUF B550M R7 5700X 16GB DDR4 512GB SSD RTX 3060 Ti 8GB Rampage SHIVA FSP 700W
- Apple iPhone 12 128GB, Kártyafüggetlen, 1 Év Garanciával
- KÖZEL FÉLÁR! Apple Magic Keyboard, Mouse, Trackpad, Pencil, Smart Magic Keyboard Folio, Watch szíjak
- Telefon felvásárlás!! iPhone 11/iPhone 11 Pro/iPhone 11 Pro Max
- ÁRGARANCIA!Épített KomPhone i3 10105F 16/32/64GB RAM RX 6600 8GB GAMER PC termékbeszámítással
- Telefon felvásárlás!! iPhone 12 Mini/iPhone 12/iPhone 12 Pro/iPhone 12 Pro Max
Állásajánlatok
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest