- Multimédiás / PC-s hangfalszettek (2.0, 2.1, 5.1)
- AMD GPU-k jövője - amit tudni vélünk
- Tuning kezdőknek
- Computex 2024: Itt az új ROG Ally
- Nem indul és mi a baja a gépemnek topik
- DUNE médialejátszók topicja
- Vezetékes FÜLhallgatók
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- E-book olvasók
- Épített vízhűtés (nem kompakt) topic
Hirdetés
-
Nyárköszöntő hardverszemle
ph A desktop gép, notebook és ház nyomába sokféle periféria szegődik, sőt, még egy VR headset is tiszteletét teszi heti rovatunkban.
-
Mobvoi TicWatch Pro 5 Enduro - kitartás kartárs?
ma WearOS 3.5, két kijelző, hosszú üzemidő, és zavaró apróságok a legújabb TicWatch modellben.
-
Spyra: nagynyomású, akkus, automata vízipuska
lo Type-C port, egy töltéssel 2200 lövés, több, mint 2 kg-os súly, automata víz felszívás... Start the epic! :)
-
PROHARDVER!
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
-
Belnir
csendes tag
Sziasztok!
Adott egy céges Win7-es környezet, és a 2010-es office. Magyar nyelvű az excel. Készítettem egy makróbarát excel kimutatást (a makró csak egy frissítés gomb, ami a másik lapon lévő adathalmazból firssíti a kimutatást). A főnököm azt szeretné tudni, hogy ki, mikor nézi meg (nyitja meg) az általam készített anyagot. Nehezíti a helyzetet talán, hogy minden nap frissítem a háttéradatbázist, így minden nap mentek egyet. A tulajdonságokban ott ugye az szerepel, hogy ki és mikor mentett, de a mentés nélküli megtekintés sehol sincs. Van-e erre speckós exceles megoldás, vagy egyéb figyelés?
Remélem érthető voltam.
A segítséget előre is köszi!Intel G4560, AsRock B150M-HDS, 8Gb RAM
-
Belnir
csendes tag
válasz Delila_1 #29342 üzenetére
Nagyon köszönöm! A leírás szuper, de mégis valami nem stimmel. Mondatonként haladtam, de nem két részleg lett, hanem három.
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
End Sub
Private Sub Workbook_Open()
Dim lastrow As Long
Application.ScreenUpdating = False
With Worksheets("Rejtett")
lastrow = .Range("A" & Rows.Count).End(xlUp).Row + 1
With .Range("A" & lastrow)
.Offset(0, 0).Value = "OPEN"
.Offset(0, 1).Value = ThisWorkbook.FullName
.Offset(0, 2).Value = Now()
.Offset(0, 3).Value = "'*"
.Offset(0, 4).Value = "'*"
.Offset(0, 5).Value = Environ$("username")
.Offset(0, 6).Value = Environ$("computername")
.Offset(0, 7).Value = Environ$("userdomain")
End With
End With
Application.ScreenUpdating = True
End SubMit rontottam el?
Intel G4560, AsRock B150M-HDS, 8Gb RAM
-
Belnir
csendes tag
válasz Delila_1 #29353 üzenetére
Akkor is, ha nem menti el?
A kód jelenleg ilyen, lehet, hogy ebben van a hiba (amikor másolgattam) - valamint a sorrend fontos?
Private Sub Workbook_Open()
Dim lastrow As Long
Application.ScreenUpdating = False
With Worksheets("Rejtett")
lastrow = .Range("A" & Rows.Count).End(xlUp).Row + 1
With .Range("A" & lastrow)
.Offset(0, 0).Value = "OPEN"
.Offset(0, 1).Value = ThisWorkbook.FullName
.Offset(0, 2).Value = Now()
.Offset(0, 3).Value = "'*"
.Offset(0, 4).Value = "'*"
.Offset(0, 5).Value = Environ$("username")
.Offset(0, 6).Value = Environ$("computername")
.Offset(0, 7).Value = Environ$("userdomain")
End With
End With
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Dim lastrow As Long
Application.ScreenUpdating = False
With Worksheets("Rejtett")
lastrow = .Range("A" & Rows.Count).End(xlUp).Row + 1
With .Range("A" & lastrow)
.Offset(0, 0).Value = "OPEN"
.Offset(0, 1).Value = ThisWorkbook.FullName
.Offset(0, 2).Value = Now()
.Offset(0, 3).Value = "'*"
.Offset(0, 4).Value = "'*"
.Offset(0, 5).Value = Environ$("username")
.Offset(0, 6).Value = Environ$("computername")
.Offset(0, 7).Value = Environ$("userdomain")
End With
End With
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim lastrow As Long
Application.ScreenUpdating = False
With Worksheets("Rejtett")
lastrow = .Range("A" & Rows.Count).End(xlUp).Row + 1
With .Range("A" & lastrow)
.Offset(0, 0).Value = "OPEN"
.Offset(0, 1).Value = ThisWorkbook.FullName
.Offset(0, 2).Value = Now()
.Offset(0, 3).Value = "'*"
.Offset(0, 4).Value = "'*"
.Offset(0, 5).Value = Environ$("username")
.Offset(0, 6).Value = Environ$("computername")
.Offset(0, 7).Value = Environ$("userdomain")
End With
End With
Application.ScreenUpdating = True
End Sub[ Szerkesztve ]
Intel G4560, AsRock B150M-HDS, 8Gb RAM
-
Belnir
csendes tag
válasz poffsoft #29356 üzenetére
utólag szerkesztve: Delila, köszi!
Sajnos nem tudom, hogy ezt hogyan kell. Még rettenetesen kezdő vagyok a visual basic kódsorainak írogatásában, gyakorlatilag még kezdőnek sem vagyok nevezhető. Segítenél, kérlek?
Pontosan hova és pontosan mit?
[ Szerkesztve ]
Intel G4560, AsRock B150M-HDS, 8Gb RAM
-
Belnir
csendes tag
Köszönöm Delila és poffsoft, mégegyszer!
Azonban maradtak még kérdések. Vérszemet kaptam...Azt szeretném, hogy:
1. valaki megnyitja a munkafüzetet
2. a megnyílás pillanatában mentsen automatikusan egyet, beírva, hogy ki mikor hol stb, ahogy most is faszán megy
3. ne kontárkodhasson bele, csak én - mivel mindenki a saját felh. nevével randalírozik, így gondolom kizárólagossá tehetem, hogy csak az én usernevem módosíthasson.
Tehát a random user hiába szűröget, hiába cellaformáz vagy csinál akármit, ne menthesse el a kontárkodását. A kódokat nézegetve szerintem ez megoldható, kicsit variáltam rajta, és ilyen rövid lett:Private Sub Workbook_Open()
Dim lastrow As Long
Application.ScreenUpdating = False
With Worksheets("Rejtett")
lastrow = .Range("A" & Rows.Count).End(xlUp).Row + 1
With .Range("A" & lastrow)
.Offset(0, 0).Value = "OPEN"
.Offset(0, 1).Value = ThisWorkbook.FullName
.Offset(0, 2).Value = Now()
.Offset(0, 3).Value = "'*"
.Offset(0, 4).Value = "'*"
.Offset(0, 5).Value = Environ$("username")
.Offset(0, 6).Value = Environ$("computername")
.Offset(0, 7).Value = Environ$("userdomain")
End With
End With
ActiveWorkbook.Save
Application.ScreenUpdating = True
End SubTesztelve, egyelőre hibátlan működést mutat.
[ Szerkesztve ]
Intel G4560, AsRock B150M-HDS, 8Gb RAM
-
Belnir
csendes tag
válasz szatocs1981 #29381 üzenetére
Lehet, hogy már túlbonyolódtam, és mindent akarok. Sajnos ez megesik néha velem. Összeszedem a gondolataim.
Adott egy munkafüzet, melyet a nagyfőnök utasítására készítettem. Bassza a csőröm, hogy a nagyfőnök baszik a munkafüzetre, ezért a közvetlen főnököm kérte, tegyek bele "figyelőt", hogy az arcába toljuk, hogy ő ugyan nem is nézi, ne legyek felesleges feladattal terhelve (mondjuk kb 2 mp napi tevékenység, de ezt nekik nem kell tudni). Kaptam egy szuper kódsort, működik, de feltűnt, hogy kilépés előtt írja be a tevékenységet, és akkor is ment egyet. Tehát ha valaki mégis megnézi, és használja a szűrőket pl, és dolga végeztével kilép, nyom egy nincs mentés gombot, akkor is elmenti a változtatásokat. Ezért áttettem ezt a részt a megnyitás pillanatához, hogy még mielőtt egy egérmozdulatot is tenne, mentődik a megnyitás tevékenysége. Utána matathat, de ha akarja menthet is. Na ez legutóbbit szeretném leszabályozni, hogy ha akar, menthet is legyen kizárva.
Ha valamit rosszul értelmeztem korábban, akkor bocsi.Windows alatt levéded (read_only) és magadat beteszed kivételbe.
A céges hálózatunk egy kicsit bonyolultabb ennél, ilyet nem tudok megtenni, mert amint megtagadom másoktól a jogokat, automatikusan megtagadom magamtól is.[ Szerkesztve ]
Intel G4560, AsRock B150M-HDS, 8Gb RAM
-
Belnir
csendes tag
Na, végül megtaláltam amit kerestem.
Intel G4560, AsRock B150M-HDS, 8Gb RAM
-
Belnir
csendes tag
Felmerült egy probléma. Azt vettem észre, hogy a változást csak akkor logolja, ha semmiről-valamire vagy valamiről-valamire változott az érték. Ha galád módon valaki valamiről-semmire változtat egy cellaértéket, arról nem jön létre a log-sor (magyarán szemétségből valaki töröl egy cellatartalmat, és bemószerolja a másikat).
A kód ilyen:Public aktualis
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastrow As Long
Dim akt_lap As String: akt_lap = ActiveSheet.Name
If Target.Count <> 1 Then Exit Sub
If aktualis = Target.Value Then Exit Sub
Application.ScreenUpdating = False
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Logfile = FSO.OpenTextFile("\eleresi_utvonal\log.txt", 8, True)
Logfile.WriteLine ("VÁLTOZTAT" & " - " & Format(Now, "YYYY.MM.DD hh:mm:ss") & " - " & Environ$("username") & " - " & Application.UserName & " - " & Environ$("computername") & " - " & Target.Parent.Name & " - " & Target.Address & " - " & aktualis & " - " & Target.Value)
Logfile.Close
Set Logfile = Nothing
Set FSO = Nothing
xit:
Worksheets(akt_lap).Activate
Selection.Activate
Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
aktualis = ActiveCell.Value
End SubMit írjunk még bele, hogy azt is logolja?
Intel G4560, AsRock B150M-HDS, 8Gb RAM
-
Belnir
csendes tag
válasz poffsoft #29468 üzenetére
Az if aktualis vizsgálat nem kell, csak fogalmam sincs, hogy mire vonatkozik...
Gyakorlatilag próbálkozom, az általatok adott kódokat fabrikáltam össze, ez működött, de nem 100%-osan. Szóval fogalmam sincs, mi a fölös sor és mi hiányzik.
plusz ha valaki több cellát módosít, töröl egyszerre, arról sincs logod sajnos igen, ez így van.
if target.count
helyett az értéket csak az 1. cellában nézd:
target(1,1).value
?
a writeline végére még beszúrnék egy lezáró "-" -t, hogy látsszon az üres érték is (ami a törlés).
Megtennéd, hogy kipucolod a szemetet és pótlod ami szükséges? Csak még nagyobb katyvaszt csinálnékKöszi!
Intel G4560, AsRock B150M-HDS, 8Gb RAM
-
Belnir
csendes tag
válasz poffsoft #29483 üzenetére
Királyság, nagyon jó! Annyi észrevételem lenne, hogy egyből meg is akadt a kicsike. Alul duplázva maradt meg a
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
aktualis = ActiveCell.Value
End SubDe a kódot köszönöm, nagyon nagy segítséget kaptam!
[ Szerkesztve ]
Intel G4560, AsRock B150M-HDS, 8Gb RAM
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs