- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- btz: Internet fejlesztés országosan!
- LordAthis: Ismét egy "Idióta" A.I. Projekt, hogy meglovagolja az aktuális trendeket...
- LordAthis: AI Kérdés érkezett - 3600 soros Spagetti kód refaktorálása és budget
- LordOLOG Szféra
- sh4d0w: Netflix? Ugyan, VW előfizetés!
- GoodSpeed: Bye PET Palack, hello SodaStream
- D1Rect: Nagy "hülyétkapokazapróktól" topik
-
LOGOUT
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
-
Delila_1
veterán
válasz
lenkei83 #29396 üzenetére
Elég nehéz más gondolatmenetét követni, legalábbis nekem.
Arra figyeltem fel, hogy a Havi2015 és a Havi2016 makró összesen 3 helyen tér el, hasonlóan a Kum2015 és Kum2016-hoz.
Valószínű, hogy 1 makróba tettem volna a kettőt, pl. Évek címmel. Az egészet egy for-next-be tenném, ami 1-től 2-ig tart. Az eltérő soroknál feltételt tettem volna be.for év=1 to 2
...
if év=1 then set month1=range("month1") else set month1=range("month2")
...
next -
bsh
addikt
válasz
Delila_1 #29395 üzenetére
akartam írni, hogy ez egy szép kis képlet lesz, de megelőztél
ha gyakran kell, akkor én ilyesmire inkább írnék egy saját függvényt:
Public Function TextSplit(TString As String, Delim As String, Pos As Integer) As String
TextSplit = Split(TString, Delim)(Pos)
End Function
'Használata: =TextSplit(A1;":";2) -
lenkei83
tag
válasz
sedyke #29391 üzenetére
Szia!
A linken találod a filet. Működik, ha nem változtatsz az alaptáblán.
Amit pirossal jelöltem a 2015-ös fülön, azok nem szerepelnek az összesítő tábládban.Delila_1 ha van időd és energiád, ránézhetsz, hátha tudsz egyszeűbb, gyorsab, stb... megoldást. Engem is érdekelne.
üdv
P. -
sedyke
tag
Lenne egy másik kérdésem is.
Milyen képlettel tudnám kiszedni a következő szövegből az első két kettőspont közötti részt, vagyis a 060-at?
146927:060: FLYNN (146927) Style: COL: CEDAR CALF / SZMUK: 06.0 /
Azért így kérdezem, hogy első két kettőspont közötti, mert változó számú tagok lehetnek előtte.
-
sedyke
tag
Sziasztok!
Legyszi, tudnatok segiteni az alabbiakban?Van egy kisse komplikalt tablazatom. Korabban kaptam mar hozza segitseget, de az nem oldotta meg teljesen a problemat.
Az 1. munkafuzetben talalhato tablazatban szeretnem osszesiteni az adatokat, a 2. es 3. munkafuzetbol, meg pedig ugy, hogy ha az F1-es cellaba beirom az adott honap szamat, akkor a tablazat egyik feleben a vonatkozo honap adatait keresi ki, mig a masik feleben osszesiti az evben az adott honapig az ertekeket.
A gond azzal van, hogy az adatokat tartalmazo munkafuzeten sajnos vannak ismetlodesek. Egyes cegek ketszer is szerepelhetnek, igy a kepletnek nem csak egy sor adatait kellene osszegeznie, hanem ahol meg talalat van az adott cegre.
Lennetek olyan szivesek, hogy raneztek, hatha ti tudtok valami megoldast, amire nekem meg nem sikerult rajonnom?
Feltoltottem az alabbi helyre:https://docs.google.com/spreadsheets/d/1mgfRBzULb6xjnmUKUJSx8j8uAC-PNQvqIc6pROxWamw/edit?usp=sharing
Elore is nagyon szepen koszonom!!!
-
Bobrooney
senior tag
Sziasztok!
Skacok olyan kérdésem lenne, hogy mindenképpen adatbázis fv-el kell megoldani a feladatot.
Azon emberek db száma kell Akiknek az E1-es oszlopban kisebb adatuk van mint az F1-esben, ezt hogy tudnám megtenni? Tudom hogy ez a paraméterem hibás "Adatok!E1<Adatok!F1"
Esetleg kritérium táblával hogy kellene?
=AB.DARAB(Adatok!A184;5;Adatok!E1<Adatok!F1)
Köszi előre is!
-
lenkei83
tag
Sziasztok!
Inputboxnál hogyan tudom megkülönböztetni, hogy cancel-t nyomok, vagy üresen hagyom és OK-ot nyomok?
Mindkettő nulla értéket ad. Van erre valami megoldás?Köszi
P. -
bara17
tag
Sziasztok!
A következő - egyszerűnek gondolt - kérdésem/feladatom lenne:
Van egy oszlopom, melyben a sorokban kb. így helyezkednek (a lista hossza, de a felépítés ugyanilyen)
5050
5050
5030
5030
5030
5010
5090
5090
5090
5090Így akarom színezni:
5050 sárgák
5030 nincs szín
5010 sárga
5090 nincs szín
és így tovább...Hogy kellene ezt nem manuális megcsinálni? Gondolom feltételes formázással kellene valamit bűvölni...
Köszönöm a segítséget!
-
Belnir
csendes tag
Na, végül megtaláltam amit kerestem.
-
bsh
addikt
válasz
Belnir #29382 üzenetére
túlbonyolítod. excelben le lehet simán védeni jelszóval a lapot módosítások ellen, vagy akár az egész munkafüzetet is.
de makróval is megoldható, csak ugye a makrók letilthatóak...én mondtam, hogy sokkal egyzserűbb egy külön logfájlba menteni a megnyitásokat/mentéseket/akármiket.
-
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. -
szatocs1981
aktív tag
válasz
Belnir #29379 üzenetére
Windows alatt levéded (read_only) és magadat beteszed kivételbe.
PS: mondjuk ez akkor teljesen ellenben van az elözö kikötéseddel, miszerint:
"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" -
bsh
addikt
válasz
Delila_1 #29375 üzenetére
az eredeti kérdés csak a megtekintés (megnyitás) volt.
de én is kérdeznék, sőt kettőt is:
az első az erről a lastrow-ról jut eszembe, egy feladatnál kell nekem ilyen, de ez az egyszerű megoldás nem jó, mert nem feltétlen vannak minden oszlopban kitöltve a mezők, nincs olyan oszlop, amit hasznáhatnék az range-hez, mert lehet, hogy van annál hosszabb oszlop is. viszont a ctrl+end az rendesen a legutolsó sor legutolsó oszlopra ugrik. ezt nem lehet valahogy meghívni közvetlenül? vagy erre nincs valami gyors megoldás? (ha végignézem egyesével az oszlopokat, hogy melyik a leghosszabb, az nem elég gyors)a másik nekem bonyolultabb:
még a tegnap írt problémás userform-hoz jó lenne "cella"-szintű event handling. ezt én a kis egyszerű tudatlan fejemmel úgy képzeltem el, hogy "definiálok" egy saját combobox (és ugyanígy textbox) objektumtípust egy class modulban:
Class1:
public withevents eComboBox as ComboBoxés a kódban, ami generálja a userform-ban a "cellákat" ezt használnám a sima msforms.combobox helyett:
newCB = userform.frame.controls.add("msforms.combobox.1", név, true)
helyett:
newCB = userform.frame.controls.add("class1.ecombobox", név, true)persze ha ez működne akkor nem kérdezném, hogyan kell...
próbáltam úgy is, hogy ez előtt a sor előtt explicit megadom a newCB típusát:
dim newCB as class1.ecomboboxde én sajnos ezekhez már nem értek.
találtam rá pár hasonló példát google-ben, de azokat sem bírtam értelmezni illetve nem működnek. szóval kis segítséget kérnék.
-
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.
-
Delila_1
veterán
válasz
poffsoft #29372 üzenetére
Poffsoft , Belnir és bsh
Tegnap csak a lényeg maradt ki, a figyelt lapok változásának a követése.
A megfigyelt laphoz kell rendelni a lenti 2 makrót, hogy az ezen történt változásokat is tárolják a Rejtett lapon. A "Rejtett" lap Visible tulajdonságát eleve xlSheetVeryHidden-re lehet állítani, azért a makró tud bele írni.
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
With Worksheets("Rejtett")
lastrow = .Range("A" & Rows.Count).End(xlUp).Row + 1
With .Range("A" & lastrow)
.Offset(0, 0) = Target.Parent.Name 'A – hol volt változás
.Offset(0, 1).Value = Target.Address 'B – Változás helye
.Offset(0, 2).Value = Now() 'C – időpont
.Offset(0, 3).Value = aktualis 'D – változás előtti adat
.Offset(0, 4).Value = Target.Value 'E – változtatás utáni érték
.Offset(0, 5).Value = Environ$("username") 'F – felhasználó neve
.Offset(0, 6).Value = Environ$("computername") 'G – PC neve
.Offset(0, 7).Value = Environ$("userdomain") 'H – felh. domain
End With
End With
Worksheets(akt_lap).Activate
Selection.Activate
Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
aktualis = ActiveCell.Value
End Sub -
poffsoft
veterán
-
poffsoft
veterán
én sem értek hozzá.
Beleír, majd menti, megerősítő kérdés nélkül.
A kolléga problémája a sima ixre adott "Nem" mentjük válasz volt (meg nekem is).Lehetne játszani a dirty flagekkel, de ahhoz kellene, hogy ércsek hozzá, ami meg nem igaz.
De ha van elegánsabb, jobbszebb megoldásod, meghallgatunk
Amúgy szerintem -lajikusként- az exit eventben történő mentés után már nem tér vissza az afters
have eventbe, mert előtte megkapja a killt.De erről Delilát kérdezd inkább, ő tényleg ért hozzá.
üdv: latzi, üdv.
-
Delila_1
veterán
válasz
Márkó20 #29369 üzenetére
Hát ezekről a sorazonosítók lemaradtak. Az sem látszik, melyik lap milyen névre hallgat.
Legjobb lenne, ha feltöltenéd a füzetet egy elérhető helyre (pl. a data.hu-ra), mindegyik lapon pár sor adattal. Ahol összesíteni akarod, ott billentyűzetről vidd be, minek kell majd ott szerepelnie. Jelölheted ezeket a cellákat pl. sárga háttérrel.
Mikor feltöltötted a füzetet, másold a megadott linket. Gyere ide vissza. A válasznál a Link gombot nyomd meg, és a megjelenő rovatba illeszd be a linkedet.
-
bsh
addikt
válasz
poffsoft #29356 üzenetére
most ezt úgy kérdezem, hogy ekcellhez nem értek, meg nem is próbálom ki mert őőőő ezer a dolgom
de ez hogyan is akar működni? bezárás előtt beleír a táblázatba, amitől az megváltozik. ilyenkor nem ajánlja fel a mentést az ekcszell? mert akkor megint ment, de ugye afters
have megint beleír, amitől megint nem tudod bezárni, goto 10, nem? -
Márkó20
újonc
válasz
Delila_1 #29366 üzenetére
De jó, köszi. A képek azok a fülek, van egy INBOUND, OUTBOUND és Summary ahol a Balance képlete is látszik.
http://prohardver.hu/dl/upc/2015-11/04/487992_phz9ml1cbqjdhcgm_3.png
http://prohardver.hu/dl/upc/2015-11/04/487992_gr5r4kjgcfsukdrb_2.png
http://prohardver.hu/dl/upc/2015-11/04/487992_qiwjkhpjar21yes8_1.png -
poffsoft
veterán
válasz
Belnir #29358 üzenetére
majd belejössz!
Én amúgy a "Rejtett" lapot minden futtatáskor rejtetté is tenném, biztos ami tuti... Ha nem látják, nem szerkesztenek bele...
Az Application.ScreenUpdating = False után: (de ez nem biztos, hogy kell..)
Worksheets("Rejtett").Visible = xlSheetVisible
Az Application.ScreenUpdating = True elé:
Worksheets("Rejtett").Visible = xlSheetVeryHidden
Delila_1: tudom, olvastam
. Örülök, hogy használod
-
Delila_1
veterán
válasz
poffsoft #29356 üzenetére
Kukkants ide, és az előzményre.
-
-
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 -
Márkó20
újonc
Sziasztok!
Kis segítséget szeretnék kérni összesítés készítéséhez.
Van egy INBOUND fül, hetenként egy összesített sor. egymás után jönnek a hetek, de nem minden összesített tartomány áll ugyanannnyi sorból.
Ugyanez van az OUTBOUND fülön.Ezeket az értékeket szeretném heti szinten összesítve látni, úgy hogy BALANCE is legyen benne, amihez kell a STOCK sor amit manuálisan írunk be.
Ezen infók alapján tudtok segíteni?
Köszi!
-
Delila_1
veterán
-
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?
-
Delila_1
veterán
válasz
Belnir #29332 üzenetére
A füzetben egy lapot átnevezel, legyen a neve Rejtett.
Az első sorba A1-től H1-ig beírod a címeket:
Akció | Változás helye | Időpont | Változás előtt | Vált. után | Felh. neve | PC neve | Felh. domainEzt a lapot elrejtheted.
A füzetedben Alt+F11-re bejön a VB szerkesztő.
Bal oldalon kiválasztod a füzeted nevét. Ha a név előtt + jel van, rákattintasz.
Megjelenik (többek közt) a ThosWorkbook lap. Erre kattintasz. Jobb oldalon kapsz egy nagy üres felületet.
Oda másold be a lenti makrót.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 SubHagyj ki alatta egy sort. Válassz az Open helyett BeforeClose-t, majd Workbook_AfterSave-et a kép szerinti legördülőben.
Kaptál két Private Sub - End Sub párost. Ezek közé másold be a fenti makró belsejét (a Private Sub és End Sub közötti részt).
Makróbarátként kell mentened a füzetet.
-
válasz
Delila_1 #29318 üzenetére
Mi a különbség a te makród,
Sub Ertek_beillesztese()
'Billentyűparancs: Ctrl+e
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub..és aközött, aminek a kódját én szedtem össze innen-onnan?
Sub ertek_be()
'
' ertek_be Makró
' csak az érték beillesztése
'
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub -
bsh
addikt
válasz
Belnir #29332 üzenetére
kód a ThisWorkbook-ba:
Private Sub Workbook_Open()
On Error GoTo xit
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Logfile = FSO.OpenTextFile("Z:\ez\valami\szerveren\legyen\logfile.log", 8, True)
Logfile.WriteLine (Format(Now, "YYYY.MM.DD hh:mm:ss") & " - " & Application.UserName)
Logfile.Close
Set Logfile = Nothing
Set FSO = Nothing
xit:
End Sub -
Delila_1
veterán
válasz
karlkani #29333 üzenetére
A Ctrl+e hozzárendelést külön kell megadnod, mert az általam írtban csak megjegyzésként szerepel.
A füzetben Alt+F8, kiválasztod a makrót, majd az Egyebek gomb segítségével megadod a bill. hozzárendelést. Csak akkor kell, ha Ctrl+... hatására is működésbe akarod hozni.
Érdemes olyan betűt megadni, ami nem alapbeállítása az Excelnek, mint pl. a Ctrl+a, Ctrl+b, stb.
-
karlkani
aktív tag
válasz
Delila_1 #29326 üzenetére
Szia!
Megcsináltam én is az összefoglaló szerint, majd ezt a kódot bemásoltam.
Sub Ertek_beillesztese()
'Billentyűparancs: Ctrl+e
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End SubElmentettem. Betöltöttem egy munkafüzetet, ahol kipróbálnám a beillesztést, de nem megy.
Runt-time error '1004':
Range osztály PasteSpecial metódusa hibás -
Delila_1
veterán
válasz
DeFranco #29325 üzenetére
Megnyitod a makrót tartalmazó füzetet. Alt+F8-ra megjelennek a makróid. 1-et kiválasztva látod, hogy felül a Makrónév rovat tartalmazza a füzet nevét is.
Ha tehát nincs megnyitva, de az ikonnal indítod, be tudja hívni a makrós füzetet.
Nézz vissza néhány hsz-t, ahol szó van a personalról. Ezt érdemes használni, ha egy makrót több füzetben is alkalmazni akarsz. Javaslom még a Téma összefoglaló erre utaló részének az elolvasását.
-
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! -
-
DeFranco
nagyúr
válasz
m.zmrzlina #29324 üzenetére
igen, ez megvan már. közben azért összeállt a kép, ha jól értem, akkor általános makrótár nincs, max. akkor érem el a makrót máshonnan ha beállítom, hogy indításkor mindig nyisson egy spec munkafüzetet, illetve abban a speciális esetben ha a makrót tartalmazó füzet IS nyitva van.
-
DeFranco
nagyúr
sziasztok!
előrebocsátom, nem értek a makrókhoz semmilyen szinten
van egy makróm, amit egy makróbarát munkafüzetbe mentettem, legyen próba.xlsm
itt a gyorselérési eszköztárba kitettem egy gombot, amihez hozzárendeltem a makró futtatását
a munkafüzetet mentettem makrómentes munkafüzetként, legyen próba2.xlsx
a makró gombja itt is fenn maradt a gyorselérési eszköztáron
ha próba.xlsm-et bezárom, és a próba2.xlsx-en megnyomom a gombot, nyitja próba.xlsm-et és lefuttatja a makrót
a gombot persze el tudom távolítani, de akkor már a dolgok mögé néznék:
hol tudom szerkeszteni, hogy a gyorselérési gomb honnan, és milyen makrót hív meg?
tárolódik-e valahol akár általános tárban ez a makró, vagy annak elérése (tehát hogy melyik filet kell megnyitni hogy futtatható legyen) ha a makró a próba.xlsm-ben levő modulban található? -
Kapanyél
őstag
válasz
Delila_1 #29318 üzenetére
Köszönöm!
2013 alatt nincs Eszközök menü... létrehoztam egy personal.xlsm-et (makróbarát munkafüzet), module1-be bemásoltam a kódot, elmentettem, de sehogy nem lesz belőle xlsb. (közben megtaláltam: bináris excel fájlként mentve xlsb lesz)
Futtatáskor hibát ír. Sajnos tökkezdő vagyok makróban. -
bsh
addikt
üdv,
megint nem exceles kérdés, de hátha a vba profik tudnának segíteni:
van egy dinamikusan generált userform, amiben egy amolyan táblázatszerűséget generálok textbox és listbox elemekből. minden TB és LB generáláskor megadom minden elemnek a magasságát (=sormagasság), szélességét, autosize=false, font.name és font.size (ezeket is már csak kínomban), az elemek top pozíciója pedig sor_száma*sormagasság képlettel.
mégis ahogy a képen látszik, néhol kicsit szétcsúsznak a sorok, és a betűméret sem mindenhol egyforma, hiába van beállítva. ezek mitől lehetnek? már nincs ötletem. -
Delila_1
veterán
válasz
Kapanyél #29317 üzenetére
Nekem is sűrűn van szükségem az érték beillesztésére. Ezért a personalomba tettem egy nyúlfarknyi makrót.
Sub Ertek_beillesztese()
'Billentyűparancs: Ctrl+e
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End SubA makróhoz a Ctrl+e billentyűkódot rendeltem, mint a megjegyzés sorban láthatod.
Működése: kijelölöm a másolandó területet, Ctrl+c-vel másolom, kijelölöm a területet, ahova be akarom illeszteni, Ctrl+e-vel már kész is van.A personalra keress rá itt a fórumon, sokszor volt már szó róla, pl. itt. Ez még a 2007 előtti verzióhoz készült personal.xls leírása, de csak annyi a különbség, hogy a Fejlesztőeszközök | Kód csoport | Makró rögzítése menüponttal kell indulnod, és a létrehozott personal kiterjesztése xlsb lesz.
Az Excel minden indításakor megnyitja a personalt a háttérben, a benne található makrók minden füzetedben alkalmazhatóak.
-
Kapanyél
őstag
Sziasztok!
2013-as magyar Excelben be lehet valahogyan állítani, hogy az Autokitöltés alapértelmezetten csak képletet adjon, ne formázzon? Tehát ha lehúzom az első sort, ne rongálja meg a többi szegélyt, színt, stb...
Illetve hasonlóképpen érdekel, hogy kiválasztható-e alapértelmezett beillesztési mód? Legtöbbször csak értékként teszek át másik cellákból, jó volna megspórolni a jobbklikk-123 mozdulatot.
Előre is köszönöm a válaszokat!
-
Delila_1
veterán
válasz
m.zmrzlina #29313 üzenetére
A for-next és a for each-next ciklusnál a program gondoskodik a változó értékének növeléséről (elsőnél esetleg csökkentéséről negatív lépésszámnál), a do-loop-nál neked kell gondoskodni erről.
-
Delila_1
veterán
válasz
m.zmrzlina #29311 üzenetére
Ilyesmire gondolsz?
sor = 46
Do While Cells(sor, "C") <> ""
If Cells(sor, "D") = "i" Then
Cells(sor, "F") = "aq"
Else
Cells(sor, "F") = "ap"
End If
sor = sor + 1
LoopVagy
sor = 46
Do While Cells(sor, "C") <> ""
Select Case Cells(sor, "D")
Case "e"
Cells(sor, "F") = ""
Case "i"
Cells(sor, "f") = "ap"
Case Else
Cells(sor, "F") = "aq"
End Select
sor = sor + 1
Loop -
Fferi50
Topikgazda
válasz
pirit28 #29304 üzenetére
Szia!
Ezt a makrót beteszed egy modul lapra (de akár az adott munkalap kódlapjára is teheted), majd elindítod. Persze tetszés szerint átnevezheted.
A makró végigmegy a C oszlopon az utolsó nem üres celláig és beírja a C oszlopban levő érték alapján a D oszlopba a kívánt értéket (ez utóbbit csak remélem, hogy eltaláltam).
Annyiszor futtatod, ahányszor akarod, mindig újraírja a D oszlop celláit az aktuális C oszlop szerint.Sub kitalalo()
Const oes = "hattorf,Győr,Ford,Pors,BMW,AUDI,hmmc,kms,Sassenburg,Figueruelas,Grossmehring,Sindelfingen,Bremen,Koeln,Voelklingen,Seat,emden,Genk,Daventry,VW,BENZ,Swarzedz,Hannover,(OE)"
Const whs = "WH,W/H"
Dim beir As String, cl As Range
For Each cl In Range("C11:C" & Cells(Rows.Count, "C").End(xlUp).Row).Cells
If cl.Value = "" Then
beir = ""
Else
If oes Like "*" & cl.Value & "*" Then
beir = "OE"
Else
If whs Like "*cl.value" & "*" Then
beir = "W/H"
Else
beir = "DFC"
End If
End If
End If
cl.Offset(0, 1).Value = beir
Next
End SubÜdv.
-
m.zmrzlina
senior tag
válasz
pirit28 #29304 üzenetére
Ahhoz munkalaphoz rendeld amin az adataid vannak!
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Then
If Target.Value = "" Then
Target.Offset(0, 1).Value = ""
ElseIf Target.Value = "*hatroff*" Or Target.Value = "*Győr*" Or Target.Value = "*(OE)*" _
Or Target.Value = "*Ford*" Or Target.Value = "*Pors*" Or Target.Value = "*BMW*" _
Or Target.Value = "*AUDI*" Or Target.Value = "*hmmc*" Or Target.Value = "*kms*" _
Or Target.Value = "*Sassenburg*" Or Target.Value = "*Figueruelas*" Or Target.Value = "*Grossmehring*" _
Or Target.Value = "*Sindelfingen*" Or Target.Value = "*Bremen*" Or Target.Value = "*Koeln*" _
Or Target.Value = "*Voelklingen*" Or Target.Value = "*Seat*" Or Target.Value = "*emden*" _
Or Target.Value = "*Genk*" Or Target.Value = "*Daventry*" Or Target.Value = "*VW*" _
Or Target.Value = "*Benz*" Or Target.Value = "*Swarzedz*" Or Target.Value = "*Hannover*" Then
Target.Offset(0, 1).Value = "OE"
ElseIf Target.Value = "*WH*" Or Target.Value = "*W/H*" Then
Target.Offset(0, 1).Value = "W/H"
Else
Target.Offset(0, 1).Value = "DFC"
End If
End If
End Sub -
pirit28
csendes tag
válasz
m.zmrzlina #29302 üzenetére
Sziasztok !
Mindkettőtöknek köszönöm a fáradozását,de most verem a fejem a falba,mert rosszul tettem fel a kérdést.
Tehát van a C oszlopom 11-es cellától lefelé,amely cellákban előfordulhatnak a fent említett helyiségek.
Ha pl a C15-ös cellában levő szövegben szerepel az OE szó akkor a D15-ös cellába írja be hogy OE,
és így tovább.A jelen probléma az az ,hogy mindig kitörli valaki a függvényt és mindig újra kell gyártani.Ezért gondoltam ,hogyha valami nem látszik azt nem tudják törölni.Köszönöm
-
Fferi50
Topikgazda
válasz
pirit28 #29300 üzenetére
Szia!
Mivel jelen esetben egyetlen cella tartalmát vizsgálod, továbbá a countif csak azt mondja meg, hogy a cellában van olyan érték (lehet, hogy több is, de ezt nem tudja megmondani!!!), ezért én a sok countif helyett a like operátort javasolnám:
if range("C11").value="" then range("D11").value=""
else
if hattorf,Győr,Ford,Pors" like "*" & range("C11").value & "*" then ' a felsorolást természetesen ki kell egészíteni - igaz, ha a c11 cella értéke valahol előfordul a megadott szövegben
range("D11").value="OE"
else
endif
endifAz else ágakat az előttem szóló alapján alakíthatod ki.
Üdv.
-
m.zmrzlina
senior tag
válasz
pirit28 #29300 üzenetére
Nem derült ki a kérdésből, hogy melyik cella tartalmát kell módosítania a képletnek ezért én a D11-es cellára írtam meg a makrót.
Próbáld ki jól fejtettem-e vissza a képletet!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("C11").Value = "" Then
Range("D11").Value = ""
ElseIf Range("C11").Value = "*hatroff*" Or Range("C11").Value = "*Győr*" Or Range("C11").Value = "*(OE)*" Then
Range("D11").Value = "OE"
ElseIf Range("C11").Value = "*WH*" Or Range("C11").Value = "*W/H*" Then
Range("D11").Value = "W/H"
Else
Range("D11").Value = "DFC"
End If
End SubA második ág ahogy látod nem teljes, ha így azt csinálja amit szeretnél akkor ki lehet egészíteni.
Új hozzászólás Aktív témák
Hirdetés
- Vírusirtó, Antivirus, VPN kulcsok
- Jogtiszta Windows - Office & Vírusirtó licencek- Azonnal - Számlával - Garanciával - Nint.hu
- Path of Exile 2 early access kulcs
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Fujitsu LIFEBOOK E449 i5-8250U 8GB 256GB 14" FHD 1 év garancia
- iKing.Hu -Xiaomi 14T Pro Titan Gray Használt, karcmentes állapotban 12 GB RAM / 512 GB tárhely
- LG 55B4 - 55" OLED - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox Ready
- AKCIÓ! Lenovo IS8XM LGA 1150 DDR3 alaplap garanciával hibátlan működéssel
- Azonnali készpénzes Intel i5 i7 i9 8xxx 9xxx processzor felvásárlás személyesen / csomagküldés
Állásajánlatok
Cég: FOTC
Város: Budapest