-
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
-
-
nordican
tag
válasz
nordican
#33984
üzenetére
Hú, úgy tűnik, működik!
Ez k...a jó!
Ide raktam be:Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Union(Range("C65"), Range("C69"))) Is Nothing Then
Rows(Target.Row).AutoFit
If Not Intersect(Target, Range("C65")) Is Nothing Then
With Sheets("Munka1").Range("B14")
.Value = Target.Value
Sheets("Munka2").Range("B14").MergeArea.UnMerge
Sheets("Munka2").Range("B14").Rows.AutoFit
Sheets("Munka2").Range("B14:E14").Merge
End With
End If
If Not Intersect(Target, Range("C69")) Is Nothing Then
With Sheets("ajánlat1").Range("B26")
.Value = Target.Value
.Rows.AutoFit
End With
End If
End If
End Sub -
Fferi50
Topikgazda
válasz
nordican
#33982
üzenetére
Szia!
Nyilván nem ezen fogunk összeveszni
A munkalap tulajdonságait Te ismered, mi csak javaslatokat tudunk adni.
Egyébként az összevonást is meg lehet szüntetni és a sormagasság állítása után vissza lehet állítani.Range("B2").MergeArea.UnMerge
Range("B2").Rows.AutoFit
Range("B2:C2").MergeÜdv.
-
-
Fferi50
Topikgazda
válasz
nordican
#33971
üzenetére
Szia!
Íme:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Union(Range("A1"), Range("A3"))) Is Nothing Then
Rows(Target.Row).AutoFit
If Not Intersect(Target, Range("A1")) Is Nothing Then
With Sheets("Munka2").Range("B2")
.Value = Target.Value
.Rows.AutoFit
End With
End if
If Not Intersect(Target, Range("A3")) Is Nothing Then
With Sheets("Munka2").Range("B4")
.Value = Target.Value
.Rows.AutoFit
End With
End If
End If
End SubÜdv.
-
Delila_1
veterán
válasz
nordican
#33971
üzenetére
Csak most nézem a feladatodat, de már az elején zavaros. Biztosan ezért nem kapsz érdemi választ.
"...az A1 és az A3 cellában készül két különböző (többtételes) lista..."Egy cellában nem lehet lista, csak egyetlen adat.
Tegyél fel egy füzetet, amiben a lapjaid neve az igazi. Írj valamilyen adatokat, ahova kell, és írd bele azt is, hogy mit akarsz ezekből kihozni.
-
Fferi50
Topikgazda
válasz
nordican
#33959
üzenetére
Szia!
Ez soha nem fog a makrók között megjelenni - és nem is kell neki - mivel eseménykezelés paraméterekkel.
Amit írtál, az minden esetben az első sor magasságát fogja automatikusan állítani, amikor a munkalapon változtattál valamit - de ez nyilván felesleges minden alkalommal. Ezért írtam, hogy a Change eseményben kell megvizsgálni, hogy szükséges-e a sormagasság állítása (csak nem tűnt ki a hozzászólásból rendesen):
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Union(Range("A1"), Range("K1"))) Is Nothing Then Makró1
'ide sorold fel az Union függvényen belül azokat a cellákat, ahol listád lesz.
End SubA meghívott makróba pedig beleteszed az összes olyan munkalapot, ahol változtatni kell:
Sub Makró1()
Sheets("Munka1").Range("A1").Rows.AutoFit
Sheets("Munka2").Range("A1").Rows.AutoFit
Sheets("Munka1").Range("K1").Rows.AutoFit
Sheets("Munka2").Range("K1").Rows.AutoFit
'és így tovább, minden lapra és cellára
End SubTehát két részből áll a folyamat. Az első rész a Change eseményben van, ami megvizsgálja, kell-e állítani sormagasságot, ha igen, meghívja a második részt (makró1), ami ténylegesen elvégzi az állításokat.
Üdv.
-
poffsoft
veterán
válasz
nordican
#33959
üzenetére
nem is .
ez egy lap eseményhez rendelt makró.
vagyis, minden alkalommal, ha a munkalapon megváltoztatod valamelyik cella tartalmát, automatikusan lefut.
Mondjuk én a target.rows.autofitet használnám, vagyis annak a sornak a magasságát állítani, amelyikben éppen szerkesztettél.
ha ugyanezen a címen kell igazítanod a másik lapon, akkor még beszúrnám:
sheets("Munka2").range(target.address).rows.autofit -
Fferi50
Topikgazda
válasz
nordican
#33944
üzenetére
Szia!
Magától nem növekszik a sormagasság
, akkor sem, ha egyszer beállítottad ezt a tulajdonságot. Sajnos minden alkalommal újra kell állítani, amikor adat kerül bele. Erre csinálhatsz egy makrót (rögzítés), amit betehetsz a főlapod változás eseményébe (worksheet_change). Ezáltal lefuthat, valahányszor módosítod a celládat.
Pl.Range("A1").Rows.AutoFit
Ha eléteszed a munkalapot, akkor az adott munkalapon hajtja végre:Sheets(1).Range("A1").Rows.AutoFit
Az esemény vizsgálatnál meg kell nézned, hogy valóban egy listás cellát változtattál-e meg, ennek egyik módja lehet:
IPrivate Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Union(Range("A1"), Range("K1"))) Is Nothing Then Makró1
'ide sorold fel az Union függvényen belül azokat a cellákat, ahol listád lesz.
End SubSub Makró1()
Sheets("Munka1").Range("A1").Rows.AutoFit
Sheets("Munka2").Range("A1").Rows.AutoFit
'és így tovább, minden lapra és cellára
End SubÜdv.
-
poffsoft
veterán
válasz
nordican
#33903
üzenetére
Liste=Activesheet.NameGondolom, le lehet kérdezni a kijelölt sheetek neveit is.
Ha csak az aktivesheet kell, akkor pl:
Sub Makro1()
Dim rng As Range
Dim c As Range
Set rng = Range("A1:F100")
For Each c In rng
With c.Interior
If .ColorIndex = 6 Then
.ColorIndex = None
.Pattern = xlNone
End If
End With
Next c
End Sub -
poffsoft
veterán
válasz
nordican
#33891
üzenetére
Én ezt barkácsoltam:
Sub Makro1()
Dim list() As String
Dim liste As String
Dim i As Integer
Dim c As Range
Dim rng As Range
liste = "Munka1,Munka2,Munka3" 'a munkalapok nevei, ahol keresni kell, vesszővel elválasztva
list() = Split(liste, ",")
For i = 0 To UBound(list)
Set rng = Sheets(list(i)).Range("A1:F100")
For Each c In rng
With c.Interior
If .ColorIndex = 6 Then
.ColorIndex = None
.Pattern = xlNone
End If
End With
Next c
Next i
End Sub -
poffsoft
veterán
válasz
nordican
#33891
üzenetére
Egy bizonyos lapon lévő rangera a hivatkozás:
Sheets(1).Range("A1", "F100").Select
vagySheets("Munka1").Range("A1", "F100").Selecta sárga cellák szűrése (feltéve, hogy a colorindex=6 sárgáról van szó):
With Selection.Interior
If .ColorIndex = 5 Then
.ColorIndex = None
.Pattern = xlNone
End If
End With -
nordican
tag
válasz
nordican
#33885
üzenetére
Összebarkácsoltam egy ilyet, de ez még nem tökéletes, mert minden hátteret eltüntet, én meg csak a sárga hátteret szeretném kiszedni, és a Range-hez is az adott munkalapot kellene beírni.
Sub Makro1()
Range("A1", "F100").Select
With Selection.Interior
.ColorIndex = None
.Pattern = xlNone
End With
End Sub -
Fferi50
Topikgazda
válasz
nordican
#33824
üzenetére
Szia!
Ilyet csak userformon elhelyezett DropDown vezérlővel lehet csinálni, ott be lehet állítani, hogy begépelésnek megfelelően folyamatosan szűkítse a választékot.
De ez már még mélyebb VBA ismereteket kíván, mivel az így kapott értékeket el kell helyezni a megfelelő munkalapra stb.
Üdv.
-
nordican
tag
válasz
nordican
#33823
üzenetére
De megint eszembe jutott valami:

Az automatikus kitöltés csak egy munkalapon belül működik? (arra gondolok, hogyha elkezdek gépelni valamit egy oszlopban, és az már korábban előfordult, akkor az Excel felajánlja a kiegészítést). Na, ez tök jó funkció lenne Munkalapok között vagy akár másik fájlban lévő Munkalapok között. Tudom, lehetne legördülő listát is csinálni, de ha van 100 tétel, nem olyan jó móka, kiválasztani egy adott tételt egy hosszú listáról, jobb lenne az automatikus kiegészítés. Ez sem létszükséglet, de ha van rá egyszerű megoldás, érdekelne. -
poffsoft
veterán
válasz
nordican
#33812
üzenetére
1) van egy modulod (Module1) a public function name()-vel
2) a munkalapodon (Munka1) kell (VBA szerkesztőben duplaklikk) pl. az activate eseményhez rendelned az értékadást:Private Sub Worksheet_Activate()
ActiveSheet.PageSetup.CenterHeader = Module1.name()
End SubA linkre tudtommal nincsen, én a szöveg utáni cellába szoktam egy [Link] szöveg mögé szúrni a linket.
-
Fferi50
Topikgazda
válasz
nordican
#33804
üzenetére
Szia!
Nem az Excelben, hanem a Visual Basic Application helpben (VBA) van, ami a makró nyelve.
A PageSetup a Worksheet egy "tulajdonsága" ami objektumként használható, "rajta vannak" az oldalbeállítás különböző lehetőségei.A VBA nézetben F2 funkcióbillentyűvel hívhatod elő az Object Browsert:

Ha itt a Help (sárga kérdőjel) -re kattintasz, miközben kiválasztottad a Pagesetup objektumot, akkor előjön az internetről a hozzá kapcsolódó help.
Üdv.
-
Fferi50
Topikgazda
válasz
nordican
#33799
üzenetére
Szia!
Az élőfejbe képletet nem tudsz írni, csak a feldobott állandókat. Erre írtam, hogy ott szerintem maradhatna az elérési út is a fájlnévvel vagy anélkül.
De, ha már makrózol és ezek szerint makrózol, akkor a Worksheet.PageSetup objektum az ahova be tudod írni amit szeretnél, Left/Right/CenterHeader ill.Footer tulajdonságoknak adhatod meg az értékét.
Ezt megteheted a nyomtatás meghívása előtt, pl. az előző hsz-ban levő függvényt felhasználva:ActiveSheet.PageSetup.CenterHeader=neve()Üdv.
-
Fferi50
Topikgazda
válasz
nordican
#33787
üzenetére
Szia!
Az előttem szólóhoz csatlakozom:
Létrehozol egy nevet a következők szerint: NEVE, a hivatkozásba beírod =CELLA("filenév")
Ezután alábbi tömbképlettel megkapod a mappa nevét:=HELYETTE(KÖZÉP(NEVE;NAGY((KÖZÉP(NEVE;SOR(A1:A50);1)="\")*SOR(A1:A50);2)+1;50);KÖZÉP(NEVE;MAX((KÖZÉP(NEVE;SOR(A1:A50);1)="\")*SOR(A1:A50));50);"")
Ha nem szeretnél nevet létrehozni, akkor a NEVE helyére a képletbe mindenhol beírod a CELLA("Filenév") szöveget.
A tömbképletet Ctrl+Shift+ Enter billentyűkombóval viheted be.
Az A1:A50 tartomány azért szükséges, hogy végig tudjon menni a képlet az egész néven, teljesen mindegy, hogy mi a cellák értéke, hiszen csak a sorszám kell nekünk. Ha hosszabbak az elérési utaid, akkor megnövelheted a tartományt.A képlet első része "eldobja" a mappa neve előtti részt, a helyette függvény pedig eltünteti a mappa név utáni részt.
Az élőfej/élőlábban pedig szerintem maradhat az elérési út.
Makróval a Curdir() adja vissza elérési utat, abból a mappa egy ügyes ciklussal megkapható.
Üdv.
-
Fferi50
Topikgazda
-
poffsoft
veterán
válasz
nordican
#33776
üzenetére
munkalapokról beszélsz, nem munkafüzetekről, ugye?
Jó a képleted (&=összefűz), csak még stringként be kell szúrnod a többit:
=Munkafüzet1!A1&", "&Munkafüzet2!B3&"."Ha speciális karaktert (pl. sortörés) is akarsz bele:
=Munkafüzet1!A1&", "&KARAKTER(10)&Munkafüzet2!B3&"." -
lappy
őstag
válasz
nordican
#33697
üzenetére
én úgy csináltam hogy egy pár cellának kivettem a zárolást (a cellaformátum menüből éred el)
majd kejelöltem egy cellatartományt amiben benne van ez a pár cella
ezután feltételes formázás és képlettel formázás menü(az utolsó) beírtam a képletet, kiválasztottam a színt
és ok
és tényleg kijelölte
Új hozzászólás Aktív témák
- Bomba ár! Lenovo ThinkPad T460 - i5-6GEN I 8GB I 256GB SSD I 14" FHD I Cam I W10 I Garancia!
- 144 - Lenovo LOQ (15ARP9) - AMD Ryzen 7 7435HS, RTX 4060 (ELKELT)
- LG 49SE3D-B 49" FullHD LED Monitor
- QNAP TS-870U-RP 8 lemezes Rack NAS
- Keresek Zebra TC20 TC21 vagy valamilyen hasonló kaliberű 1D és 2D vonalkódok olvasására alkalmas pda
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő

Ez k...a jó!
A munkalap tulajdonságait Te ismered, mi csak javaslatokat tudunk adni.
, akkor sem, ha egyszer beállítottad ezt a tulajdonságot. Sajnos minden alkalommal újra kell állítani, amikor adat kerül bele. Erre csinálhatsz egy makrót (rögzítés), amit betehetsz a főlapod változás eseményébe (worksheet_change). Ezáltal lefuthat, valahányszor módosítod a celládat.



Fferi50

