Hirdetés

2024. május 4., szombat

Gyorskeresés

Útvonal

Fórumok  »  OS, alkalmazások  »  Microsoft Excel topic (kiemelt téma)

Téma összefoglaló

Téma összefoglaló

  • Utoljára frissítve: 2023-11-13 08:31:56

LOGOUT.hu

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.

Összefoglaló kinyitása ▼

Hozzászólások

(#39051) Fferi50 válasza szabonorbkk (#39039) üzenetére


Fferi50
őstag

Szia!

Esetleg próbáld ki az alábbi képletet egy segédoszlopban:
=DÁTUM(ÉV(A1);HÓNAP(A1);NAP(A1))
Ha működik, végighúzod az oszlopon, majd másolás - irányított beillesztés értéket a segédoszlopra. Utána átmásolhatod az eredeti helyre, segédoszlopot törölheted.

Üdv.

(#39052) lcdtv


lcdtv
aktív tag

esetleg a keresés majd ugorjon arra a sorra ahol megtalálta kérdésre valaki? [link]

(#39053) Delila_1 válasza lcdtv (#39052) üzenetére


Delila_1
Topikgazda

Else
Cells(Rng.Row, "D").Select

[ Szerkesztve ]

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#39054) Fferi50 válasza lcdtv (#39052) üzenetére


Fferi50
őstag

Szia!

39049. hszt láttad?

Üdv.

(#39055) lcdtv válasza Fferi50 (#39054) üzenetére


lcdtv
aktív tag

uhhh. nem bocsánat nem vettem észre.köszönöm :R

(#39056) dellfanboy


dellfanboy
senior tag

van olyan beallitas excelben ami:
- mindig az elso sorra mutat? jelen esetben ha legorgetek, a150. sorra es elmentem, akkor amikor ujbol megnyitom a file-t a 150. sor fel mint default.
Azt szeretnem ha mindig az elso sorok latszodnanak.
- kizarja hogy adott cellaba mas excel file-bol linkeljek adatot. csak ertekek, vagy excel fv szerepelhet. ilyen letezik?

eladó dolgok:mondd az árát és vidd http://hardverapro.hu/tag/dellfanboy#aprohirdetesei

(#39057) Delila_1 válasza dellfanboy (#39056) üzenetére


Delila_1
Topikgazda

Állj a megjelenítendő (cím)sor alá, majd kattints a Nézet | Panelek rögzítése menüpontra.

Mit szeretnél még megjeleníteni a hivatkozásban?

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#39058) oke válasza Mutt (#39048) üzenetére


oke
senior tag

Köszönöm szépen, működik, nagy segítség volt!

(#39059) ccs2929


ccs2929
senior tag

Sziasztok!

Nem vagyok Excel guru, biztos leírtátok már a megoldást 100x is, de most nincs időm visszaolvasni, segítsetek kérlek:
2 különböző programból exportálok ki Excelbe partnertörzset, amit egy 3. programba kellene beimportálnom. Vannak a partnerek közt átfedések, és nem szeretném, ha az új programunkba duplázva lennének a partnerek.
A kérdésem az lenne, hogy megoldható-e, hogy sorokat összehasonlítsunk legalább 2 oszlop figyelembe vételével és az azonosokat valamilyen módon kiemeljük, pld. színnel, az sem lenne baj, ha különböző színnel.
Mondjuk a név oszlop és az adószám oszlop lenne ami alapján egyezőségeket kellene keresni.
Előre is köszönet.

Flickr: http://goo.gl/V53ntj Ha korrekt volt az üzlet,akkor várom az értékelést!

(#39060) garga01 válasza ccs2929 (#39059) üzenetére


garga01
senior tag

Szia!
Van szebb megoldás is, de hirtelen így csinálnám:
Berakok egy segédoszlopot, ahol ÖSSZEFŰZ függvénnyel összerakom a két azonosítót, majd az így létrejött teljes oszlopon Feltételes formázás->Cellakijelölési szabályok-> Ismétlődő értékek... majd ok. Így pirossal színezi ahol duplikátum van. Persze ha van plusz szóköz, stb. akkor már nem működik.

Az áram alatt lévő alkatrész ugyan úgy néz ki, mint amelyik nincs áram alatt..... csak más a fogása!

(#39061) kopogo


kopogo
tag

Sziasztok!

1 kérdés az excel naplóza valahol hogy kik mikor módosítottak benne és hányszor?

köszönöm

(#39062) thomas50.000


thomas50.000
csendes tag

Sziasztok!

Az lenne még a problémám, hogy a whatsmycolor függvény sajnos nem frissíti önmagát.

Ezt valahogy meglehetne oldani, hogy automatikusan, amint szín változás történik a cellában, ő rögtön változtassa a számot is?

Function whatsmycolor(melyikcella) As Long
whatsmycolor = [melyikcella].Interior.Color
End Function

A válaszokat előre is köszönöm!

(#39063) lappy válasza kopogo (#39061) üzenetére


lappy
őstag

Megosztott munkafüzetnél van lehetőség, visszaállításra nincs lehetőség

Bámulatos hol tart már a tudomány!

(#39064) Agostino


Agostino
addikt

sziasztok

olyan cikket keresek vagy leírást, ahol rá tudnék jönni a következőre: kellene egy darab diagram három értékből. kettő értéket szeretnék halmozott oszlopban, mellette a harmadik értéket egy sima oszlopban. tehát mondjuk alma és körte 20 db 30 db, ezek együtt egy oszlopban, két színnel, mellette banán egyetlen oszlopban, egy színnel. nem tudom mennyire voltam érthető : ) próbáltam keresni megoldást, de szerintem rossz keresőszavakat használok.

                          hey friend listen, i know the world is scary right now but its gonna get way worse

(#39065) Mutt válasza thomas50.000 (#39062) üzenetére


Mutt
aktív tag

Szia,

"...whatsmycolor függvény sajnos nem frissíti önmagát...."

A tippem azt lett volna, hogy elég egy Application.Volatile parancsot tenni az UDF-be, de az Excel-ben a cella szinének megváltozásakor nincs esemény indítás, azért ez sem megoldás.

A legjobb megoldás, hogy azon munkalap selectionchange eseményéhez, ahol használod a függvényt rendelsz egy Application.CalculateFull parancsot.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CalculateFull
End Sub

Ennek a hátránya ugyebár, hogy MINDEN értéket újraszámol a munkalapon ami lassabbá teszi a műkődést.

üdv

A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel

(#39066) Mutt válasza ccs2929 (#39059) üzenetére


Mutt
aktív tag

Szia,

"...sorokat összehasonlítsunk legalább 2 oszlop figyelembe vételével és az azonosokat valamilyen módon kiemeljük, pld. színnel..""

Ilyen esetre, használható a DARABHATÖBB (COUNTIFS) függvény, amely megszámolja hogy a feltételként megadott érték a kiválasztott oszlopban hányszor szerepel.

pl. A-oszlopban név, G-oszlopban adószám, és van fejléced, akkor
=DARABHATÖBB(A:A;A2;G:G;G2) megmondja hogy adott névvel és adószámmal hány találatod van a második sorban lévő partnerre, ezt csak le kell húznod és megkapod az eredményt az összes cégre.

Feltételes formázásban is lehet használni.

üdv

ps. A névre való keresés nem olyan biztos megoldás, mert lehet hogy az egyik rendszerben használtak ékezeteket vagy rovidítéseket és a másikban nem. Az adószámnál pedig bonyodalmat az okozhat, ha EU-s változatban vagy magyar formátumban került felvitelre az adószám.

A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel

(#39067) Mutt válasza Agostino (#39064) üzenetére


Mutt
aktív tag

Szia,

Ha a képen látható módon rendezed az adatodat, akkor megkapod a kívánt eredményt.

Lépések:
1. Kijelölöd az adattartományod, majd grafikon beszúrásakor kiválasztod a halmozott oszlop diagrammot.
2. Excel próbál okos lenni és 3 oszlopot tesz egymás mellé, de te kattints a sorok/oszlopok felcserélésére.

üdv

A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel

(#39068) qpakcovboy


qpakcovboy
őstag

Nagyon fura dolog történt az egyik táblázatommal, szerintem véletlenül átkapcsoltam valamit és most nem tudom visszaállítani.

Az a hibajelenség, hogy ctrl+c; ctrl+v módon másolok egy képletet. A másolás sikerül, de azt az eredményt írja be a cellába, amit másoltam és nem azt ami jó lenne. Ha rámegyek a cellára és nyomok egy entert, akkor utána átjavítja a jó eredményre.

(#39069) ny.janos válasza qpakcovboy (#39068) üzenetére


ny.janos
tag

A képletek menüben a számolási beállítások alatt állítsd automatikusra az értéket (minden bizonnyal manuális a beállításod).

(#39070) ccs2929 válasza garga01 (#39060) üzenetére


ccs2929
senior tag

Köszönöm neked is, és Mutt-nak is. A napokban kipróbálom majd mindegyik megoldást, tudom, hogy a névben, meg az adószámban is lehet eltérés, szóval nem 100%-os az eredmény, de azért így biztosan jóval kisebb lesz a duplikáltak aránya.

Flickr: http://goo.gl/V53ntj Ha korrekt volt az üzlet,akkor várom az értékelést!

(#39071) qpakcovboy válasza ny.janos (#39069) üzenetére


qpakcovboy
őstag

Nagyon köszönöm! :R

(#39072) szricsi_0917


szricsi_0917
tag

Sziasztok

Egy kis segítséget szeretnék kérni makróval kapcsolatban. Van egy minta táblázatom aminek az egyik munkalapján két oszlop van az első cikkszámok a mellette lévő pedig azok elnevezése.
A kérdés, hogy van egy mappa amiben nagyon sok excel fájl van de mind azonos felépítésű de csak az egyik munkalapja érdekel. Azt szeretném, hogy minden fájlnak nyissa meg az adott munkalapját majd a minta tábla alapján keresse meg a cikkszámokat és ahol egyezést talál ott írja felül a mellette lévő oszlopban az elnevezést

(#39073) Agostino válasza Mutt (#39067) üzenetére


Agostino
addikt

szia

tökéletes, köszönöm! : ))

                          hey friend listen, i know the world is scary right now but its gonna get way worse

(#39074) gepelek


gepelek
kezdő

Hali!

Azt szeretném kérdezni, hogy lehet azt megoldani, hogy FKERES-el bepörgetni az adatokat egy oszlopba, úgy hogy abban lévő oszlopban ne írja felül ahol érték van.

Köszönöm!

(#39075) odrif


odrif
MODERÁTOR

Üdv!
Azt szeretném megoldani hogy ha az A1 cellában 1-es szám van akkor mellé a B1 cellába automatikusan kerüljön beírásra hogy "szép"
Ha az A2 cellában egy 2-es szám szerepel akkor a B2 cellába automatikusan kerüljön bele hogy "csúnya"
Ha az A3 cellában egy 3-as szerepel akkor pedig automatikusan kerüljön a B3 cellába hogy "kedves"

Ezt meg lehet oldani?

[ Szerkesztve ]

20 éve a Prohardveren

(#39076) Agostino válasza odrif (#39075) üzenetére


Agostino
addikt

B1 cellába: =HA(A1=1;"szép")
B2 cellába: =HA(A2=2;"csúnya")
B3 cellába: =HA(A3=3;"kedves")

?

                          hey friend listen, i know the world is scary right now but its gonna get way worse

(#39077) ny.janos válasza gepelek (#39074) üzenetére


ny.janos
tag

Szia!

Kapcsold be az autoszűrőt és az adott oszlopban csak az üres cellákra szűrj. Írd be a képletet, majd a cella jobb alsó sarkával másold le a táblázat utolsó soráig. Az elrejtett (adatokat tartalmazó) soraidat így nem írod felül.

(#39078) kopogo


kopogo
tag

1 kérdés
ezt szeretném írni egy cellába 06-18 hogyan lehet?

így sikerült
.06-18 illetve 06-18, vessző és pont nélkül ?

Megvan szöveg formátum a cellára.

tárgytalan

[ Szerkesztve ]

(#39079) lappy válasza odrif (#39075) üzenetére


lappy
őstag

Osszefuzve is lehet a harom ha függvénnyel
Ha(a1="1";szép;ha(a1="2";csúnya;ha(a1="3" ;kedves;" ")

[ Szerkesztve ]

Bámulatos hol tart már a tudomány!

(#39080) dellfanboy


dellfanboy
senior tag

kond. formazasnak pontosan hogy kell beallitani a feltetelrendszert hogyha azt akarom:
amennyiben a kalkulat cella erteke 0 zold pipa minden mas esetben piros x?

[ Szerkesztve ]

eladó dolgok:mondd az árát és vidd http://hardverapro.hu/tag/dellfanboy#aprohirdetesei

(#39081) Mutt válasza dellfanboy (#39080) üzenetére


Mutt
aktív tag

Szia,

Az ikonkészlettel nem fog menni, ezt a kerülő megoldást javaslom.

1. Keress egy olyan betűkészletet, amelyben van a neked tetsző pipa és kereszt. pl. a Wingdings betűtípusokban vannak ilyenek.

Én a "HoloLens MDL2 Assets" betűtípust használom, mert abban egyszerűbbek ezek az ikonok.

Egy cellába rakd be a két ikont (Symbol -> Insert), hogy onnan ki tudd másolni, mert sokszor olyan karakterhez vannak ezek rendelve amelyeket billentyűzetről nehéz bevinni.

2. Az adatsorod mellé kell egy segédoszlop, ebben a képlet ennyi:
=IF(vmiadat=0;pipaikon;keresztikon)

3. Most már csak színformázást kell adnod ehhez a tartományhoz.
A példában zöld illetve piros hátteret és fehér betűszínt választottam.

üdv

A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel

(#39082) Mutt válasza kopogo (#39078) üzenetére


Mutt
aktív tag

Szia,

Másik megoldás, hogy aposztróffal kezded az adatsort. Az Excel minden ilyen bevitelt szövegként fog kezelni.

üdv

A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel

(#39083) Mutt válasza szricsi_0917 (#39072) üzenetére


Mutt
aktív tag

Szia,

Nézd meg előbb, hogy Power Query-vel meg tudod-e csinálni a kért feladatot.

Javaslom, hogy a Power Query segítségével "fűzd" össze a sok fájlt és arra már lehet FKERES/VLOOKUP.

üdv

A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel

(#39084) Mutt


Mutt
aktív tag

Sziasztok,

Érdemes megnézni, pár Excel MVP háziversenyét a Youtube-on.

Mr. Excel inkább a tartalomra (ami nagyon érdekes) ment rá, mint a látványra/megoldásra. A lányok vizuálisan szép megoldásokat adtak, Mike Girvin képletei még mindig ütősek, Oz szerintem gyenge volt. Nálam Jon Acampor volt a legjobb, mert egy interaktív dashboard alapjait mutatta be.

üdv

A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel

(#39085) kutga


kutga
nagyúr

Hölgyek/Urak!

Van két excel táblám egyedi tételszámokkal és a hozzájuk kapcsolódó egységárakkal.

Az elsőben referencia árak szerepelnek, a másodikban ugyanezen tételekhez tartozó konkrét árajánlatok. Azt kellene igazolnom, hogy a másodikban szereplő árak azonosak vagy kedvezőbbek az elsőben szereplőnél (a referenciánál).

Elkezdtem egyenként bepötyögni őket de így elég nehézkes. Nincs erre valami automatikus megoldás? Az egyedi tételszámok mindkét táblában azonosak.

Let the Zone take me if I am.

(#39086) dellfanboy válasza kutga (#39085) üzenetére


dellfanboy
senior tag

egyedi tetelszamok Fkeres egymas melle, majd kov oszlopban osszehasonlitod a ket arat

@Mutt koszi

eladó dolgok:mondd az árát és vidd http://hardverapro.hu/tag/dellfanboy#aprohirdetesei

(#39087) kutga válasza dellfanboy (#39086) üzenetére


kutga
nagyúr

Köszi meg is csináltam. Érdekes hogy pár tételnél rossz értéket ad, azokat kézzel javítottam.

Let the Zone take me if I am.

(#39088) dellfanboy válasza kutga (#39087) üzenetére


dellfanboy
senior tag

nem kellene rossz erteked adnia. lecsekkoltad 1-2 jonak tuno szamitasnal hogy okes-e? ha igen azt tudom elkepzelni hogy az egyedi azonosito formatuma nem mindig u.a.

eladó dolgok:mondd az árát és vidd http://hardverapro.hu/tag/dellfanboy#aprohirdetesei

(#39089) ny.janos válasza kutga (#39087) üzenetére


ny.janos
tag

Ha az FKERES függvény utolsó paramétere HAMIS (vagy 0), akkor nem adhat rossz értéket.

(#39090) kutga válasza dellfanboy (#39088) üzenetére


kutga
nagyúr

Lehet. 1-2 tételnél van csak, majd megnézem őket. A többi kb száz darab okés.

Let the Zone take me if I am.

(#39091) lappy


lappy
őstag

Sziasztok!

Olyan segítség kellene nekem hogy van egy munkalap. A munkalapon adatok szerepelnek. Azt szeretném, hogy amikor megnyitom a munkafüzetet akkor kér egy felhasználói nevet és kódot (ebből lenne vagy 30 db). Amikor beüti a kódját akkor az hozzárendeli egy adott sorhoz amiben a neve szerepel és az adatait tudja változtatni. De a többi felhasználó adatait nem látja!
Viszont van egy fejléc (1 sor) amit minden esetben lát.

Bámulatos hol tart már a tudomány!

(#39092) lappy válasza lappy (#39091) üzenetére


lappy
őstag

Private Sub CommandButton1_Click()
Dim objTargetWorksheet As Worksheet

If (TextBox1.Value = "John" And TextBox2.Value = "234") _
Or (TextBox1.Value = "Amy" And TextBox2.Value = "345") _
Or (TextBox1.Value = "Paul" And TextBox2.Value = "456") Then
Me.Hide: Application.Visible = True

For Each objTargetWorksheet In ActiveWorkbook.Worksheets
If objTargetWorksheet.Name = TextBox1.Value Then
objTargetWorksheet.Unprotect Password:=12345
Else
objTargetWorksheet.Protect Password:=12345, DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
Next
Else
MsgBox "Please input the right user name and the right password"
End If
End Sub

Private Sub CommandButton2_Click()
ThisWorkbook.Application.Quit
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
ThisWorkbook.Application.Quit
End Sub

Ez a kód már majdnem jó!

Csak annyi a probléma hogy itt munkalapokat enged, de nekem csak sor kellene
Pl.:
John csak a 1-2. sort látja
Amy csak 1-3. sort látja
Paul csak 1-4 sort látja
Admin az összes sort látja

Bámulatos hol tart már a tudomány!

(#39093) RAiN91


RAiN91
őstag

Sziasztok
Egy munkafüzetben 0:00:00 - 0:30:00-ig vannak idő formátumban adatok. Elvileg másodpercenként, de van hogy ez nem jön össze, ilyenkor hibás a képlet ha hiányzik az adott adat. Példaként hiányzik a 0:04:00 időpont.

Azt szeretném megcsinálni, hogy ha hiányzik (erre van függvényem, tudom, hogy hol hiányzik), akkor az ahhoz legközelebbi időpontot írja át 0:04:00 -ra (. 0:03:59)-et cserélje ki.

Van erre valami egyszerű megoldás, akár VBA-ban?

Köszönöm!

(#39094) -KP-


-KP-
addikt

Üdv,

https://data-bass.com/systems

Ezeket az adatokat importáltam be excelbe. Szeretnék 2-3 sort csinálni, amit összehasonlításra használnék. Semmi másra nincs szükségem, csak egy legördülő menüből kiválasztani, melyik sor adatait mutassa, hogy egymás alatt lássak 2-3 típust, mert a 126 sort lehetetlen átlátni egybe. Ezt milyen elemmel, milyen trükkel tudnám megcsinálni?

(#39095) Mutt válasza lappy (#39091) üzenetére


Mutt
aktív tag

Szia,

Ha a felhasználó hozzáfér egy munkalaphoz, akkor már nehezen lehet leszabályozni hogy melyik sorhoz férjen hozzá. Talán az lehetne egy megoldás, hogy mindig az első 2 sorba írnád bele a felhasználóra tartozó adatokat egy másik helyről és a Worksheet_SelectionChange eseménnyel próbálnád meg leblokkolni hogy ne mászkáljon el.

Én inkább egy másik megoldást javaslok, ami kicsit bolondbiztosabb és bonyolultabb is.

Userform-ot, amin keresztül a beléptetjük a felhasználót és megjelenítjük az adott sor adatait, amit ott tud módosítani és visszamenteni az eredeti lapra.

Az előnye ennek, hogy mindegyik lapot el tudod rejteni (akár VeryHidden-ként), így középszintű Excel felhasználóktól is megtudod védeni az adatokat.

Egy csontvázat mutatok be, ami alapján el tudsz indulni.

1. A fájlodban van két munkalap, az egyiken vannak az adatok, a másikon pedig a felhasználói azonosítók és jelszavak. Ezen lapokat nyugodtan elrejtheted.

2. VBA-ban szúrj be egy formot és kezd el rá dobálni az alábbi vezérlőket:
- egy combobox a felhasználói neveknek (ezzel egy legördülő listát lehet csinálni)
- egy textbox kell a jelszóhoz,
- 2 gomb a belépéshez és kilépéshez a programból.

Lehet még felrakni labeleket, hogy tudjuk mi mire való, illetve én tettem fel egy pluszat is ahova ki lehet írni a sikeres belépés vagy a hibás felhasználó üzeneteket.

3. Legyen pár globális változónk, hogy tudjuk rájuk minden helyen gyorsan hivatkozni.

Option Explicit
Dim wsUsers As Worksheet, wsData As Worksheet, lastrowUsers As Long, lastrowData As Long
Dim activeRow As Long 'control which row should be displayed

A wsUsers és WsData egy változó lesz azon munkalapokhoz ahol vannak az adatok és a felhasználók, illetve megjegyezzük hogy ezen lapokon hol vannak az utolsó sorok.
Az activeRow pedig mindig mutatni fog arra a sorra, ami a belépett felhasználóhoz van rendelve.

4. A Userform indulásával feltöltjük a username comboboxot, aminek én a cbUserName azonosítót adtam.
Beállítjuk a többi változót.

Private Sub UserForm_Initialize()
Dim i As Long
Const UserSheet = "Users" 'worksheet name with user ids, passwords etc
Const DataSheet = "Data" 'worksheet name with actual data

Set wsData = Worksheets(DataSheet) 'assign data sheet to a variable
Set wsUsers = Worksheets(UserSheet) 'assign user id sheet to a variable
lastrowData = wsData.Range("A" & Rows.Count).End(xlUp).Row 'find the last row on data sheet
lastrowUsers = wsUsers.Range("A" & Rows.Count).End(xlUp).Row 'find the last row on user sheet

'load valid users to username controlbox
For i = 2 To lastrowUsers
Me.cbUserName.AddItem wsUsers.Range("A" & i)
Next i

End Sub

5. Ha van felhasználói név és jelszó megadva, akkor lehet csak belépni. Ehhez én figyelem ennek a két doboznak (cbUserName -ről már írtam, a jelszó pedig a txPassword textbox-ban van) a change eseményét nézem, de lehetne az AfterUpdate-t is. A lényeg, hogy a form indulásakor a Login nevű gomb inaktív (ez az alapértelemezett értéke) és csak akkor lesz kattintható ha van név és jelszó megadva.

Private Sub cbUserName_Change()

'if both username and password is filled then enable login button
If cbUserName <> "" And txPassword <> "*" Then
btLogin.Enabled = True
lbComment.Visible = False
End If

End Sub

Private Sub txPassword_Change()

'if both username and password is filled then enable login button
If cbUserName <> "" And txPassword <> "*" Then
btLogin.Enabled = True
lbComment.Visible = False
End If

End Sub

6. Ha kattintanak a Login gombra, akkor megnézzük hogy a megadott felhasználó és jelszópáros egyezik-e a menttettel. Ha igen, akkor
- van egy hely (LoginComment) ahova kiírjuk hogy sikeres a belépés
- megkeressük hogy a felhasználóhoz melyik sorban van adat rendelve és az activeRow változóba ezt beállítjuk,
- láthatóvá tesszük azokat a vezérlőket, amelyekben megjelenítjük a felhasználóhoz tartozó adatokat .

Ehhez a formra felvittem még pár mezőt, így néz ki a teljes form:

Hibás belépésnél lényegében csak kiírjuk a hibát és töröljük a megadott jelszót.

Private Sub btLogin_Click()
Dim cell As Range
Dim i As Long

For Each cell In wsUsers.Range("A2:A" & lastrowUsers)
'find the selected username on user id sheet
If UCase(cell) = UCase(cbUserName) Then
'if password matches then print out a notification and display the data
If cell.Offset(, 1) = txPassword Then
lbComment = "Successful login"
lbComment.Visible = True
txPassword = "*" 'password is visible on the form, so after a valid login hide it
btSave.Visible = True 'make visible the save button

'find the correct line for the selected user on data sheet
If UCase(cbUserName) = "ADMIN" Then
activeRow = 2
spinRecord.Visible = True
spinRecord.Min = activeRow
spinRecord.Max = lastrowData
Else
For i = 2 To lastrowData
If UCase(wsData.Range("A" & i)) = UCase(cbUserName) Then
activeRow = i
End If
Next i
End If

Call DisplayData
Else
'wrong password was given
lbComment = "Invalid username or password"
lbComment.Visible = True
txPassword = "*"
End If
End If
Next cell
End Sub

7. A cancel (kilépés) gombnak egyszerű az eseménye, bezárja a formot.

Private Sub btCancel_Click()

Unload Me

End Sub

8. A felhasználóhoz rendelt adatok megjelenítésére csináltam egy külön szubrutint, DisplayData névvel, Ez most nagyon minimalista.

Sub DisplayData()

With wsData
If Len(.Cells(activeRow, 2)) > 0 Then
txRecord1 = .Cells(activeRow, 2)
Else
txRecord1 = ""
End If

If Len(.Cells(activeRow, 3)) > 0 Then
txRecord2 = .Cells(activeRow, 3)
Else
txRecord2 = ""
End If

If Len(.Cells(activeRow, 4)) > 0 Then
txRecord3 = .Cells(activeRow, 4)
Else
txRecord3 = ""
End If
End With

End Sub

9. Ha a felhasználó átírja a formon az adatot, akkor a Save gombbal visszaírjuk a munkalapra.

Private Sub btSave_Click()

With wsData
.Cells(activeRow, 2) = txRecord1
.Cells(activeRow, 3) = txRecord2
.Cells(activeRow, 4) = txRecord3
End With

End Sub

10. Végül az ADMIN-ra kell egy kicsit rágyúrni, mivel ő látja az összes adatot.
Neki az a megoldás, hogy van egy görgető sáv (én most a spinbutton vezérlőt használom, a spinRecord nevet adtam neki), amin tud lépkedni az egyes mezők között. Ezt a görgető sávot a belépéskor teszem láthatóvá neki és beállítom hogy a 2-es sortól (1-esben a fejléc van), csak az utolsóig mehet. A léptetést a vezérlő change eseménye oldja meg, mert módosítja az activeRow értéket és egyből meghívja a DisplayData-t.

Private Sub spinRecord_Change()

activeRow = spinRecord.Value
Call DisplayData

End Sub

A végeredmény így néz ki Admin-al belépve:

A UserForm-nak nagy előnye, hogy áttekinthető formában tálalni a felhasználó felé azokat az adatokat amiket te választasz ki, illetve ha sok adatot kell bekérni akkor ott is tud segíteni, mert mentés előtt tudsz validálást csinálni.

Ha akarod akkor automatikusan indíthatóvá teheted.
Private Sub Workbook_Open()

MainForm.Show

End Sub

üdv

A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel

(#39096) Mutt válasza RAiN91 (#39093) üzenetére


Mutt
aktív tag

Szia,

A-oszlopban vannak az eredeti idők, B-ben pedig a lenti képlet a legközelebbi percet fogja visszaadni:
=TÖBBSZ.KEREKÍT(A2;1/1440)

MROUND angolul a függvény neve, Az 1/1440 pedig 1 percet jelent (mivel 1 napban 24 óra van és minden órában 60 perc).

üdv

A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel

(#39097) Mutt válasza -KP- (#39094) üzenetére


Mutt
aktív tag

Szia,

Legördülő menüt az Adatok -> Érvényesítés opcióval tudsz csinálni.
Megjelenítésben az INDEX és HOL.VAN páros kell. A HOL.VAN megmondja, hogy a kiválasztott elem hányadik sorban van az eredeti táblázatban és az INDEX pedig egy tartományból a megadott sor és oszlop elemét tudja visszaadni.

üdv

A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel

(#39098) lappy válasza Mutt (#39095) üzenetére


lappy
őstag

Köszönöm
megalkotom, tesztelem és ha vmi nem megy akkor majd keresnélek (ha lehet privátban is- adatok , stb, tartalommal)

Bámulatos hol tart már a tudomány!

(#39099) -KP- válasza Mutt (#39097) üzenetére


-KP-
addikt

köszi, ha lesz időm, akkor majd próbálkozok vele.

(#39100) mdk01


mdk01
addikt

Sziasztok, feltételes formázásnál meglehet olyat adni, hogy soronként figyelje a cellákat és szinezzen?
Gondolok itt olyanra hogy, pl.ha B1>0 akkor A1 cella legyen zölddel kitöltött és ez így megy tovább, ha B2>0 akkor A2 legyen zölddek kötöltött.
Ez így megy folyamatosan.
A B oszlopba képlet számolja az összeget, oda nem írnék be semmit. Köszönöm

Útvonal

Fórumok  »  OS, alkalmazások  »  Microsoft Excel topic (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.