2417
megoldást keresek erre a problémára
  • Storey
    #2417
    Rendben!
    Köszönöm!
  • Delila1
    #2416
    Privátban megadom a címem, oda küldd el a fájlt, hátha sikerül összehozni.
  • Storey
    #2415
    Üdv!
    Sajnos nem úgy működik, ahogy szeretném. :(
    A listából ki tudom választani a neveket és hozzá is rendeli a többi adatot, de nem tudok újat bevinni, mert hibával leáll.
    Illetve a form bezárásakor szeretném kiüríteni a formot, de a névnél itt is hibát jelez.
    És a meglévő adatok kiegészítése sem megy.
  • Delila1
    #2414
    sor = Range("A1").End(xlDown).Row

    Ez adja meg az utolsó kitöltött cella sorát az A oszlopban. Ekkor az adatbevitellel felülírod az utolsó sort. Ha új sorba akarsz írni, akkor
    sor = Range("A1").End(xlDown).Row + 1
    legyen a sor meghatározása.

    Ha egy meglévő sor adatait akarod módosítani, akkor ki kell keresned a módosítandó sort egy jellemzője szerint.
    sor=Application.WorksheetFunction.Match(Nev, Columns(1),0)

    Vigyázat! Itt a sor változó Variant típusú legyen! Ha deklarálod a változókat, akkor Dim sor As Variant, de az As Variant el is hagyható.
  • Storey
    #2413
    Köszi a megoldást! Szuperül működik! :)
    Azonban egy új problémával szembesültem. :(
    A már bevitt adatok kiegészítésekor új sorba teszi az egészet és megmarad a régi sor is.
    Így viszem be az adatokat:

    Private Sub Bevitel_Click()
    Application.ScreenUpdating = True
    Sheets("Nevek").Activate

    sor = Range("A1").End(xlDown).Row + 1

    Cells(sor, "A") = Nev
    Cells(sor, "B") = Telepules
    Cells(sor, "C") = Utca
    Cells(sor, "D") = Hazszam * 1
    Cells(sor, "E") = Nem
    Cells(sor, "F") = Eletkor * 1
    Cells(sor, "G") = Ruhameret

    End Sub

    Hogyan tudom megoldani, hogy kiegészítéskor, változtatáskor ne keletkezzen új sor, de ha teljesen új adatsort szeretnék bevinni, az a végére kerüljön? Esetleg mondjuk még az egészet táblát bevitel után abc rendbe tegye?
    Előre is köszi a segítséget! :)
  • Delila1
    #2412
    A sor változó értékmegadása hibás. A Range elé WF-et írtál WSN helyett, ezt kijavítva működik.

    Nem lenne egyszerűbb így?
    sor = WF.Match(Nev, WSN.Columns(1), 0)
  • Delila1
    #2411
    Szia!

    Hol adod meg a kezd% és a veg% értékét?
  • Storey
    #2410
    Kedves Mindenki!
    Kis segítséget szeretnék kérni!
    Próbálkozom egy egyszerű kis nyilvántartó elkészítésével Excelben. Vezérlőkkel oldottam meg a bevitelt és jól is működik.
    Viszont akadt egy kis problémám: szeretném, ha az első adat (név) bevitelekor a comboboxban kiválasztás alapján a már bevitt
    adatok is megjelennének, de sajnos nem sikerül összehoznom. Hibát jelez. :(

    Private Sub Nev_Change()

    Set WSN = Sheets("Nevek")
    Set WF = Application.WorksheetFunction

    sor = WF.Match(Nev.Value, WF.Range("A" & kezd% & ":A" & veg%), 0) + kezd% - 1
    Nev = WSN.Cells(sor, "A")
    Telepules = WSN.Cells(sor, "B")
    Utca = WSN.Cells(sor, "C")
    Hazszam = WSN.Cells(sor, "D")
    Nem = WSN.Cells(sor, "E")
    Eletkor = WSN.Cells(sor, "F")
    Ruhameret = WSN.Cells(sor, "G")

    End Sub

    Mi lehet a hiba?
    Előre is köszönöm a segítséget!
  • Delila1
    #2409
    Szia!

    Kijelölöd a cellákat (Shift vagy Ctrl segítségével). Beírod a számot, majd Ctrl+Entert nyomsz.
    A kijelölésben legyen benne a fejléces cella is.
    Utoljára szerkesztette: Delila1, 2020.06.08. 06:33:38
  • strepsils
    #2408
    Sziasztok ! Hogy lehet azt megcsinálni hogy a kijelölt cellák mindegyikébe ugyan azt a számot írja be amit fölül a fejlécben megadok?

    Hogy ne kelljen ezerszer ugyan azt beírni ha van ezer cellám .
  • Atika :o)
    #2407
    Szuper, köszönöm.
  • Delila1
    #2406
    A függvény negyedik paramétere 1 és 0 lehet. A nulla pontos keresést eredményez, az 1 pedig közelítőt. Az utóbbi elhagyható. Ha nem adsz meg negyedik paramétert, 1-nek értelmezi ezt az Excel, és ebben az esetben emelkedő sorrendbe rendezett adatokra van szükség.
  • Atika :o)
    #2405
    Sziasztok, letezik olyan funkcio az excelben mint a lookup ugye ami osszehasonlit adott oszlopokat es beir egy erteket az osszehasonlitas alapjan. Csak az a bajom, hogy en pl kodokat hasonlitok ossze es ha ezek nincsenek novekvo sorrendbe rakva akkor az excel nem tudja megcsinalni a lookup parancs segitsegevel.
  • Delila1
    #2404
    Remélem, erre gondoltál...
  • lalakov
    #2403
    Köszönöm. :)
  • Delila1
    #2402
    Szóval az AK-ból akarod kivonni az AJ-t.

    Az AL47 képlete =HA(AK47>AJ47;AK47-AJ47;24-AJ47+AK47)
    Az AL oszlop formátuma: [ó]:pp:mm
  • lalakov
    #2401
    Köszönöm. :) Az ebből való számolás nem akar összejönni. Ha 24 óra alatt vagyok akkor ((AJ47-INT(AJ47))*24) a képlet, de felette 24 óránként +24-ket kéne hozzáadni. Ezt próbáltam úgy csinálni, hogy AN47-be beírtam a 24:00:00-et, a AO47-be beírtam a 48:00:00-at és a AP47-be beírtam a 72:00:00-öt.
    A képletnek ezt írtam be, de nem jó: =HA(((AJ47<AN47;AJ47-INT(AJ47))*24);HA((((AJ47>AN47;AJ47-INT(AJ47))*24)+24);HA((((AJ47>AO47;AJ47-INT(AJ47))*24)+48);HA((((AP47>AN47;AJ47-INT(AJ47))*24)+72);""))))
    Mit rontok el? Vagy van esetleg egyszerűbb megoldás?
  • Delila1
    #2400
    A cellaformátumon kell változtatnod.

    [ó]:pp:mm

    A szögletes zárójelek közé tett órát kiírja.
  • lalakov
    #2399
    Újabb problémába ütköztem. Átléptem a 24 órát és ahelyett hogy 25 órával számolna, 1 órát ír. "HA" függvényben hozzá tudnék adni +24-et, de mivel 1-nek látja és nem 25-nek, így ez nem működik.
  • lalakov
    #2398
    Türelmetlen voltam :) , kaptam már választ. Ha másnak is kéne beírom a megoldást: Idő= A2 akkor =(A2-INT(A2))*24.
  • lalakov
    #2397
    Sziasztok!

    Egész számot szeretnék elosztani idővel(óra, perc formátum), de SUM-ban nem jó eredményt ad. Milyen képletet kéne használni?
    Megpróbáltam az órát perccé alakítani ( =KONVERTÁLÁS(D36;"hr";"mn") ), de szerinte a 6:00:00 óra az 15 perc. Ennél a formátum kódnál: [ó]:pp:mm helyes értéket ad 360:00:00, de ezzel nem tudok továbbra sem számolni. Nem találtam olyan lehetőséget, hogy csupán 360 -at adjon ki.
  • Storey
    #2396
    Mindkettőt megtettem, de semmi változás. :(
    Továbbra is értetlenül állok a dolog előtt!
    Sajnos ez van.
    Mindenesetre mindenkinek köszi a segítséget! :)
  • Delila1
    #2395
    Telepítetted a VBA-t?
    Adj egy javítást az Office-ra, az valószínűleg rendbe teszi.
  • Storey
    #2394
    Nincsenek képletek benne, csak adatok. Megpróbáltam, amit írtál, de valami nem jó. Hibával leáll.
    Egyébként én is próbáltam már másik gépen szintén 2016-osban és ott is jól működik. Csak az én gépemen nem! :(
    Bosszantó, de ez van!
    Majd nem az alakzattal indítom.
  • Delila1
    #2393
    Ha nem képletek vannak a másolandó tartományban,
    Range("B" & sor & ":F" & sor).Copy WSA.Range("C" & sor1)
    formában is megadhatod a másolást.

    Nálam csont nélkül lefut a 2016-os verzióban.
  • Storey
    #2392
    Így már ír ki hibát! Run-time error '1004': Range osztály PasteSpecial metódusa hibás.
  • Delila1
    #2391
    Kipróbálhatod azt is, hogy a makró elejére beírsz egy Stop utasítást. Indítod az alakzattal, a stopnál leáll, onnan lépésenként futtatod az F8-cal.
  • Storey
    #2390
    Már próbáltam, de nem változott semmi.
    Annyit korrigálnék, hogy nem jelez hibát, de nem is fut végig. Az első adat válogatása és másolása után leáll.
  • Delila1
    #2389
    Töröld ki az alakzatot, rajzolj újat, és ahhoz rendeld hozzá a makrót.
  • Storey
    #2388
    Igen. Az van hozzárendelve. Valószínűleg valami kis vacak beállítási probléma, de nem tudok rájönni, hogy mi... :(
  • Delila1
    #2387
    Nézd meg, hogy az alakzathoz a Masolas makró van-e rendelve.
  • Storey
    #2386
    Nem ír ki hibát. Végigfut, viszont nem ccsinálja meg a "dolgát". Csak az első adatsort válogatja és másolja át a lapokra, a többit már nem. Egy alakzatra való kattintással indul normál esetben és akkor nem működik. Ha viszont a Visual Basicből vagy a Fejlesztőeszközök fülön a Makrókra kattintva indítom, akkor tökéletesen működik. Ezért állok értetlenül a dolog előttt.
  • Delila1
    #2385
    Hol akad el, és mit ír ki hibának?
  • Storey
    #2384
    Köszönöm a segítséget, de továbbra sem működik.
    Az alábbi makróról lenne szó!

    Sub Masolas()
    Dim WSJ As Worksheet, WSS As Worksheet, WSA, sor
    Dim usor As Integer, sor1 As Integer, sor2 As Integer, sor3 As Integer, sor4 As Integer, sor5 As Integer, sor6 As Integer
    Application.ScreenUpdating = False

    Set WSS = Sheets("Alap")
    Set WSA = Sheets("Második")
    Set WSJ = Sheets("Harmadik")

    If WSS.Range("E13") = "" Then
    MsgBox "Nincsenek másolható adatok!", vbOKOnly + vbExclamation
    Exit Sub
    End If

    '***************************************************************************
    'Előző adatok törlése
    WSA.Range("C10:G59, C68:G117, C126:G175, C184:G233, C242:G291, C300:G349") = ""
    WSJ.Range("C10:G59, C68:G117, C126:G175, C184:G233, C242:G291, C300:G349") = ""

    sor1 = 10: sor2 = 68: sor3 = 126: sor4 = 184: sor5 = 242: sor6 = 300
    '***************************************************************************

    WSS.Select
    usor = Range("E12").End(xlDown).Row
    For sor = 10 To usor
    Select Case Cells(sor, "G")
    Case Range("B6").Value
    Range("B" & sor & ":F" & sor).Copy
    WSA.Range("C" & sor1).PasteSpecial xlPasteValues
    Range("B" & sor & ":F" & sor).Copy
    WSJ.Range("C" & sor1).PasteSpecial xlPasteValues
    sor1 = sor1 + 1
    Case Range("B7").Value
    Range("B" & sor & ":F" & sor).Copy
    WSA.Range("C" & sor2).PasteSpecial xlPasteValues
    Range("B" & sor & ":F" & sor).Copy
    WSJ.Range("C" & sor2).PasteSpecial xlPasteValues
    sor2 = sor2 + 1
    Case Range("B8").Value
    Range("B" & sor & ":F" & sor).Copy
    WSA.Range("C" & sor3).PasteSpecial xlPasteValues
    Range("B" & sor & ":F" & sor).Copy
    WSJ.Range("C" & sor3).PasteSpecial xlPasteValues
    sor3 = sor3 + 1
    Case Range("B9").Value
    Range("B" & sor & ":F" & sor).Copy
    WSA.Range("C" & sor4).PasteSpecial xlPasteValues
    Range("B" & sor & ":F" & sor).Copy
    WSJ.Range("C" & sor4).PasteSpecial xlPasteValues
    sor4 = sor4 + 1
    Case Range("B10").Value
    Range("B" & sor & ":F" & sor).Copy
    WSA.Range("C" & sor5).PasteSpecial xlPasteValues
    Range("B" & sor & ":F" & sor).Copy
    WSJ.Range("C" & sor5).PasteSpecial xlPasteValues
    sor5 = sor5 + 1
    Case Range("B11").Value
    Range("B" & sor & ":F" & sor).Copy
    WSA.Range("C" & sor6).PasteSpecial xlPasteValues
    Range("B" & sor & ":F" & sor).Copy
    WSJ.Range("C" & sor6).PasteSpecial xlPasteValues
    sor6 = sor6 + 1
    End Select
    Next

    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    Range("E13").Select
    End Sub

    A lényege az, hogy az egyik lapon vegyesen vannak az adatok (max 6 féle) amelyet másik két lapra válogat és másol át.
    A makró elindul, de csak az első elemet másolja át a lapokra, a többit nem.
    2007 éa 2010 alatt tökéletesen működött, illetve van még jónéhány másik makró is ugyanebben az Excel fileban, amelyek tökéletesen működnek. Csak ez az egy nem. :(
    Előre is köszi!
  • Delila1
    #2383
    A bővítményeknél jelöld be az Analysis ToolPak és az Analysis ToolPak-VBA bővítményeket. Ha ezután sem működik, tedd ki ide a kérdéses makrót, akkor talán megfelelő választ kaphatsz.
  • Storey
    #2382
    A VBA-ba Sub-al indulnak a makrók. Ezt nem lehet átírni, mert hibát jelez. A nevében sem tudom átírni, úgyhogy továbbra sem értem, hogy hová kellene beírnom a Call-t.
    Elnézést az értetlenkedésért! :)
  • tigerbácsi
    #2381
    A VBA -ba kell átírnod a modulokban.

    kiad

    Call kiad

    A kiad nevű makrot e két módon kérheted, egy makron belül.
    régen elég volt csak a makro nevét bekérned, most a régieknél be kell hívni.
  • Storey
    #2380
    Köszi a választ, de ezt nem egészen értem. A makróim alakzatra kattintásra indulnak és nem begépelem a nevét. Hová írjam a Call parancsot?
  • tigerbácsi
    #2379
    Nekem is volt ehhez hasonló problémám. Bár gépcsere nélkül. Úgy tudtam megoldani, hogy ha makróból indítasz egy másik modulon lévő makrót akkor nem elég csak a makró nevét begépelni mint azt tesszük pl a 2007-esben, hanem meg kell hívni
    Call makrónév (azaz Call parancs segítségével) nekem így működnek a régi makróim.
  • Storey
    #2378
    Sziasztok!
    Egy számomra megfejthetetlen, érdekes problémával fordulnék a nálam jóval nagyobb tudással rendelkező "szakikhoz".
    Készítettem egy makrót évekkel ezelőtt, 2007-es Excelben. Sokáig használtam, és tökéletesen működött 2007-esben és 2010-esben is. Majd gépcserét követően 2016-os Excel került a gépemre, és ott már nem működik jól. Csak egy része fut le, majd megáll de hibaüzenetet nem küld. Viszont a Visual Basicből indítva hibátlanul fut.
    Teljesen értetlenül állok a dolog előtt.
    Aki tudja, hogy mi lehet a hiba, az kérem írja meg!
    Köszi!