- Rengeteg áram kell az adatközpontoknak, erre válasz a geotermikus energia
- OpenWRT topic
- Betelik a pohár: nagy igény lenne a gyorshajtás-ellenes technológiára
- Microsoft Office és Office 365 topic
- Az AI megmondja, hogy van-e fájdalma a macskának
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- QNAP hálózati adattárolók (NAS)
- Felhő alapú adattárolás (Dropbox, stb.)
- Aliexpress tapasztalatok
- AI-alapú, mobilos lopásgátlót tesztel a Google
-
IT café
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
-
KovacsUr
addikt
Jobb klikk a worksheet fülön, Kód megjelenítése
aztán ezt beilleszt
Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Value <> '''' And (Target.Column = 1) Or (Target.Column = 2) Then
Cells(Target.Row, 3).Activate
ActiveCell.Value = Date
ActiveCell.NumberFormat = ''yyyy/mm/dd''
End If
End SubSo it goes… We stand alone by standing stones and turn them into circles.
-
KovacsUr
addikt
-
matekmatika
tag
Hát, kb egy órámba telt, legalább. És szerintem ha nem nagyon értesz hozzá akkor legalább ennyi idő lenne elmagyarázni is a parancsgomb alá írt kódot. A G oszlopban úgy tudod elérni hogy végig minden celládhoz legyen listás választási lehetőséged, hogy rákattintasz az első 30 cella valamelyikére, másolás, kijelölöd végig ameddig akarod hogy legyen, és beillesztés.
A parancsgombot úgy tudod átrakni ha a vezérlők eszköztárát kijelölöd, és a tervező mód ikonját bekapcsolod. Ekkor oda rakod a parancsgombot, meg úgy méretezed ahogy akarod, az alá írt kódot pedig rajta egy jobb klikk után (vagy a kód megjelenítése ikonra kattintva) nézheted meg. Hagy ne részletezzem most hogy mi micsoda benne. Meleg is van most hozzá nagyon, dolgozom is, meg nyűgös is vagyok . De számtalan helyet találsz az interneten ahol ezeknek utána nézhetsz. Persze ha konkrét kérdésed van, akkor kérdezz nyugodtan. -
Delila_1
Topikgazda
A lapfülön jobb klikk, Kód megjelenítése. A megjelenő Visual Basic szerkesztőn a jobb oldalon lévő nagy üres lapra bemásolod az alábbi makrót:
Sub Worksheet_Change(ByVal Target As Excel.Range)
If (Target.Column = 1) Then
Cells(Target.Row, 5) = Cells(Target.Row, 2) + Cells(Target.Row, 3) _
+ Cells(Target.Row, 4)
End If
End SubEz, ha az A oszlopba írsz valamit, az E oszlopba beírja az azonos sorban lévő B+C+D értéket.
Ha nem az E-be kell, a Cells(Target.Row,5)-nél írd át az 5-öt annyira, amennyi a kívánt oszlop sorszáma az angol ABC-ben (F-nél 6, G-nél 7, T-nél 20, stb).
Amennyiben másik lapnál is kell ez a funkció, ugyenezt a makrót a másik lap kódlapjára is másold be.[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz FehérHolló #3577 üzenetére
Sub Worksheet_Change(ByVal Target As Excel.Range)
If (Target.Column > 3 And Target.Column < 8 And Target.Row < 11) Then
Range("A1").Select
ActiveCell.FormulaR1C1 = "= TODAY()"
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone
Application.CutCopyMode = False
End If
End SubEz a kis makró a munkalaphoz rendelve (lapfülön jobb klikk, kód megjelenítése, VBE-ben a jobb oldalon kapott üres lapra másolva) azt csinálja, hogy ha a D1:G10 tartományban módosul az adat, az A1-be beírja az aktuális dátumot a MA() függvénnyel, és rögtön át is írja a függvényt az értékére.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz takyka77 #3822 üzenetére
Sub Worksheet_Change(ByVal Target As Excel.Range)
If (Target.Column = 2 And Target.Row = 3 And Target.Value > 100) _
Then MsgBox "Elérte a maximumot"
End SubEz a makró a B3 cella (Column 2, Row 3) értékét figyeli. Ha meghaladta a 100-at, akkor üzenetdobozban figyelmeztet.
A makrót a kérdéses laphoz rendeld hozzá. Lapfülön jobb klikk, kód megjelenítése. A VB szerkesztő jobb oldalán kapott üres lapra másold át, és értelemszerűen végezd el a módosításokat.
Ehelyett a feltételes formázással is ki lehet emelni a cella értékét.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
A lapfülön jobb klikk, Kód megjelenítése. Bejutottál a VB szerkesztőbe. Jobb oldalon kaptál 1 üres lapot, oda másold be a makrót.
Az I, vagy T betűt a Q oszlopba írd. Jó az i és a t is.Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 17 And (Target.Value = "I" Or Target.Value = "i") Then
Cells(Target.Row, 16) = Cells(Target.Row, 6)
Cells(Target.Row, Target.Column) = ""
End If
If Target.Column = 17 And (Target.Value = "T" Or Target.Value = "t") Then _
Cells(Target.Row, 17) = Cells(Target.Row + 1, 6)
End SubHa lenne egy külön oszlop, amibe beviszed a két betűd valamelyikét, akkor az ssrobi által említett HA függvénnyel simán meg lehetne oldani.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
félisten
Hali!
Nos ha jól veszem ki szavaidból, akkor adott egy angol OS + angol Office(ami hibátlanul müködik) ill egy magyar OS + angol Office(amiben meg nem látod a KÓD MEGJELENÍTÉSE menűt?
Ha így van, akkor a hibát okozhatja a nyelvi eltérés. [link]
Ilyennel még nem találkoztam, da hasonlóval igen, amikor angol x64 XP-m volt, erre raktam fel a magyar 2003 Office-t, nekem az Outlokkban a fájlmenü IMPORTÁLÁS-EXPORTÁLÁS menűi váltak elérhetettlenné. Talán próbáld meg az OS területi beállításait angolra állítani vagy (ha lehetséges) a Office csomag nyelvi beállításait magyarra rakni.Esetleg(bár nem írtad hogy 2000, 2003, 2007 verziójú a csomag) próbáld alaphelyzetre állítani az eszköztárat, hátha csak ezért nem látszik...
(2003 excelben ESZKÖZÖK/TESTRESZABÁS/ALAPHELYZET)Remélem segít valamit, amit írtam.
Fire.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Delila_1
Topikgazda
Az első kérdésed megoldásához az alábbi makrót másold be a laphoz (lapfülön jobb klikk, a gyorsmenüből a "Kód megjelenítése" menüpontot választva a VBA szerkesztőjében jobb oldalon kapsz egy üres lapot, oda):
Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column > 1 Then
Cells(Target.Row, 1).Select
Selection.Formula = "=TODAY()"
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End If
Application.CutCopyMode = False
End SubA második kérdéshez nem írtad, hogy ugyanazon a lapon akarod-e alkalmazni, ahol az előbbit. Én másik laphoz írtam hozzá makrót, amit ugyanúgy másolj be a másik lap kódlapjához, mint az előzőt. A makró az F oszlop változását figyeli (IFoszlop=6), és két értékre színezi az egész aktuális sort (target.value="alma" –> piros karakter, target.value="körte" –> kék karakter). Az oszlopba érdemes a két választható választ előre megadni az Adatok/Érvényesítés/Beállítások fül/Lista, a Forráshoz alma; körte.
Sub Worksheet_Change(ByVal Target As Excel.Range)
sor = Target.Row: oszlop = Target.Column
If oszlop = 6 And Target.Value = "alma" Then
Rows(Target.Row & ":" & Target.Row).Select
Selection.Font.ColorIndex = 3
End If
If oszlop = 6 And Target.Value = "körte" Then
Rows(Target.Row & ":" & Target.Row).Select
Selection.Font.ColorIndex = 5
End If
Cells(sor, oszlop).Select
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
A lapfülön jobb klikk, Kód megjelenítése.
A kapott üres lapra másold be ezt:Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then Cells(Target.Row, 1).Font.Bold = True
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz VANESSZA1 #4585 üzenetére
Nem pontos a kérdésed. Ugyanúgy vonatkozhat egy kész táblázatra, mint egy olyanra, amit most viszel be. Az utóbbihoz írtam egy makrót, ami azt a sort, ahova nullát írsz, azonnal el is rejti, függetlenül attól, hogy melyik oszlopba viszed be az értéket.
Bemásolás: a lapfülön jobb klikk, Kód megjelenítése. A VB szerkesztő jobb oldalán kapott üres lapra másold be.Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = 0 Then
Rows(Target.Row & ":" & Target.Row).Select
Selection.EntireRow.Hidden = True
Range("A" & Target.Row + 1).Select
End If
End SubKész táblázathoz más makró kell, vagy amit Lehdog ajánlott.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
ent
őstag
válasz Delila_1 #4732 üzenetére
Delila, először is hatalmas köszönet, hogy foglalkozól eme témával, sok haszna van belőled piciny közösségünknek!
Másodszor megkérlek, hogy fejtsd ki bővebben. Azt tudom, hogy ha lapfülre kattintok, kijön "kód megjelenítése". Ezt a kódot amit küldtél mi módon kell beillesztenem és hova?
WEBOLDAL, WEBÁRUHÁZ, ADS ►► www.redesignteam.hu ◄◄ (Profizmus és az alacsony ár találkozása!)
-
Delila_1
Topikgazda
válasz VANESSZA1 #4897 üzenetére
A makrót a laphoz rendeld: lapfülön jobb klikk, Kód megjelenítése. A kapott üres lapra másold be.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Target.Value >= Date Then MsgBox "Figyelmeztetés"
End SubItt a C (harmadik) oszlop értékeit figyeltetem, a Target.Column = 3 -nál írhatod át. Ha az egész lapot akarod figyeltetni, a Target.Column = 3 And részt hagyd el.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
Jó vicc volt, hogy az előző válaszomhoz elfelejtettem csatolni a makrót.
A tiédben az ELSE sor beteszi az üres sort az I oszlopba, vagyis ugyanott vagy vele, mint makró nélkül.A lenti makrót a lapodhoz kell rendelni: lapfülön jobb klikk, Kód megjelenítése, üres lapra bemásolás.
Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 Or Target.Column = 6 Then
sor_1 = 2
E = Range("E65536").End(xlUp).Row
F = Range("F65536").End(xlUp).Row
usor = Application.WorksheetFunction.Max(E, F)
Range(Cells(2, 9), Cells(usor, 9)).ClearContents 'előző adatok törlése
For fogyi = 2 To usor
If Cells(fogyi, 5) > 0 And Cells(fogyi, 6) > 0 Then
Cells(sor_1, 9) = Round(Cells(fogyi, 6) / (Cells(fogyi, 5) / 100), 2)
sor_1 = sor_1 + 1
End If
Next fogyi
End If
End SubGyorsan elküldöm, mert ezelőtt 4 db pillanatnyi áramszünet megsemmisítette a válaszomat.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz mahatma #5333 üzenetére
Annak a füzetnek az aktuális lapjához rendeld a lenti makrót (lapfülön jobb klikk, Kód megjelenítése, a kapott üres lapra másold be), amelyikből a másikba akarod másolni az adatokat.
Private Sub Worksheet_Change(ByVal Target As Range)
sor = Target.Row: oszl = Target.Column
e = Target.Value
Workbooks("Másik_füzet.xls").Sheets("Munka1").Cells(sor, oszl) = e
End SubA "Másik_füzet" és a "Munka1" helyett a természetesen saját elnevezéseidet használd.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz ALbeeeee #5551 üzenetére
Ezt tudtommal csak makróval lehet megoldani. Rajzolsz egy téglalapot, rajta jobb klikk, Szöveg hozzáadása. Beírod a kommentet. A szerkesztőléc bal oldalán megnézed, milyen nevet rendelt hozzá az Excel (Téglalap, szóköz, és egy sorszám).
A lapfülön jobb klikk, kód megjelenítése. Megnyílik a VB szerkesztő. A jobb oldalon kapott üres lapra bemásolod:Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$B$2" Then ActiveSheet.DrawingObjects("Téglalap 5").Visible = True
If Target.Address = "$C$2" Then ActiveSheet.DrawingObjects("Téglalap 5").Visible = False
End SubEnnek hatására, ha a B2 cellára kattintasz, megjelenik a kommented ott, és akkora méretben, ahol és ahogy rajzoltad. A C2-re kattintva eltűnik (ezt be is írhatod a szövegbe, ha más is használja a fájlt).
A makróban a Téglalap 5 helyett 2 helyen írd be a saját objektumod nevét. Akár ellipszist is rajzolhatsz, csak a makróban a megfelelő nevet add meg.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
Beteszem a kétféle megoldást. Mindegyiknél a beviteli cella az A1, a 3 másik pedig A3, A4, és A5.
Az első makró vagy a makrók közül indítható, vagy egy gombhoz rendeled. Bevitele: Alt+F11, Insert/Module, a kapott üres oldalra másold be.Sub ktsg_elosztás()
Dim sor
For sor = 3 To 5
Cells(sor, 2) = Cells(sor, 2) + Int(Cells(1) / 3)
Next
End SubA másik a bevitelt követően automatikusan hajtódik végre. Ennek a bevitele: Lapfülön jobb klikk, Kód megjelenítése, a kapott üres oldalra másold be.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sor
If Target.Address = "$A$1" Then
For sor = 3 To 5
Cells(sor, 2) = Cells(sor, 2) + Int(Target.Value / 3)
Next
End If
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
A laphoz rendeld ezt a makrót – lapfülön jobb klikk, Kód megjelenítése. A jobboldalon kapott üres lapra másold be.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$1" Then
Selection.AutoFilter Field:=1, Criteria1:=Cells(1, 3) & "*", Operator:=xlAnd
End If
End SubA $C$1 helyett annak a cellának a címét add meg, ahol a kezdő betű(ke)t akarod megadni.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
A laphoz kell rendelned a rövid kis makrót:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then Cells(2) = Date
End SubLaphoz rendelés: lapfülön jobb klikk, kód megjelenítése, a jobb oldalon kapot üres lapra másold be.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
Azt hittem, már mindenki szabadságra ment.
A képlet nem látszik, ha a cellaformázás Védelem fülén bejelölöd a Rejtett opciót, de ez csak akkor lép érvénybe, mikor a lapot védetté tetted.
A kitörölhetetlen képlet makróját a laphoz kell rendelned (lapfülön jobb klikk, Kód megjelenítése.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Target.Value = "" Then
Cells(Target.Row, Target.Column).Formula = "=A" & Target.Row & "*B" & Target.Row
End If
End SubNem ismerem a képletedet, ez a kis makró a C oszlopba írja be törlés esetén az =A1*B1 képletet, illetve minden sorban a saját sorára vonatkoztatva a szorzást. Írd meg, melyik oszlopodban milyen képletet kell újraírni törléskor.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
hopean
csendes tag
Szevasztok!
Kis segítséget kérnék:
Adott egy dokumentum, amin 1 napja dolgozom:
Jobb klikk a worksheet fülön, Kód megjelenítése, aztán ezt beilleszt:Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox "Cell " & Target.Address & " has changed."
End SubNem működik. Bármely cellát módosítom a munkalapon, dobnia kéne egy MsgBox-ot.
Ha kreálok egy teljesen új doksit, beteszem ugyanezt a kódot, ott működik gond nélkül.
Mi lehet a baja? -
Delila_1
Topikgazda
válasz motinka #7531 üzenetére
Ha már Fire megígérte, tálalom a makrót.
Tegyél autoszűrőt az A11:I11 tartományba, ahogy Fire is írta.
A lapfülön jobb klikk, Kód megjelenítése. Bejutottál a VB szerkesztőbe, a jobb oldalon kapott üres lapra másold be:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 4 And Target.Row > 2 And Target.Row < 9 Then
Range("A11").Select
Selection.AutoFilter Field:=5, Criteria1:=Cells(Target.Row, 1)
Selection.AutoFilter Field:=9, Criteria1:="="
End If
If Target.Address = "$H$1" Then
Selection.AutoFilter Field:=5
Selection.AutoFilter Field:=9
End If
End SubEzután a D3:D8 tartomány bármelyik cellájára duplán kattintva a lenti sorok közül azok látszanak, amiket kértél.
Beleírtam, hogy a H1 duplaklikkjére minden adat látsszon az alsó táblázatban. Írhatsz is valami erre utaló szöveget a H1-be.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz motinka #7601 üzenetére
Itt a makró, elég jól látszik belőle, melyik adatokat kell átírnod. A Case utasításokból az End Select sor elé akárhány újat beszúrhatsz. Ennek alapján eldöntheted, mit akarsz később a további adatokhoz idomítani, a különböző nézeteket, vagy a makrót.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim kezd As String, vég As String
If Target.Address = "$A$1" Then
Select Case Cells(1)
Case "Csaba"
kezd = "D": vég = "F": GoTo Rejt
Case "János"
kezd = "G": vég = "I": GoTo Rejt
Case "Ferenc"
kezd = "J": vég = "L": GoTo Rejt
Case "László"
kezd = "M": vég = "P": GoTo Rejt
End Select
End If
Exit Sub
Rejt:
Columns("D:O").Hidden = True
Columns(kezd & ":" & vég).Hidden = False
End SubA makrót a kérdéses laphoz kell rendelned. Lapfülön jobb klikk, Kód megjelenítése, a VB szerkesztőben jobb oldalon kapott üres lapra másold be.
Szerk.: a Columns("D:O").Hidden = True sorban a kettőspont után nem nulla van, hanem O betű, az utolsó felhasznált oszlopod betűjele.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
Kicsit sok a kérdés egyszerre.
Kezdem a közepén.Adott laphoz kód elővarázsolása: lapfülön jobb klikk, Kód megjelenítése. Vagy: Alt+F11 (VB editor), bal oldalon lapnévre klikk.
Nyomógomb
Kétféle van, az Űrlapok, vagy a Vezérlők eszközkészlete csoportból. Előcsalásuk: ikonsoron jobb klikk, a felsorolásból kiválasztod a megfelelőt.Nem írom tovább, mert nem tudom, hányas verziót használsz. A fentiek a 2003-ra vonatkoznak.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
A laphoz kell rendelned a makrót (lapfülön jobb klikk, Kód megjelenítése, a jobb oldalon kapott üres lapra másold be):
Private Sub Worksheet_Change(ByVal Target As Range)
Rows(Target.Row).Interior.ColorIndex = 4
End SubA fenti makró bármelyik cellába írt szövegnél zöldre festi a teljes sor hátterét. Ha azt akarod, hogy egy bizonyos oszlopba történt beírásra zöldítsen, akkor egy feltételhez kell rendelni a szín megadását.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then Rows(Target.Row).Interior.ColorIndex = 4
End SubEz a makró csak akkor színez, ha a B (2.) oszlopba viszel be valamilyen értéket (szöveg, szám, dátum, logikai). A Target.Column értékével add meg a a megfelelő oszlopot.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz Sickboy25 #7963 üzenetére
Na még egy, hogy biztos legyen a figyelmeztetés.
Az A1 cellát formázd félkövérre, és piros betűszínre. A laphoz rendeld a nyúlfarknyi makrót (lapfülön jobb klikk, Kód megjelenítése, a VB szerkesztőben a jobb oldalon kapott üres felületre kell bemásolni).
Private Sub Worksheet_Activate()
If Day(Date) < 11 Then
Cells(1) = 10 - Day(Date) & " nap múlva add le a jelentést"
Else
Cells(1) = ""
End If
End SubMikor a lapra lépsz, beírja, vagy 10-e után törli a hátralévő napokat.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz bnorci71 #8225 üzenetére
Tényleg elsiklottunk a régi kérdésed fölött.
A laphoz kell rendelned egy makrót -> lapfülön jobb klikk, Kód megjelenítése. A képernyő jobb oldalán kapott üres lapra másold be:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column < 28 And Target.Row >= 2 And Target.Row < 15 And _
Target.Column Mod 2 <> 0 Then
Range("A1:AI14").Sort Key1:=Range("AI2"), Order1:=xlDescending, Key2:= _
Range("AH2"), Order2:=xlDescending, Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
DataOption2:=xlSortNormal
End If
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
Itt egy másik megoldás, nem én követtem el, csak átvettem. A laphoz kell rendelni (lapfülön jobb klikk, Kód megjelenítése. Ezzel bejutottál a VB szerkesztőbe, a jobb oldalon kapott üres lapra kell bemásolni. A cellára lépve megkapod a "célkereszt"-et.
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 SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
Az X, vagy x beírása az első sorba hozza működésbe a makrót.
Lapfülön jobb klikk, Kód megjelenítése. A VB szerkesztőbe jutsz, jobb oldalra másold be a makrót. Az Interior.ColorIndex = 3 -nál a 3 (piros) helyett megadhatsz más számmal más színt.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 And UCase(Target.Value) = "X" Then _
Columns(Target.Column).Interior.ColorIndex = 3
If Target.Row = 1 And UCase(Target.Value) = "" Then _
Columns(Target.Column).Interior.ColorIndex = xlNone
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz Lackukac #8846 üzenetére
Két makró lehetővé teszi, hogy az A oszlopot bővítve, vagy szűkítve minden külön gombnyomás nélkül létrejöjjön a B oszlopban a szűrt listád.
Az elsőt a laphoz kell rendelned: lapfülön jobb klikk, Kód megjelenítése, a VB szerkesztőben (ahova most bejutottál) a jobb oldalon kapott üres lapra másold be.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Application.EnableEvents = False
Range("J1") = Range("A65000").End(xlUp).Row
Columns("B:B") = ""
Lista_Szűrő
Application.EnableEvents = True
End If
End SubA szerkesztőben maradva bal oldalon kattints a füzeted nevére. Insert menü, Module. Kapsz bal oldalon egy Module1 nevű modult, ehhez másold be jobb oldalra a második makrót.
A J1 cellába írja be a makró az A oszlop mindenkori utolsó sorát, és felhasználja a szűrésnél.
Sub Lista_Szűrő()
ActiveWorkbook.Names.Add Name:="Lista", RefersToR1C1:= _
"=OFFSET(Munka1!R1C1,0,0,Munka1!R1C10,1)"
Range("Lista").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"D1:D2"), CopyToRange:=Range("B1"), Unique:=False
End SubAz "=OFFSET(Munka1!R1C1,0,0,Munka1!R1C10,1)" sorban a félkövérrel írt munkalap nevet írd át a saját lapod nevére.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz varikahun #10024 üzenetére
A lapfülön jobb klikk, Kód megjelenítése.
Bejutottál a VB szerkesztőbe, jobb oldalon kaptál egy üres felületet, ide másold be:Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Target = "OK" Then _
Range(Cells(Target.Row, 1), Cells(Target.Row, 15)).Interior.ColorIndex = 6
If Target.Column = 16 And Target = "Worn" Then _
Range(Cells(Target.Row, 1), Cells(Target.Row, 15)).Interior.ColorIndex = 3
End SubEz a C oszlopban megadott OK-ra sárga hátteret ad, a P-be beírt Worn-re pirosat.
A színeket a makróban a 6, ill. a 3 módosításával tudod változtatni.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz motinka #10390 üzenetére
A kérdéses laphoz rendelted a makrót?
Lapfülön jobb klikk, Kód megjelenítése. Bejutottál a VB szerkesztőbe, a jobb oldalon kapott üres területre másold be a makrót.Ha nem megy, küldd el a fájlt.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz gigi183 #10474 üzenetére
Az Nts oszloptól balra lévő hármat fixen írod be, vagy valami képlet adja az értéküket?
Ha fixen, az alábbi egyszerű kis makró megoldja a lenullázást.A makrót ahhoz a laphoz kell rendelned, amelyiken ezt a műveletet végre akarod hajtani. Lapfülön jobb klikk, Kód megjelenítése. Bejutottál a VB szerkesztőbe, a jobb oldalon kapott üres lapra kell bemásolnod.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 5 And Target = 0 Then
Dim sor%, oszlop%
sor% = Target.Row: oszlop% = Target.Column
Range(Cells(sor, oszlop - 2), Cells(sor, oszlop - 1)) = ""
End If
Application.EnableEvents = True
End SubA csatolt képen nem látszik, milyen betűjelű oszlopban van az Nts. A makróban úgy vettem, hogy az E (ötödik) oszlop tartalmazza. Bemásolás után az If Target.Column = 5 And Target = 0 Then sorban írd át az 5-öt a megfelelő értékre.
A füzetedet másként, makróbarátként kell mentened, a kiterjesztése meg fog változni xlsm-re. Az Excelben is módosítanod kell a biztonsági beállításokat, ha eddig nem volt makrót tartalmazó füzeted.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
m.zmrzlina
senior tag
válasz pitman #11229 üzenetére
A kérdésed első részét légy szíves illusztráld képpel és a kérdéses fv-nyel mert így az az érzésem, hogy nagyon messziről fogunk nekiindulni.
A változtatott cella sorát a Target.Row-val az oszlopát a Target.Column-nal tudod lekérdezni.
Pl:Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox "A(z) " & Target.Row & ". sor és a(z) " & Target.Column & ". oszlop" & Chr(10) & " metszéspontjában lévő cella módosult!"
End SubArra figyelj, hogy ezt nem új modulba kell másolni, hanem ahhoz a munkalaphoz kell rendelni amin a változást akarod figyelni. Jobbkatt a munkalap fülön majd Kód megjelenítése opció.
Biztos van más módszer is, én így szoktam csinálni.
-
m.zmrzlina
senior tag
Van rá igény, de lehet a 2-es munkalapon is a dolgozók neve.
Az nem gond, ha másik munkalapon van a név mert az érvényesítésnél úgy láttam nevet adtál a tartománynak és úgy használtad. Használd a #11367-ben lévő változatot az kezeli azt a problémát, hogy csak a B3:C18 tartomány változásainál lép működésbe a makró azon kívül nem ellenőrzi az adatbevitelt.
Viszont létrehoztam egy makrót és beírtam amit javasoltál, de továbbra is enged két azonost kiválasztani.
Szerintem az lehet a gond, hogy nem a munkalaphoz rendelted a makrót. Ne azt csináld, hogy Insert>Module és oda másolod a makrót, hanem jobkatt a munkalapfülön ott Kód megjelenítése opció. Itt van leírva néhány hsz-ban, hogy hogyan kell csinálni. (köszi Delila_1 )
Illetve arra van tipped, hogyan lehetne megcsinálni, hogy, ha a következő napoknál is működjön a dolog?
A következő napok adatai hol vannak elhelyezve?
-
m.zmrzlina
senior tag
válasz jani-wan #12346 üzenetére
Ez egy elég buta kód, de kiindulásnak jó lesz.
Private Sub Worksheet_Change(ByVal Target As Range)
For i = 1 To 20
If Cells(1, i).Value <> "igen" Then Sheets("Munka1").Columns(i).EntireColumn.Hidden = True Else Sheets("Munka1").Columns(i).EntireColumn.Hidden = False
Next
For j = 1 To 20
If Cells(i, 1).Value <> "igen" Then Sheets("Munka1").Rows(i).EntireRow.Hidden = True Else Sheets("Munka1").Rows(i).EntireRow.Hidden = False
Next
End SubEzt a kódot viszont a másik munkalaphoz kell rendelni (amelyiken beállítod hogy mely oszlopok érdekelnek az elsőn) úgy ahogy az előbb nem jött össze duplakattal, vagy lent a munkalap fülön jobkatt majd kód megjelenítése.
Azt feltételezi, hogy az első oszlopban és az első sorban (A1, A2, A3..... illetve A1, B1, C1...)cellákba írt "igen" szóval állítod be, hogy melyik oszlopra és melyik sorra van szükséged a másik munkalapon (az én esetemben a neve Munka1).
Ha bármelyik cellát átírod az első sorban vagy oszlopban "igen"-re (vagy kitörlöd a benne lévő "igen"-t) akkor lefut a kód és a másik munkalapon csak az "igen"-es sorok és oszlopok megfelelői fognak látszani. Ha nem "igen"-re írod át akkor is lefut csak nem észlelsz semmi változást.Na ez most jó bonyolult de kérdezz bátran ha valami nem világos!
Mostani formájában 20 oszlopot és 20 sort tud kezelni de ez ezerféle módon variálható.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz jani-wan #12360 üzenetére
Bocs nem voltam egyértelmű, és összekeverted a két dolgot.
Tehát ha jól értem van (legalább) két munkalapod. Az egyik amin az adatokat akarod ellenőrizni a másik amin beállítod, hogy mely oszlopokra van szükséged.
Van még a következő kód (most csak erre lesz szükséged semmi másra):
Private Sub Worksheet_Change(ByVal Target As Range)
For i = 1 To 60
If Cells(2, i).Value <> "igen" Then Sheets("Munka1").Columns(i).EntireColumn.Hidden = True Else Sheets("Munka1").Columns(i).EntireColumn.Hidden = False
Next
End SubEzt a kódot a beállító munkalapodhoz rendeled úgy, hogy a lapfülön jobbkatt majd Kód megjelenítése opciót választod. Az így kapott VBA mezőbe bemásolod a kódot úgy, hogy a Munka1 munkalapneveket átírod a saját munkalapod nevére. Nem amelyik fülén kattintottál az előbb, hanem azéra amin az adatokat fogod ellenőrizni.
Ebbe a munkafüzetbe semmi más kód nem kell!
[ Szerkesztve ]
-
dancers
csendes tag
válasz Delila_1 #12520 üzenetére
Szia!
Ne haragudj a zavarásért, már jó pár megoldást adtál nekem a pcforumon .
Múltkor kérdeztem egyet,
dancers kérdése privát | 2012.01.06. 10:46 | válasz
Sziasztok!Azt szeretném excelbe, hogy ha A1 cella értéke 1 akkor jelenjen meg egy kép, ha a cella értéke 2 akkor jelenjen meg egy másik kép. köszönöm
Delila megoldása (50 pont) előzmény | privát | 2012.01.06. 12:51 | válasz
A laphoz kell rendelned ezt a rövid makrót: lapfülön jobb klikk, kód megjelenítése, a jobb oldalon kapott üres lapra másold be.Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
If Target = 1 Then
ActiveSheet.Shapes("Picture 1").Visible = True
ActiveSheet.Shapes("Picture 2").Visible = False
End If
If Target = 2 Then
ActiveSheet.Shapes("Picture 1").Visible = False
ActiveSheet.Shapes("Picture 2").Visible = True
End If
End If
End SubA "Picture 1" és "Picture 2" nevében a számot írd át a saját képeid sorszámára.
dancers hozzászólása Delila (12:51) részére előzmény | privát | 2012.01.06. 13:12 | válasz
Ne haragudj, hogy ilyen értetlen vagyok, de hogyan kell a képeimnek sorszámot adni?
köszönöm a segítségetDelila hozzászólása dancers (13:12) részére előzmény | privát | 2012.01.06. 13:16 | válasz
Mikor beviszed a képet, a szerkesztőléc bal oldalán megjelenik a neve, sorszámmal együtt, pl. "Kép 1".Az az igazság, hogy nem tudok programozni, és akárhogy is próbálkoztam, nem sikerült megcsinálnom.Beillesztettem amit írtál, de nem tudom a képeket hogyan kell hozzá kapcsolni.Kérlek segíts, ha van egy kis időd, mert amit kaptam feladatot excelben, abból már csak ez hiányzik.
köszönöm szépen
-
Delila_1
Topikgazda
válasz Ripitxx #12763 üzenetére
Valószínű, hogy nem a laphoz rendelted a makrót.
Lapfülön jobb klikk, kód megjelenítése. Ezzel bejutottál a VB szerkesztőbe. A jobb oldali üres lapra másold be a makrót.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
félisten
válasz Gabriel_86 #12941 üzenetére
Ja és még annyit, hogy ezt eseményhez is rendelheted, azaz nem kell külön gomb, hogy lefusson a makró.
Nyomsz egy jobb egeret a Chart-ot tartalmazó lapfülön(ami az esetedben Munka1 nevű) , majd Kód megjelenítése és jobb oldalra meg bemásolod ezt
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then Lekerekítetttéglalap_Kattintás
End Sub[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Delila_1
Topikgazda
2007-esben próbáltam ki.
Fejlesztőeszközök | Vezérlők | Beszúrás | ActiveX-vezérlők. Rákattintasz a jobb alsó sarokban lévő További vezérlők ikonra, mire kapsz róluk egy felsorolást. Ezek közül a Naptár vezérlőelem kell neked. A kapott szálkereszttel négyszöget rajzolsz. Jobb klikkre kapsz egy tulajdonságok ablakot, ahol mindenfélét formázhatsz rajta.
A menüszalagon kikapcsolod a Tervező módot.A lapfülön jobb klikk, Kód megjelenítése. A VB szerkesztőbe jutottál, itt a jobb oldali üres lapra másold be a makrót.
Két sort írok bele, amik közül csak az egyiket hagyhatod meg.
1. A lapodon lévő aktuális sor A oszlopába írja be a naptárban kiválasztott napot. Ezt az oszlopot a Cells(Selection.Row,1) 1-ese határozza meg. Kettesre átírva az akt. sor B oszlopába ír, és így tovább.2. A lapod bármelyik celláján állsz, kiválasztod a vezérlőn a dátumot, erre az aktuális celládban megjelenik a dátum.
Private Sub Calendar1_Click()
Cells(Selection.Row, 1) = Me.Calendar1.Value
Selection = Me.Calendar1.Value
End SubEgy másik makrót is írj a fenti alá (vagy fölé).
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 3 Then
Me.Calendar1.Visible = True
Else
Me.Calendar1.Visible = False
End If
End SubEnnek az a feladata, hogy ha a C oszlop valamelyik cellájára klikkelsz, megjelenik a naptár vezérlő, más oszlopra lépve eltűnik. A C oszlopot a Target.Column=3 hármasa határozza meg.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
lappy
őstag
válasz Töki bácsi #16189 üzenetére
A laphoz kell rendelned ezt a rövid makrót: lapfülön jobb klikk, kód megjelenítése, a jobb oldalon kapott üres lapra másold be.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
If Target = 1 Then
ActiveSheet.Shapes("Picture 1").Visible = True
ActiveSheet.Shapes("Picture 2").Visible = False
End If
If Target = 2 Then
ActiveSheet.Shapes("Picture 1").Visible = False
ActiveSheet.Shapes("Picture 2").Visible = True
End If
End If
End SubA "Picture 1" és "Picture 2" nevében a számot írd át a saját képeid sorszámára.
Bámulatos hol tart már a tudomány!
-
UBO
csendes tag
válasz bozsozso #16711 üzenetére
Delila_1 megoldása tökéletes de ha már írtam egy makrót rá akkor megosztom én is
Így használd:
Jobb gomb a fülön - kód megjelenítése és oda bemásolod ezt:Sub tolt()
Dim o
Dim i
o = ActiveCell.Column
For i = 2 To ActiveSheet.UsedRange.Rows.Count
If Cells(i, o).Value = "" Then
Cells(i, o).Select
Cells(i, o).Value = ActiveCell.Offset(-1, 0).Range("A1").Value
End If
Next i
End SubAlkalmazása rajzolsz egy téglalapot bárhova, jobb gomb rá - makró hozzárendelése és kiválasztod a tolt -t utána már csak oda kattintasz az egyik oszlopra ahol akarod h megcsinálja és kattinttasz a téglalapra
-
Excelbarat
tag
Hi ez a kis makró talán segíthet
A munkalap fülére jobb gomb kód megjelenítése és oda beírod.Sub hasonlit()
Dim sor1
Dim sor2
For i = 1 To ActiveSheet.UsedRange.Rows.Count
talalt = False
For j = 1 To ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row
If Left(Cells(i, 1), 4) = Left(Cells(j, "B"), 4) Then
sor1 = ActiveSheet.Cells(Rows.Count, "C").End(xlUp).Row + 1
Cells(i, 1).Copy Destination:=Cells(sor1, "C")
talalt = True
End If
Next j
If talalt = False Then
sor2 = ActiveSheet.Cells(Rows.Count, "C").End(xlUp).Row
Cells(sor2, "C") = Cells(sor2, "C") & " " & Cells(i, 1)
End If
Next i
End SubEhhez annyi segítséget kell nyújtanod hogy a "B" oszlop soraiba beírod hogy mik legyenek az új sor szavai. Tehát felsorolsz minden olyan szót ami új sorral kezdődjön (tehát ne fűzze az előzőhöz). (legalább az első 4 karaktert! és fontos a kis és NAGY betű)
Te esetedben így néz ki:
B1: Path
B2: Owner
B3: Access
B4: BUILT
B5: NT AUTHA "C" oszlopban pedig látni fogod az eredményt ha megfelel törlöd az A és B oszlopot utána
Még egyszer megjegyzem fontos, hogy a nagybetűt nagy betűvel a kis betűt kis betűvel! -
Excelbarat
tag
válasz atillaahun #16840 üzenetére
Hi! Írtam egy makrót:
Sub torol()
For i = 1 To ActiveSheet.UsedRange.Rows.Count
If WorksheetFunction.CountIf(Range(Cells(1, 1), Cells(ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row, "A")), Cells(i, "A")) > 1 Then
a = Cells(i, "A").Value
For j = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If Cells(j, "A").Value = a Then
Cells(j, "A").EntireRow.Delete
End If
Next j
End If
Next i
End Sub
Kihangsúlyozom hogy ez minden olyan SORT töröl amiben az A oszlopban van azonos és nem hagy egyet sem. (ergo aminél talál legalább kettőt abból egyet sem hagy!)
használata:
lapfülre jobb gomb - kód megjelenítése oda bemásolod és nyomsz egy F5-t (vagy felül a zöld kis play nyilacskára katt). és ha minden jól ment akkor csak egyedi értékek maradtak.
Azért mielőtt megcsinálod csinálj egy másolatot a fájlból mert a makrókat nem lehet visszavonni! (amit lefuttatsz és változtat(töröl) azt már nem tudod előhozni. (persze úgy igen h nem mented el a végeredményt, bezárod és újra megnyitod) -
Excelbarat
tag
válasz sarvari #17013 üzenetére
Hi!
Igazából nagyon nem akartam elbonyolítani így a makró a vastagság és szélesség oszlopokat tölti fel a súly értéket pedig függvénnyel már meg lehet oldani.
1. lépés Beírod ugyan arra a munkalapra a fejléceket pl A11: Név, B11: Szám, C11:Vastagság, D11: szélesség
2. makrót elindítod. Működése: a vastagság értékeket beírja annyiszor egymás alá ahány szélesség van. (megkeresi adott esetben C oszlop legalsó értékét és az alá tölti, ezért kell C,D11-be pl beírni a fejlécet, mert az a mérvadó). Majd a szélesség értékeket transzponálja D oszlopba egymás alá addig amíg C oszlopban van érték.
3. a Súly oszlopba beírod ezt a képletet és végigmásolod (katt a jobb alsó sarkában lévő kis fekete pöttyre 2x)
=INDEX($A$5:$D$8;HOL.VAN(C12;$A$5:$A$8);HOL.VAN(D12;$A$5:$D$5)) a te példád szerint vannak a hivatkozások! a dollár jelekre figyelj!
4. makrót törölheted így nem kell makróbarát fájlként elmentened.Futtatás előtt egy másolati példányon teszteld mert makró általi módosításokat nem lehet visszavonni!
Íme a makró:
Sub tolt()
Dim darab
Dim kezd
Dim ertek
darab = 3 - 1
'3-at módosítsd, hogy hány db szélesség érték van(a példádban 10,20,30 tehát 3)!
For i = 6 To 8
'Vastagság kezdő(6) és végső(8) értékének sorszámait módosítsd!
ertek = Cells(i, "A").Value 'A oszlop i sorait írja be megadott számszor az új táblába
kezd = ActiveSheet.Cells(Rows.Count, "C").End(xlUp).Row + 1
Range(Cells(kezd, "C"), Cells(kezd + darab, "C")).Value = ertek
Next i
'vastagság oszlop feltöltve
Range(Cells(5, "B"), Cells(5, "D")).Copy 'módosítsd a szélesség adatok kezdő és végső oszlopát
kezd = ActiveSheet.Cells(Rows.Count, "D").End(xlUp).Row + 1
Do While Cells(kezd, "C").Value <> ""
Cells(kezd, "D").Select
Selection.PasteSpecial Paste:=xlPasteValues, Transpose:=True
kezd = ActiveSheet.Cells(Rows.Count, "D").End(xlUp).Row + 1
Loop
Application.CutCopyMode = False
'feltöltve a szélesség oszlop
End Sub
Alkalmazása: jobb gomb a lapfülre kód megjelenítése oda bemásolod és F5-tel elindítod (vagy felül a zöld play ikonra katt)
A név és a szám értékeket pedig = jellel végigmásolod. -
Mutt
aktív tag
Hello,
...ugorjon, tehat a kovetkezo sor elejere.
Több megoldás lehetséges, ha esetleg egy fel nem soroltad oldottad meg, akkor oszd meg velünk.
1. Ha előre kijelölöd a beviteli tartományt, akkor TA-al csak ebben a tartományban tudsz mozogni. A kijelölés utolsó oszlopát elérve a következő sorra fog ugrani és nem a mellette lévő cellába.
2. Ha az adatsort Táblázatnak definiálod (Beszúrás -> Táblázat), akkor is a fentiek szerint működik. Ez csak 2007-es vagy frissebb verzióval megy.
3. Ha a munkalap nevén jobb klikket nyomsz válaszd a Kód megjelenítése opciót (ez az Excel VBA szerkesztőjét indítja). Itt a munkalap ScrollArea értékét állítsd be. A hátránya, hogy egyetlen más cellába a területen kívül nem lehet írni.
4. Nem tökéletes megoldás, de akár a Korrektúra -> Lapvédelem is működik. Előtte a szükséges cellákról vedd le a védelmet. A gond, hogy a TAB ilyenkor új sorba nem ugrik, de a kitöltött cellák között sorrendben nozog.
5. Makróval is elérhető a Worksheet_SelectionChange eseményen keresztül.
üdv.
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Delila_1
Topikgazda
Akkor csináljuk meg automatikusra.
A lenti makrót a lapodhoz kell rendelned. Lapfülön jobb klikk, kód megjelenítése. Bejutottál a VB szerkesztőbe, ott is annak a lapnak a kódlapjára, ahonnan indultál. Jobb oldalon látsz egy szép nagy üres felületet, oda másold be.Private Sub Worksheet_Change(ByVal Target As Range)
Dim usor As Long
If Target.Address = "$G$1" Then
usor = Range("A" & Rows.Count).End(xlUp).Row
If IsEmpty(Target) Then
ActiveSheet.Range("$A$1:$E$" & usor).AutoFilter Field:=1
Else
ActiveSheet.Range("$A$1:$E$" & usor).AutoFilter Field:=1, Criteria1:=Target
End If
End If
End SubArról beszéltünk, hogy 5 oszlopod van. Az első a címsor, ide tegyél be autoszűrőt. A tartományod A1:E(valahány).
Ha a G1 cellába beírod a sorszámot, a szűrő azt az egy rekordot mutatja, ahol az A oszlopban ez a szám szerepel. Beírod az eredményt, adhatod a következő sorszámot a G1 cellába.
Az összes rekord mutatásához töröld a G1 tartalmát.[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz Vizes Tomi #18734 üzenetére
Szia!
A Látható lap fülén jobb klikk, Kód megjelenítése. Ezzel bejutottál a VBA szerkesztőjébe. Látod, hogy bal oldalon a lapok felsorolásánál a Látható lapod van kijelölve. A jobb oldali üres területre másold az első makrót.
Bal oldalon a füzeted nevén állva az Insert menü Module almenüjére kattints, kapsz egy új modult, aminek Module...n lesz a neve. Erre kattintva jobb oldalon ismét üres területet kapsz, ide másold a második makrót.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Mutt
aktív tag
válasz magyor #18894 üzenetére
Hello,
..hol lehet beállítani, hogy a munkalap 1 048 576 sor, 16 384 oszlop méretű legyen
Excel 2007-től bevezetett xlsx (illetve xlsb, xlsm, stb) formátumban már ez az alapértelmezett maximális sor és oszlopszám. Ha egy régebbi formátumban van a fájlod, akkor a fájlt megnyitva Excel 2010-ben is marad a 65k sor és 256 oszlop limited. Mentés másként opcióval új formátumba mentve eltüntethetők a korlátozások....lehetséges-e az adott intervallumon (65536-1 048 576) belül egy tetszés szerinti sorérték beállítása?
Alapértelmezettként nem tudod beállítani, de fájlonként és munkalaponként a ScrollArea értékkel tudod korlátozni a használható területet (makróban/grafikus elemekkel ezen területen túl is tudsz mozogni).Jobb klikk a munkalapon, majd Kód megjelenítése opcióval elindul a VBA szerkesztő. Bal oldalt alul a Properties ablakon belül a ScrollArea-hoz kell beírnod az engedélyezett tartományt. Ha nincs properties ablakod, akkor F4-el megjelenik. Pár példa:
$A$1:$E$500 első 500 sor és 5 oszlopba lehet írni
$D:$D csak a D-oszlop használható
$1:$100 csak az első 100 sor használhatóüdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
Új hozzászólás Aktív témák
- Horgász topik
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Rengeteg áram kell az adatközpontoknak, erre válasz a geotermikus energia
- gban: Ingyen kellene, de tegnapra
- OpenWRT topic
- A TCL minden korábbinál nagyobb LCD tévéket akar gyártani
- BestBuy topik
- Amlogic S905, S912 processzoros készülékek
- Sorozatok
- Politika
- További aktív témák...
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- PC JÁTÉKOK (OLCSÓ STEAM, EA , UPLAY KULCSOK ÉS SOKMINDEN MÁS IS 100% GARANCIA )
- Game Pass Ultimate előfizetések 1 - 25 hónapig azonnali kézbesítéssel a LEGOLCSÓBBAN!
- Windows, Office licencek a legolcsóbban, egyenesen a Microsoft-tól - 2990 Ft-tól!
- Vírusirtó, Antivirus VPN kulcsok