-
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
-
Belnir
csendes tag
-
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ék 
Köszi!

-
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?
-
Belnir
csendes tag
Na, végül megtaláltam amit kerestem.
-
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. -
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.
-
-
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 -
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?
-
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!
Új hozzászólás Aktív témák
- A fociról könnyedén, egy baráti társaságban
- Milyen autót vegyek?
- DUNE médialejátszók topicja
- Erősítő, hangfalak
- Fortnite - Battle Royale & Save the World (PC, XO, PS4, Switch, Mobil)
- Milyen billentyűzetet vegyek?
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Yettel topik
- TCL LCD és LED TV-k
- Autóápolás, karbantartás, fényezés
- További aktív témák...
- BESZÁMÍTÁS! ASUS ROG STRIX RTX 3080 10GB videokártya garanciával hibátlan működéssel
- BESZÁMÍTÁS! Intel Core i7 6700K 4mag 8szál processzor garanciával hibátlan működéssel
- HIBÁTLAN iPhone 12 Mini 128GB Black-1 ÉV GARANCIA - Kártyafüggetlen, MS3633,94% Akkumulátor
- Dell XPS 13 9310 i7-1185G7 16GB 512GB 13" FHD+ 1 év garancia
- GYÖNYÖRŰ iPhone 11 Pro 256GB Midnight Green - 1 ÉV GARANCIA, Kártyafüggetlen, 95% Akkumulátor,MS2148
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Promenade Publishing House Kft.
Város: Budapest


Csak még nagyobb katyvaszt csinálnék 

Ha read_only-ként vannak beállítva rajtam kívül mindenkik, akkor nem tud íródni a rejtett lap sem, hibát dob.

Fferi50
