- sh4d0w: Netflix? Ugyan, VW előfizetés!
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- LordAthis: Ismét egy "Idióta" A.I. Projekt, hogy meglovagolja az aktuális trendeket...
- gban: Ingyen kellene, de tegnapra
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- Geri Bátyó: Megint tahó voltam – SZEMÉLYISÉGFEJLŐDÉS
- Brogyi: CTEK akkumulátor töltő és másolatai
-
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
slashing #23396 üzenetére
Beviszed a neveket egy oszlopba. Táblázattá alakítod, és a Nevek névvel látod el a tartományt.
Sub mm()
Dim nev$, tomb(), v As Integer, megvan As Boolean
nev$ = Application.InputBox("Add meg a neved!", "Név bekérése", , , , , , 2)
tomb = Application.Transpose(Range("Nevek"))
For v = 1 To UBound(tomb)
If nev$ = tomb(v) Then
megvan = True
Exit For
End If
Next
If megvan = False Then
MsgBox "Nem szerepelsz a nevek között!"
Exit Sub
Else
MsgBox nev$ & " a(z) " & v & ". helyen szerepel."
'makró többi része
End If
End SubBővítheted agyba-főbe a tartományt.
-
slashing
senior tag
válasz
Mittu88 #23397 üzenetére
a legegyszerűbb ha úgy mondom mint amikor keresel valamilyen fájlt a számítógépen és azt írod hogy:
*kutya*.* így megkeresel minden olyan fájlt amiben a kutya szó szerepel bármilyen kiterjesztéssel, ez is kvázi egy regex kifejezés...
szóval ilyen kifejezéssek leírhatod hogy mit szeretnél kerestetni karaktereket számokat azoknak a hosszát stb...
Mindent az ég egy adta világon le lehet írni velük de mocskos bonyolult tud lenni, szerencsére nem sok közöm volt eddig hozzá.
-
slashing
senior tag
Huh vannak ám variációk én meg akkor mondok egy harmadikat.
Mi lenne ha reguláris kifejezéssel írnánk le hogy mi az amit elfogadhat?
Most fejből meg nem írom mi ennek a regexp kódja de mittudom én [a-zA-Z] szókóz [a-zA-Z] lenne
csak gőzöm sincs hogy kezeli a VBA a regexp kódot
amúgy a folyamatos frissítésre lenne lehetőségem csak ***** mód lusta vagyok és nincs kedvem hozzá
-
m.zmrzlina
senior tag
válasz
slashing #23393 üzenetére
Én ezt egyszer úgy oldottam meg, hogy az inputboxban megadtam a formáját a neveknek amit elfogad a makró.
technikus = UCase(InputBox("Add meg a technikus nevét!" & Chr(10) "TUDOR VIDOR SZENDE SZUNDI MORGÓ HAPCI KUKA MIND"))
If technikus <> "MIND" Then
If Application.WorksheetFunction.CountIf(Worksheets("PrnWinExcel").range("B:B"), technikus) = 0 Then
MsgBox "Nincs ilyen technikus."
Exit Sub
ElseIf technikus = "" Then
Exit Sub
End If
End IfPersze ez csak akkor működik ha minden elfogadható input ismert a programozás idején, nem bővül vagy egészül ki esetleges elemekkel a Worksheets("PrnWinExcel").range("B:B") tartomány vagy van lehetőség a folyamatos frissítésére.
-
slashing
senior tag
Hát ilyen variációra nem is gondoltam de azthiszem belerakom úgy hogy minimum 5 karakter legyen a hossza és akkor már rövidíteni sem tudja a nevét. Persze a 6 szóközt így is elengedi de mennyi erre az esély hogy kipróbálja?
-
bteebi
veterán
válasz
slashing #23384 üzenetére
Azt amúgy hogy lehetne megcsinálni, hogy csak szóköz(öke)t ne adhasson meg névnek? Mert ez
Loop Until nev <> "" And nev <> " " Or nev = False
csak egy karakternyi szóközig működne, n db esetén már nem.Némi keresgélés után sikerült megoldanom, de az azért érdekelne, hogy meg lehetne-e szebben is írni (egyszerűbben minden bizonnyal nem):
Do
nev = InputBox("A mérést végző személy Teljes neve:")
ujnev = WorksheetFunction.Substitute(nev, " ", "")
Loop Until ujnev <> "" Or nev = False -
slashing
senior tag
válasz
m.zmrzlina #23387 üzenetére
Hát én is kb. erre jutottam: miután lefutott a kódom nem térek vissza arra a lapra ahonnan másolni akarok hanem előbb a törlendő lapra ugrok és törlök majd visszaugrok a másolandó adatokat tartalmazó lapra ott másolok és újra visszaugrok arra a lapra hol előtte kitöröltem.
szóval csináltam egy oda vissza oda bakugrást
-
m.zmrzlina
senior tag
válasz
m.zmrzlina #23387 üzenetére
Talán egy fokkal jobb, ha kiírod tömbbe. Onnantól fogva van egy változód amit kedved szerint módosíthatsz aztán a végén visszaírod a munkalapra.
-
m.zmrzlina
senior tag
-
Mittu88
senior tag
-
slashing
senior tag
Jah meg még egy kérdés ki lehet azt játszani valahogy ha valamit vágólapra másoltatok de ezután lefut egy selection.clearcontents de dobja el a vágólap tartalmát?
(#23380) Mittu88 köszi mindjárt ki is próbálom
-
slashing
senior tag
Most már csak a user errorokat próbálom kiküszöbölni. Érdekelne hogy mi a legegyszerűbb megoldás arra hogy a Név és WO kérésre ha valamiért Mégsét nyom vagy nem ír be semmi és úgy okézza le akkor ne lépjen tovább a program hanem mindenképpen be kelljen írni valamit?
A dátumot megoldottam egy neten talált példa alapján de kicsit hosszasnak érzem a kódot nem szeretném mindegyikre így végigvezetni.Ötletek?
Így indul a kód:
Dim lastRow As Long, asn As String, DatumString As String, datum As Date
Dim valid As Boolean: valid = True
asn = ActiveSheet.Name
'adatok bekérése
nev = InputBox("A mérést végző személy Teljes neve:")
wo = InputBox("A méréshez tartozó WO szám Bxxxxxx/xx:")
Do
DatumString = Application.InputBox("A mérés dátuma ÉÉÉÉ/HH/NN: ")
If IsDate(DatumString) Then
datum = DateValue(DatumString)
valid = True
Else
MsgBox "Érvénytelen dátum"
valid = False
End If
Loop Until valid = True -
Imy
veterán
válasz
m.zmrzlina #23376 üzenetére
Köszönöm!!!
-
m.zmrzlina
senior tag
-
Imy
veterán
Hogyan tudom beírni a cellába pl hogy 30cm? Hogy tudjon vele számolni, maradjon szám.
-
Fferi50
Topikgazda
válasz
Delila_1 #23370 üzenetére
Szia!
Itt egy példa:
Ez a munka1 munkalapon működik. (Munka2-t felejtsd el, csak nem töröltem ki.)
Ha közben makrót írsz, akkor elképzelhető a hibára futás. Viszont ezt el tudod kerülni azzal, hogy a munka1-en levő, a célkereszthez tartozó feltételes formázásokat a feltételes formázás kezelővel kitörlöd, a többit viszont hagyd változatlanul.Utána ha lépsz egyet, megjön a célkereszt ismét.
Üdv.
-
slashing
senior tag
válasz
m.zmrzlina #23366 üzenetére
Köszi és neked is Delila_1 mindkét verzió nagyon jó és hasznos volt, pont úgy megy ahogy akartam
-
slashing
senior tag
Baromi jók vagytok
a bőség zavara
Köszönöm. és mindegyikből tanultam valami újat, látszik ahány ember annyi kód ugyan arra. Egy valami hibázik csak, hogy az utolsó értéket tartalmazó oszlop után is ki kell még iratni az első input szöveget.
-
m.zmrzlina
senior tag
válasz
slashing #23360 üzenetére
Nekem ezt sikerült kiötleni:
Sub makro_1()
elsouzenet = InputBox("blablabla1")
masodikuzenet = InputBox("blablabla2")
datum = InputBox("datum")
Range("D5").Select
Range(Cells(ActiveCell.Row, ActiveCell.Column), Cells(ActiveCell.End(xlDown).Row, ActiveCell.End(xlToRight).Column)).Select
Selection.Copy
Sheets.Add
ActiveSheet.Paste
hanysor = Selection.Rows.Count
hanyoszlop = Selection.Columns.Count
For i = hanyoszlop To 1 Step -1
Range(Cells(1, i), Cells(hanysor, i)).Select
Selection.Insert Shift:=xlToRight
Selection.Value = elsouzenet
Next
Range("A:B").Select
Selection.Insert Shift:=xlToRight
Range("B1").Value = masodikuzenet
Range("A1").Value = datum
Range(Cells(1, 1), Cells(hanysor, ActiveCell.End(xlToRight).Column)).Select
Selection.Copy
End Sub -
slashing
senior tag
válasz
slashing #23360 üzenetére
Hát eddig jutottam:
Sub Makró5()
Dim c As Long, myvalue As Variant, lastrow As Long
Range("D5").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Munka1").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
c = Range("XFD1").End(xlToLeft).Column
For c = c To 2 Step -1
Cells(1, c).EntireColumn.Insert
Next c
myvalue = InputBox("add meg a szöveget")
Range("B1").Value = myvalue
lastrow = Worksheets("munka1").Range("A1").End(xlDown).Row
With Worksheets("munka1").Range("B1")
.AutoFill Destination:=Range("B1:B" & lastrow&)
End With
Columns("A:B").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A1").Select
myvalue = InputBox("add meg a dátumot")
Range("A1").Value = myvalue
Range("B1").Select
myvalue = InputBox("add meg a szöveget")
Range("B1").Value = myvalue
End Subközel sem tökéletes pl. a dátum helyére bármit beírhatnék de ez legyen a legkevesebb. Annyi kéne még hogy az első szöveg bekérés után kitölti az oszlopot a megadott szöveggel de ezt tovább kéne vinni az utolsó oszlopig is.
(#23362) Delila_1
Máris nézem köszönöm
-
Delila_1
veterán
válasz
slashing #23360 üzenetére
A végét írd meg, most el kell rohannom.
Sub valami()
Dim usor As Long, uoszlop As Integer, oszlop As Integer, v$
Sheets("Munka1").Select
Range("D5").CurrentRegion.Copy Sheets("Másik lap").Range("A1")
Sheets("Másik lap").Select
usor = ActiveSheet.UsedRange.Rows.Count
oszlop = 1
Do
Columns(oszlop).EntireColumn.Insert
oszlop = oszlop + 2
Loop While Cells(1, oszlop + 1) <> ""
Columns(oszlop).EntireColumn.Insert
v$ = InputBox("add meg az értéket")
uoszlop = oszlop
For oszlop = 1 To uoszlop Step 2
Range(Cells(1, oszlop), Cells(usor, oszlop)) = v$
Next
End Sub -
-
slashing
senior tag
Kellene nekem is egy kis macrós segítség csak részben tudom összeollózni a neten találtakból
magamtól meg nem igen megy
A követekző lenne a feladat:
- Az aktív munkalapon jelölje ki a D5 cellától kezdődően jobbra és lefele addig a cellákat amíg adatok vannak benne.
- Másolja új lapra rátok bízom hogy ez egy már meglévő munkalap vagy mindig újat csinál.
- Az új lapon miután beillesztette az adatokat minden második oszlop elé szúrjon be egy új oszlopot majd egy input mező jöjjön fel és amit beleír az ember azzal töltse fel az új oszlopokat addig amíg adatok vannak, 99,9% hogy mindig minden oszlop ugyan annyi sorban fog adatot tartalmazni mint amennyi az első oszlopban van.
- Ha ez megvan szúrjon be még két üres sort az A oszlop elé, még két input kérelem az első egy dátumkérés a második egy szöveges kérés, itt már elég csak az új A1-be a dátumo és B1-be a szöveget...
- Jelölje ki ezt az egész tartomány és másolja a vágólapra. -
Fferi50
Topikgazda
-
Üdv. Kollégák szám típusú mezőre hogyan tudnék kiadni max limit-et, illetve ha belekattolok "megjegyzés" jelenjen meg(nem pontosan megjegyzés(széljegyzet tán?), ez vmi más kis panel, amibe írja mennyi az a limit)?
-
Fferi50
Topikgazda
válasz
Delila_1 #23348 üzenetére
Szia!
Sikerült még rövidítenem a Thisworkbook BeforeClose -on:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("Valóban kilép?", vbQuestion + vbYesNo, "Bezárás") = vbNo Then
Cancel = True
Else
valasz = MsgBox("Menti a változásokat?", vbQuestion + vbYesNoCancel, "Bezárás")
If valasz = vbCancel Then Cancel = True: Exit Sub
If Munka1.fmtcondis.Count > 0 Then
For Each fmt In Munka1.fmtcondis
fmt.Delete
Munka1.fmtcondis.Remove 1
Next
End If
If valasz = vbNo Then
ThisWorkbook.Saved = True
kilepo = True
Else
kilepo = True
ThisWorkbook.Save
End If
End If
End Sub -
slashing
senior tag
találtam a neten egy ilyet...
Sub test()
Dim e, s
With CreateObject("System.Collections.ArrayList")
For Each e In Range("a2", Range("a" & Rows.Count).End(xlUp)).Value
If Not IsEmpty(e) Then
For Each s In Split(e, ";")
.Add s
Next
End If
Next
.Sort
Range("b2").Resize(.Count).Value = _
Application.Transpose(.ToArray)
End With
End Suba pontos vesszőt írd át vesszőre a .Sort sort meg töröld hogy ne rendezze....
-
Fferi50
Topikgazda
Szia!
A szövegből először oszlopokat csinálsz a "megtalált opcióval" mondjuk az A1-től kezdődően.
Azután kijelölöd a kivánt adatokat a sorban.
Másolás
Kijelölöd az A2 cellát.
Irányított beillesztés - transzponálás
Máris oszlopban sorakoznak a számaid.
Utána még nyomj egy ESC-t, hogy kilépj a másolás módból.Üdv.
-
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
Delila_1 #23348 üzenetére
Szia!
Ezt kell a Thisworkbook kódlapjára beírni:
Public kilepo As Boolean
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
If kilepo Then Exit Sub
Application.ScreenUpdating = False
ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(0, -1).Select
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Munka1.fmtcondis.Count > 0 Then
For Each fmt In Munka1.fmtcondis
fmt.Delete
Munka1.fmtcondis.Remove 1
Next
End If
If MsgBox("Valóban kilép?", vbQuestion + vbYesNo, "Bezárás") = vbNo Then
Application.ScreenUpdating = False
ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(0, -1).Select
Application.ScreenUpdating = True
Cancel = True
Else
valasz = MsgBox("Menti a változásokat?", vbQuestion + vbYesNoCancel, "Bezárás")
If valasz = vbNo Then
ThisWorkbook.Saved = True
kilepo = True
ElseIf valasz = vbYes Then
kilepo = True
ThisWorkbook.Save
Else
Application.ScreenUpdating = False
ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(0, -1).Select
Application.ScreenUpdating = True
Cancel = True
End If
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Munka1.fmtcondis.Count > 0 Then
For Each fmt In Munka1.fmtcondis
fmt.Delete
Munka1.fmtcondis.Remove 1
Next
End If
End Sub
Private Sub Workbook_Open()
Application.ScreenUpdating = False
ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(0, -1).Select
Application.ScreenUpdating = True
End SubEzzel elérhető, hogy a "célkeresztet" nem menti le, de a fájl megnyitásakor első dolga, hogy létrehozza: ezért lép oda-vissza egyet az aktív munkalapon.
Mentés előtt eltünteti a célkeresztet, de ha csak mentés volt, utána vissza is hozza.
Kilépéskor végigjátssza a verziókat, ha mégsem lép ki, akkor marad a célkereszt.Üdv.
-
#75376384
törölt tag
sziasztok
egy triviális kérdésem lenne. cellaformázás esetén melyik az a beállítás, hogy ha beírok egy cellába valamilyen képletet, majd annak eredménye mögé vagy elé karaktereket illesszen, de az egészet továbbra is számként kezelje.
példával szemléltetve, annyi lenne, hogy pár értékem mögé "m" kellene, illetve pár érték elé egy plusz-mínusz jel.köszi előre is.
-
Fboy
aktív tag
Sziasztok!
"Az A2- A12 cellába írja be az alábbi számokat:
24, 12, 79, 32, 104, 54, 254, 46, 9, 124, 43"Erre van valamilyen spéci beillesztés? Vagy be kell írkálni őket? Olyan opciót találtam, hogy szövegből oszlopok, de ugyanezt nem tudom eljátszani sorokkal.
-
slashing
senior tag
válasz
Mittu88 #23345 üzenetére
erről én is tudnék mesélni, mikor megnyitja a munkafüzetet előjön automatikusan egy msgbox kiírja hogy mit nem szabad, a cellán érvényesítés van és kiírja hogy mit nem szabad más színnel van jelölve és még akkor is az ellenkezőjét csinálja mikor meg letiltom akár még a rákattintást is akkor meg reklamál hogy de miéééért, mert hülye vagy azért és nem fogja fel....
az abszolút hozzá nem értőnél már csak az rosszabb aki azt hiszi hogy ért hozzá, mert majd ők megoldják de még egy ha függvényt sem tud megcsinálni
minden szerénység nélkül mondom hogy nálunk 5 asszisztens munkáját fél év alatt automatizálni tudnám és még csak makró sem kéne hozzá, pedig én se vagyok egy nagy mágus de félelmetes a hozzá nem értés. A színezésen kívül talán még a szum függvény amit értenek...
-
Fferi50
Topikgazda
válasz
Delila_1 #23344 üzenetére
Szia!
Szerintem nem beszéltünk el egymás mellett, de ez nem is lényeges.
A 2010-es exceltől biztosan (de valószínűleg a 2007-ben is már) igen egyszerűen megoldható a feladat:Public fmtcondis As New Collection
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ujfmtr As FormatCondition, ujfmtc As FormatCondition, ujfmtt As FormatCondition
On Error Resume Next
If IsError(Target.Cells.Count) Then Exit Sub
On Error GoTo 0
If Target.Cells.Count <> 1 Then Exit Sub
If fmtcondis.Count > 0 Then
On Error Resume Next
For Each fmt In fmtcondis
fmt.Delete
fmtcondis.Remove 1
Next
On Error GoTo 0
End If
With Target
With .EntireRow
Set ujfmtr = .FormatConditions.Add(Type:=xlExpression, Formula1:="1")
With ujfmtr '.FormatConditions(1)
With .Borders(xlTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 5
End With
With .Borders(xlBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 5
End With
.Interior.ColorIndex = 20
.SetFirstPriority
End With
End With
fmtcondis.Add ujfmtr, "fmt1"
With .EntireColumn
Set ujfmtc = .FormatConditions.Add(Type:=xlExpression, Formula1:="1")
With ujfmtc '.FormatConditions(1)
With .Borders(xlLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 5
End With
With .Borders(xlRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 5
End With
.Interior.ColorIndex = 20
.SetFirstPriority
End With
End With
fmtcondis.Add ujfmtc, "fmt2"
Set ujfmtt = .FormatConditions.Add(Type:=xlExpression, Formula1:="1")
ujfmtt.Interior.ColorIndex = 36
ujfmtt.SetFirstPriority
fmtcondis.Add ujfmtt, "fmt3"
End With
End SubHiszen itt már be lehet szúrni "akárhány" feltételes formázást és elsőnek tenni, ha pedig megváltozik a kijelölés, akkor az előző formázást törölni.
Ha egy kijelölés közben megváltoztatod az oldalon a feltételes formázási szabályokat, akkor nem tudja a kijelölés elhagyása után letörölni a régi formázást - viszont, ha már úgyis benne vagy a szabályokban, egyszerűen ki kell törölni a kijelölésre vonatkozó feltételes formázásokat, utána az új kijelöléstől már ismét működik az automatizmus.2007. előttre olyan ötletem van, hogy az adott munkalapról csinálni kell egy másolatot és arról minden kijelölés váltásnál vissza kell másolni a formátumot az eredetire.
Üdv.
-
Mittu88
senior tag
válasz
m.zmrzlina #23343 üzenetére
Az biztos. Az Apple komoly pénzeket fizetne egyes kollegák szoftveres "tesztelési" képességeiért.
-
-
Fferi50
Topikgazda
válasz
Delila_1 #23339 üzenetére
Szia!
"Nem tudod eltárolni az adatokat."
Már miért ne tudnám. A formatcondition objektum egymaga tárolja a benne levő összes beállítást, nem kell mindenhez külön változó - még azt is tudja, hogy mely tartományra vonatkozik.
Tehát elég "csak" az adott területen található formatcondition objektumokat eltárolni. Igaz, az állapotok visszanyerése jóval bonyolultabb az eltárolásnál.Viszont amit én írtam, az egyetlen cellára vonatkozott, hiszen a feladat az volt, hogy a feltételeknek megfelelően történő ugrálásnál váltson színt a cella. Egy színt azért csak meg lehet jegyezni a cella címével együtt...
Üdv.
-
slashing
senior tag
válasz
slashing #23340 üzenetére
jah azt elfelejtettem megkérdezni hogy mit értesz az alatt hogy "egy képlettel" mert egyel sehogy sem mert 3 abszolút eltérő képletről beszélünk... mindegyiknek külön oszlop kell
nálam így volt:
e2,3,4 a csoportok
f1 a létszám g1 a módusz h1 a medián és ezek alatt voltak a képletek...ha a fentiek megvannak akkor ki lehet iratni egy képlettel mindet így:
="a csoport létszáma="&F2&" módusza="&G2& " mediánja="&H2
-
Delila_1
veterán
válasz
Fferi50 #23329 üzenetére
A makró több formátumot módosít: a cella háttérszínét, a 4 szegély 3-3 tulajdonságát, úgy, mint stílusát, vastagságát, és színét, ami összesen 13 tulajdonság.
Igen, látszólag el lehetne tárolni ezeket, de mikor is állítanád vissza az eredeti értékeket? Mikor egy másik cellára kattint a felhasználó.
Tehát 13 publikus változóban kellene tárolni a fentieket, plusz az előzőleg kiválasztott cella címét, hogy tudjuk, melyik cella feltételes formátumát kell visszaállítani – ha egyáltalán volt rá ilyen adva. Ezeken kívül még a feltétel(eke)t is be kellene spájzolni.Eddig 1 celláról beszéltem, de a kiválasztott cellának a teljes sorát, és oszlopát módosítja a célkeresztes makró. Hány változó is kellene ehhez?
Nem tudod eltárolni az adatokat.
A célkeresztes makrót ott lehet alkalmazni, ahol nincs a lapon feltételes formázás.
-
Mittu88
senior tag
válasz
Mittu88 #23337 üzenetére
Ma pl. lecsesztek, hogy a szerveren amit anno csináltam fájlt, simán le tudta törölni az egyik felhasználó. Megnéztem és az egész fájlt törölte. Erre mondtam, hogy nem azt mondtátok, hogy ne törölhesse, hanem hogy ne törölhessen bele.
Ezt én (remélem helyesen) úgy értelmeztem, hogy ha meg van nyitva a fájl, ne tudjon munkalapot vagy cella tartalmat törölni.
Pár évnyi adatot töröltek, de van róla biztonsági mentés. -
Mittu88
senior tag
válasz
m.zmrzlina #23335 üzenetére
A mi cégünknél nem elvárás az ilyen alap szintű office programcsalád ismerete. Pályakezdő vagyok (bár már talán nem, 2 éve vagyok a cégnél), máshol elvárás?
Amúgy nevetséges -
bbTamas77
aktív tag
Sziasztok!
Tegyük fel, hogy van egy ilyen táblám, ahol a sorok a következőek:
Az oszlopok a "csoport", és "létszám".
CSOPORT1 10 fő
CSOPORT1 24 fő
CSOPORT1 30 fő
CSOPORT2 40 fő
CSOPORT2 54 fő
CSOPORT2 44 fő
CSOPORT2 24 fő
CSOPORT3 23 fő
CSOPORT3 53 fő
CSOPORT4 10 fő
CSOPORT4 12 főCsoportok összlétszámát kellett kiszámolnom csoportonként, ez eddig sikerült egy szumha függvénnyel.
De utána kellene ezeknek a soroknak Mediánt és Móduszt is számolni csoportok alapján!Hogyan lehetséges ezt egy képlettel megoldani?
-
Mittu88
senior tag
válasz
#02644736 #23333 üzenetére
Ha kijelölöd valamelyik celláját a becsatolt adattartománynak, és az Adatok fülön rákattintasz a Kapcsolatoknál a Tulajdonságokra, lennie kell az Adatformátum és elrendezés részben olyannak, hogy Oszlopszélesség igazítása. Checkboxból pipa ki és kész.
Legalábbis 2010-esben így működik, sajnos nincs '13-asom. -
#02644736
törölt tag
Sziasztok!
Olyan problémám lenne, hogy adott egy excel (2013-as), ami 22 munkalapból áll. Az utolsó 18 lapra mindig txt fájlból olvasok be adatokat (Adatok menü Szövegből), és az első 4 munkalap azokból vesz ki adatokat.
Beállítom az utolsó 18 munkalapon a kívánt oszlopszélességeket, de mikor új txt-t olvasok be, nem marad úgy a beállított oszlopszélesség, mindig megváltozik. Be lehet valahogy állítani, hogy amit beállítok, az ne változzon meg, ha új txt-t olvasok be? -
Delila_1
veterán
válasz
WildBoarTeam #23331 üzenetére
Hurrá!
-
Mittu88
senior tag
válasz
m.zmrzlina #23317 üzenetére
Szuppper
Az Open és a BeforeClose eseményben is volt előtte parancs, ezeket egyből kiütötte (nem működtek), mert rossz helyre illesztettem be először a parancssoraidat (veryhidden munkalapon nem tud dolgozni a vba!), de minimális gondolkozás és javítás után tökéletesen működött.
Nagyon szépen köszönöm a segítséget!
-
Fferi50
Topikgazda
válasz
Delila_1 #23321 üzenetére
Szia!
Az igaz, hogy a makró a feltételes formázás törlésével indít, de ki tart vissza bennünket attól, hogy előtte elmentsük a feltételes formázásnak azt az értékét, amit meg akarunk változtatni (mert nyilván, nem az egész formázás fontos, hanem annak mondjuk a színe), amikor pedig "kilépünk" belőle, akkor visszaadjuk az eredeti értéket. (De most másban vagyok benne, nem érek rá megírni - bár nyilván csak pár sor.)
Üdv.
-
slashing
senior tag
válasz
sutyimatyi #23327 üzenetére
Nincs mit...
-
slashing
senior tag
válasz
sutyimatyi #23324 üzenetére
=ABS(SZUMHA(A3:A50;"<0"))
-
slashing
senior tag
válasz
sutyimatyi #23322 üzenetére
nem próbáltam ki de elvileg működnie kell:
=SZUMHA(A3:A50;"<0";A3:A50)
sőt ha jól tudom az utolsó(második) A3:A50 csak opcionális szóval elhagyható...
-
sutyimatyi
csendes tag
Sziasztok! Segítség kellene. Hogyan lehet azt megcsinálni, hogy A3-A50 ig figyelje a beírt értékeket, és ahol negatív előjellel talál értékeket azokat összeadja, és beírja A1-be. Remélem érthetően írtam le. Köszönöm
-
Fferi50
Topikgazda
válasz
Delila_1 #23319 üzenetére
Szia!
Akkor azt javaslom, hogy a Thisworbook SheetSelectionChange eseménybe írja be a makrót:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
End SubA fenti két sor közé. Az Sh.name megmondja, hogy melyik munkalapon van éppen. Ezt megvizsgálva eldöntheti, hogy menjen-e a feltételes formázás vagy nem.
Nem kell sok-sok munkalapra másolni, csak egy változóban meg kell adni a munkalapok neveit, amit aztán többféle módon lehet ellenőrizni. (Pl. Instr függvény)
Üdv.
-
Delila_1
veterán
válasz
WildBoarTeam #23316 üzenetére
A kérdéses laphoz (mindegyikhez, ahol működtetni akarja) kell rendelni a lenti makrót, amit nem én írtam, de nagyon tetszik.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.FormatConditions.Delete
With Target
With .EntireRow
.FormatConditions.Add Type:=xlExpression, Formula1:="1"
With .FormatConditions(1)
With .Borders(xlTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 5
End With
With .Borders(xlBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 5
End With
.Interior.ColorIndex = 20
End With
End With
With .EntireColumn
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="1"
With .FormatConditions(1)
With .Borders(xlLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 5
End With
With .Borders(xlRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 5
End With
.Interior.ColorIndex = 20
End With
End With
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="1"
.FormatConditions(1).Interior.ColorIndex = 36
End With
End Sub -
Mittu88
senior tag
válasz
m.zmrzlina #23317 üzenetére
Húú de cseles
Holnap megnézem, mert most rohannom kell. Majd írok, hogy mi lett.
-
m.zmrzlina
senior tag
válasz
Mittu88 #23314 üzenetére
Nekem azt sikerült kiötleni (na jó innen loptam :-) hogy hozzáadsz a munkafüzetedhez egy lapot amin csak egy információ van a felhasználónak, hogy "Nincs engedélyezve a makró. Zárd be a munkafüzetet és nyisd meg újra miután engedélyezted a makrókat!". A fálj bezárásakor ezen a lapon kívül minden munkalapot elrejtesz és mentesz. Ha valaki engedélyezett makróval vagy letiltott makróval de biztonságos helyről nyitja meg a fájlt akkor a Worbook.Open esemény során az összes munkalap rejtése megszűnik csak az üzenetet tartalmazóé marad meg ergó tud dolgozni a user. Ha viszont nincsen engedélyezve a makró akkor megnyílik a fájl de csak egy lap látható amin az üzenet van (hiszen úgy mentetted el a fájlt hogy az összes többi rejtett).
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim sh As Worksheet
For Each sh In Worksheets
sh.Visible = xlSheetVisible
Next
For Each sh In Worksheets
If sh.Name <> "figyelem" Then sh.Visible = xlSheetVeryHidden
Next
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True
End Sub
Private Sub Workbook_Open()
Dim sh As Worksheet
For Each sh In Worksheets
sh.Visible = xlSheetVisible
Next
For Each sh In Worksheets
If sh.Name <> "figyelem" Then
sh.Visible = xlSheetVisible
Else
sh.Visible = xlSheetVeryHidden
End If
Next
End SubJa és nem Insert>New>Module-ba másolod a makrót hanem a Thisworkbook>Worksheet-ba
-
Mittu88
senior tag
Az megoldható valahogy, hogy CSAK akkor tudja az adott xlsm fájlt megnyitni a felhasználó, ha a makrók futtatása engedélyezve van a gépén? (vagy megbízható helyek között van az a mappa, amelyikben van, vagy alapból engedélyezve vannak a makrók)
-
littleNorbi
aktív tag
válasz
m.zmrzlina #23311 üzenetére
Így is gyalog kellett kijavítanom, de köszönöm, mert hosszútávra szuper megoldás.
-
slashing
senior tag
A kepleteknel is mukodik a keres es csere funkcio, nem muszaj vegigzongorazni egyesevel vagy macroval...
-
m.zmrzlina
senior tag
válasz
littleNorbi #23309 üzenetére
Én úgy írnám a fv-t, hogy pl: =FKERES(D2;A:B;2;0) ahelyett, hogy =FKERES(D2;A1:B400;2;0).
Persze csak ha nem zavar be 400. sor után lévő tartomány, (ha van ott egyáltalán valami)
-
lappy
őstag
válasz
littleNorbi #23309 üzenetére
Szia!
Hát ha jól van megírva a függvényed és persze nem olyan sok munkalap van akkor inkább manuálisan old meg. Másik módja a macro, de szerintem az nem túl egyszerű -
littleNorbi
aktív tag
Sziasztok! Van egy excel fájl, amiben több sheet található. Minden sheeten használtam egy oszlopban egy FKERES függvényt. A FKERES tartományát meg lehet valahogy egyszerűen változtatni, vagy csak gyalog? Tehát mindenhol csak pl. a 400. sorig van a tartománya, és nekem kellene hogy a 600.-ig legyen az új tartomány.
-
Delila_1
veterán
válasz
WildBoarTeam #23307 üzenetére
Egyszerűbb, ha a keresésnél nem a Következő, hanem a Listába mind gombot nyomod meg. A megjelenő felsorolásban egyenként nézheted meg a találatokat.
-
WildBoarTeam
senior tag
Sziasztok!
Szükségem lenne egy "rövid" makróra, ami csak annyit csinál, hogy azt a cellát, amin állok, azt valamilyen színnel kiemeli.
Az is jó megoldás, hogy ha használom az excel keresőjét, akkor a keresési eredmények között ugrálva emelje ki a találatot színnel (természetesen, ha továbblépek, akkor a formázás álljon vissza alapra).Vagy ezt makró nélkül is meg lehet oldani valami beállítás módosítással?
Előre is köszönöm.
UI.: Az excel tábla kb 2ezer soros és kb 18 oszlopból áll.
-
Pityke78
őstag
Sziasztok!
Hogyan tudom kiszámoltatni két cellának a különbségét percben, amik időformátumban vannak megadva óra:perc-ben.
pl:
A1: 10:10
B1: 12:30
C1: 140 (percet adjon eredményül)Köszönöm
Új hozzászólás Aktív témák
Hirdetés
- Samsung Galaxy S21 FE 5G - utóirat
- Milyen billentyűzetet vegyek?
- Redmi Note 14 Pro+ 5G - a tizenhármas átka
- Dolce Gusto
- Milyen légkondit a lakásba?
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- Hivatalosnak tűnő képeken a Galaxy S25 FE
- Azonnali fotós kérdések órája
- Nők, nőügyek (18+)
- Vezetékes FEJhallgatók
- További aktív témák...
- Kaspersky, BitDefender, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- Játékkulcsok a legjobb áron: Steam
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, Most kedvező áron!
- Bomba ár! Dell Latitude 7320 - i5-11GEN I 8GB I 512SSD I HDMI I 13,3" FHD I Cam I W11 I Garancia!
- ÁRGARANCIA!Épített KomPhone i5 14400F 32/64GB RAM RX 9060 XT 16GB GAMER PC termékbeszámítással
- Azonnali készpénzes GAMER / üzleti notebook felvásárlás személyesen / csomagküldéssel korrekt áron
- Lenovo Thinkcentre M920t Tower/ M720s SFF / i5-8-9. gen/ WIN10-11/számla, garancia
- LG 27GR95UM - 27" MiniLED - UHD 4K - 160Hz 1ms - NVIDIA G-Sync - FreeSync Premium PRO - HDR 1000
Állásajánlatok
Cég: FOTC
Város: Budapest