Új hozzászólás Aktív témák

  • Fferi50
    Topikgazda

    [link]
    xlsx formában mentettem, kitörölve a makró(ka)t, hogy ne cirkuszoljon a data.hu.

    Szia!
    Banális okai vannak. Nincsenek olyan nevű lapok, amiket nyomtatni kellene:

    Üdv.

  • Fferi50
    Topikgazda

    [link]
    xlsx formában mentettem, kitörölve a makró(ka)t, hogy ne cirkuszoljon a data.hu.

    Még vírusellenőrzés fut. Mindegy, hogy van-e benne makró, ez a rutin.
    Üdv.

  • Delila_1
    veterán

    Megnézném a 2016-os verzióban.

    [link]
    xlsx formában mentettem, kitörölve a makró(ka)t, hogy ne cirkuszoljon a data.hu.

  • Delila_1
    veterán

    Szia!
    Ez érdekes, mert nálam 2016-os Excel verzió fut és azon "kísérleteztem ki".
    "Sheets(nyomtatni).Select sornál, Subscipt ouf of range."
    Biztosan megvan minden olyan nevű lap a munkafüzetben, ami a nyomtatni változóban szerepel?
    Üdv.
    PS. Esetleg átküldenéd a mintád priviben?

    Igen, megvan.

  • Fferi50
    Topikgazda

    A 2019-es verzió nem veszi be, hibára fut Sheets(nyomtatni).Select sornál, Subscipt ouf of range.
    Az Immediate lapon le tudom kérdezni a nyomtatni tömb egyes lapjainak az értékét, de a Select-nél megáll a tudomány. Nem fogadja el tartományként.

    Szia!
    Ez érdekes, mert nálam 2016-os Excel verzió fut és azon "kísérleteztem ki".
    "Sheets(nyomtatni).Select sornál, Subscipt ouf of range."
    Biztosan megvan minden olyan nevű lap a munkafüzetben, ami a nyomtatni változóban szerepel?
    Üdv.
    PS. Esetleg átküldenéd a mintád priviben?

  • föccer
    nagyúr

    Szia!
    A Select Case-es megoldásodból jött az ötlet, mert minek is írjuk le ennyiszer a munkalapok nevét, ha ilyen programozóbarát módon vannak elnevezve. :)
    Szívesen segítettem. További jó munkát!
    Üdv.

    Közben kibogarásztam, nagyjából értem. Csak nem ismerem a szintaktikai lehetőségeket a vba-ban. :B

    Delila_1: O365 van a céges környezetben, így minden adott. Asszonynak csináltam valamelyik héten egy oda-vissza kereső táblát, de náluk valami rettenet régi verzió van, pedig elvileg államilag elérhető lenne nála is az O365, de a rendszergizdáék nem akarják felrakni, mert egyébként a cégnél senki nem használja az outlook-word kombón kívül. Outlookba névjegyeket minek frissíteni, van egy wörd vezetve az új belépökkel.... :W Totál káosz. Szóval ide próbáltam csinálni egy táblát, de annyira funkciószegény a régi verziója az O365 natív tömbfüggvényeihez képest, hogy inkább rábíztam asszoynyágra h győzze meg a főnökeit, hogy frissítsenek O365-re :D

    üdv, föccer

  • Delila_1
    veterán

    Szia!

    Nem tudom, hogy hogy de hibátlanul működik, köszönöm szépen :R Én már nem tudok ilyen trükköket.

    üdv, föccer

    A 2019-es verzió nem veszi be, hibára fut Sheets(nyomtatni).Select sornál, Subscipt ouf of range.
    Az Immediate lapon le tudom kérdezni a nyomtatni tömb egyes lapjainak az értékét, de a Select-nél megáll a tudomány. Nem fogadja el tartományként.

  • Fferi50
    Topikgazda

    Szia!

    Nem tudom, hogy hogy de hibátlanul működik, köszönöm szépen :R Én már nem tudok ilyen trükköket.

    üdv, föccer

    Szia!
    A Select Case-es megoldásodból jött az ötlet, mert minek is írjuk le ennyiszer a munkalapok nevét, ha ilyen programozóbarát módon vannak elnevezve. :)
    Szívesen segítettem. További jó munkát!
    Üdv.

  • föccer
    nagyúr

    Szia!
    Talán érdemes megfontolni a következő gondolatot:
    Dim nyomtatni
    Const sheetek = "Kezelő,TOP LISTÁK,TOPELEMZES,VCBE,EE_1,EE_2,EE_3,EE_4,EE_5,EE_6,EE_7,EE_8,EE_9,EE_10,EE_11,EE_12,EE_13,EE_14,EE_15,EE_16,EE_17,EE_18,EE_19,EE_20"
    EE_szama = Sheets("KEZELŐ").Range("D23").Value
    nyomtatni = Split(Left(sheetek, InStr(sheetek, "EE_" & EE_szama) + IIf(EE_szama < 10, 3, 4)), ",")
    Sheets(nyomtatni).Select
    Mivel egyben definiáltuk az összes nyomtatási szükségletet, az EE_szám alapján mindig le tudjuk vágni a megfelelő darabot belőle. A Split függvény pedig tömböt csinál a levágásból.
    Üdv.

    Szia!

    Nem tudom, hogy hogy de hibátlanul működik, köszönöm szépen :R Én már nem tudok ilyen trükköket.

    üdv, föccer

  • Fferi50
    Topikgazda

    Igen ezt szerettem volna megúszni köszönöm Azért

    Szia!
    Akkor nincs más hátra, mint makró.
    Ezt a két makrót másold be egy modulba, javítsd át a megfelelő helyeken. A hivo makróban megadhatod, melyik cellából másolja az adatot és hol kezdje a cél munkafüzetben a beírást. Ezáltal több cellát is másolhatsz a hivo makró paramétereinek változtatásával.
    Sub hivo()
    beirja "A3", "A1" 'A3 cellából az A1 cellától lefelé fog másolni. Ezt kell átírnod a megfelelő címekre.
    End Sub
    Sub beirja(ByVal honnan As String, ByVal hova As String)
    Dim sh1 As Worksheet, sh2 As Worksheet, celja As Range
    Set sh1 = Worksheets("S51") 'S51 helyébe írd a cél munkafüzet nevét
    Set celja = sh1.Range(hova)
    For Each sh2 In Worksheets
        If sh2.Name <> sh1.Name Then
           celja.Value = sh2.Range(honnan)
           Set celja = celja.Offset(1, 0)
        End If
    Next
    End Sub
    A munkafüzetet makróbarátként vagy binárisként kell mentened.
    Üdv.
    Ps. Létezik még az Excelben az Adatok - összesítés menüpont, ahol megfelelően struktúrált munkalapok adatai egy munklapra összesíthetők. Talán azt is érdemes lenne megnézned.

  • joocek
    aktív tag

    Szia!
    Képlettel megoldható, de nem úszod meg a munkalap nevek beírását a képletbe. Pl:
    =Munka1!$A$1 ' ide a cella címe kerüljön a $ jelekkel együtt
    Ezt a képletet húzod lefelé vagy jobbra, attól függően, hova kell az adatoknak kerülni.
    Majd a képletekben levő munkalap neveket átírod a megfelelő névre.
    Üdv.

    Igen ezt szerettem volna megúszni köszönöm Azért

  • Fferi50
    Topikgazda

    Sziasztok.van egy munkafüzet ami 50 munkalapból áll. Minden egyes munkalapból egy cellát kéne átmásolni az 51 munkalapra. Ezt lehet valahogy gyorsítani ne kelljen egyesével minden munkalapon kijelölni. Mindig csak a munkalap neve változik a cella helye ugyanott van. :R :R :o Elnézést ha nagyon amatőr a kérdés

    Szia!
    Képlettel megoldható, de nem úszod meg a munkalap nevek beírását a képletbe. Pl:
    =Munka1!$A$1 ' ide a cella címe kerüljön a $ jelekkel együtt
    Ezt a képletet húzod lefelé vagy jobbra, attól függően, hova kell az adatoknak kerülni.
    Majd a képletekben levő munkalap neveket átírod a megfelelő névre.
    Üdv.

  • joocek
    aktív tag

    Sziasztok.van egy munkafüzet ami 50 munkalapból áll. Minden egyes munkalapból egy cellát kéne átmásolni az 51 munkalapra. Ezt lehet valahogy gyorsítani ne kelljen egyesével minden munkalapon kijelölni. Mindig csak a munkalap neve változik a cella helye ugyanott van. :R :R :o Elnézést ha nagyon amatőr a kérdés

  • Fferi50
    Topikgazda

    Sub Gyorsjelentesek_generalasa()
    '
    ' Gyorsjelentesek_generalasa Makró
    '

    '

    Dim Akt_sor As Integer
    Dim Most As Date
    Dim Kesz_db As Integer
    Dim Tomb As String
    Dim EE_szama As Integer
    Dim Nyomatato As String


    Most = Now
    Application.StatusBar = "Gyorsjelentések generálásának folyamata: Előkészítés..."


    Akt_sor = 0
    Kesz_db = 0
    EE_szama = 0
    Nyomtato = "Microsoft Print to PDF"

    Application.StatusBar = "Gyorsjelentések generálásának folyamata: Indítom a generálást..."

    For Akt_sor = 3 To 4
    Sheets("Kezelő").Range("D17").Value = Sheets("Kezelő").Cells(Akt_sor, 10)
    EE_szama = Sheets("KEZELŐ").Range("D23").Value
    Select Case EE_szama
    Case 1
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1")).Select
    Case 2
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2")).Select
    Case 3
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3")).Select
    Case 4
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4")).Select
    Case 5
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5")).Select
    Case 6
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6")).Select
    Case 7
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7")).Select
    Case 8
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8")).Select
    Case 9
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9")).Select
    Case 10
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10")).Select
    Case 11
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11")).Select
    Case 12
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12")).Select
    Case 13
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13")).Select
    Case 14
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14")).Select
    Case 15
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15")).Select
    Case 16
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16")).Select
    Case 17
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16", "EE_17")).Select
    Case 18
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16", "EE_17", "EE_18")).Select
    Case 19
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16", "EE_17", "EE_18", "EE_19")).Select
    Case 20
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16", "EE_17", "EE_18", "EE_19", "EE_20")).Select
    Case Else
    Resume Next
    End Select


    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False, ActivePrinter:=Nyomtato, PrintToFile:=True, PrToFileName:=Sheets("Kezelő").Cells(Akt_sor, 8)

    Kesz_db = Kesz_db + 1

    Application.StatusBar = "Gyorsjelentések generálásának folyamata: " & Kesz_db & "/35 db jelentés elkészült"

    Next

    Application.StatusBar = ""

    MsgBox "Kész vagyok. Köszönöm, hogy ma is dolgozhattam helyetted. Végrehajtási idő: " & Format(Now - Most, "hh:mm:ss;@")

    End Sub

    Szia!
    Talán érdemes megfontolni a következő gondolatot:
    Dim nyomtatni
    Const sheetek = "Kezelő,TOP LISTÁK,TOPELEMZES,VCBE,EE_1,EE_2,EE_3,EE_4,EE_5,EE_6,EE_7,EE_8,EE_9,EE_10,EE_11,EE_12,EE_13,EE_14,EE_15,EE_16,EE_17,EE_18,EE_19,EE_20"
    EE_szama = Sheets("KEZELŐ").Range("D23").Value
    nyomtatni = Split(Left(sheetek, InStr(sheetek, "EE_" & EE_szama) + IIf(EE_szama < 10, 3, 4)), ",")
    Sheets(nyomtatni).Select
    Mivel egyben definiáltuk az összes nyomtatási szükségletet, az EE_szám alapján mindig le tudjuk vágni a megfelelő darabot belőle. A Split függvény pedig tömböt csinál a levágásból.
    Üdv.

  • Delila_1
    veterán

    A oszlopban van egy dátumom, pl 2023.01.01
    B oszlopban képlettel ki van szedve az év =ÉV(A1)
    C oszlopban képlettel ki van szedve a hét =HÉT.SZÁMA(A1;1)

    A B és C oszlopot össze akarom fűzni hogy ez legyen a végeredmény: 2023/01
    Ezt hogyan lehet megoldani?

    Nem kell külön-külön kihozni az évet és a hetet.
    B oszlopba =ÉV(A1)&"/"&HÉT.SZÁMA(A1;1)

  • Imy
    veterán

    A oszlopban van egy dátumom, pl 2023.01.01
    B oszlopban képlettel ki van szedve az év =ÉV(A1)
    C oszlopban képlettel ki van szedve a hét =HÉT.SZÁMA(A1;1)

    A B és C oszlopot össze akarom fűzni hogy ez legyen a végeredmény: 2023/01
    Ezt hogyan lehet megoldani?

  • Delila_1
    veterán

    Sub Gyorsjelentesek_generalasa()
    '
    ' Gyorsjelentesek_generalasa Makró
    '

    '

    Dim Akt_sor As Integer
    Dim Most As Date
    Dim Kesz_db As Integer
    Dim Tomb As String
    Dim EE_szama As Integer
    Dim Nyomatato As String


    Most = Now
    Application.StatusBar = "Gyorsjelentések generálásának folyamata: Előkészítés..."


    Akt_sor = 0
    Kesz_db = 0
    EE_szama = 0
    Nyomtato = "Microsoft Print to PDF"

    Application.StatusBar = "Gyorsjelentések generálásának folyamata: Indítom a generálást..."

    For Akt_sor = 3 To 4
    Sheets("Kezelő").Range("D17").Value = Sheets("Kezelő").Cells(Akt_sor, 10)
    EE_szama = Sheets("KEZELŐ").Range("D23").Value
    Select Case EE_szama
    Case 1
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1")).Select
    Case 2
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2")).Select
    Case 3
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3")).Select
    Case 4
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4")).Select
    Case 5
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5")).Select
    Case 6
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6")).Select
    Case 7
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7")).Select
    Case 8
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8")).Select
    Case 9
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9")).Select
    Case 10
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10")).Select
    Case 11
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11")).Select
    Case 12
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12")).Select
    Case 13
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13")).Select
    Case 14
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14")).Select
    Case 15
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15")).Select
    Case 16
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16")).Select
    Case 17
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16", "EE_17")).Select
    Case 18
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16", "EE_17", "EE_18")).Select
    Case 19
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16", "EE_17", "EE_18", "EE_19")).Select
    Case 20
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16", "EE_17", "EE_18", "EE_19", "EE_20")).Select
    Case Else
    Resume Next
    End Select


    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False, ActivePrinter:=Nyomtato, PrintToFile:=True, PrToFileName:=Sheets("Kezelő").Cells(Akt_sor, 8)

    Kesz_db = Kesz_db + 1

    Application.StatusBar = "Gyorsjelentések generálásának folyamata: " & Kesz_db & "/35 db jelentés elkészült"

    Next

    Application.StatusBar = ""

    MsgBox "Kész vagyok. Köszönöm, hogy ma is dolgozhattam helyetted. Végrehajtási idő: " & Format(Now - Most, "hh:mm:ss;@")

    End Sub

    OK

  • föccer
    nagyúr

    Szóval a H oszlopba beírtad a ciklussal, tömbbe összehozott lapok nevét?

    Sub Gyorsjelentesek_generalasa()
    '
    ' Gyorsjelentesek_generalasa Makró
    '

    '

    Dim Akt_sor As Integer
    Dim Most As Date
    Dim Kesz_db As Integer
    Dim Tomb As String
    Dim EE_szama As Integer
    Dim Nyomatato As String


    Most = Now
    Application.StatusBar = "Gyorsjelentések generálásának folyamata: Előkészítés..."


    Akt_sor = 0
    Kesz_db = 0
    EE_szama = 0
    Nyomtato = "Microsoft Print to PDF"

    Application.StatusBar = "Gyorsjelentések generálásának folyamata: Indítom a generálást..."

    For Akt_sor = 3 To 4
    Sheets("Kezelő").Range("D17").Value = Sheets("Kezelő").Cells(Akt_sor, 10)
    EE_szama = Sheets("KEZELŐ").Range("D23").Value
    Select Case EE_szama
    Case 1
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1")).Select
    Case 2
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2")).Select
    Case 3
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3")).Select
    Case 4
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4")).Select
    Case 5
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5")).Select
    Case 6
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6")).Select
    Case 7
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7")).Select
    Case 8
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8")).Select
    Case 9
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9")).Select
    Case 10
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10")).Select
    Case 11
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11")).Select
    Case 12
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12")).Select
    Case 13
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13")).Select
    Case 14
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14")).Select
    Case 15
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15")).Select
    Case 16
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16")).Select
    Case 17
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16", "EE_17")).Select
    Case 18
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16", "EE_17", "EE_18")).Select
    Case 19
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16", "EE_17", "EE_18", "EE_19")).Select
    Case 20
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16", "EE_17", "EE_18", "EE_19", "EE_20")).Select
    Case Else
    Resume Next
    End Select


    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False, ActivePrinter:=Nyomtato, PrintToFile:=True, PrToFileName:=Sheets("Kezelő").Cells(Akt_sor, 8)

    Kesz_db = Kesz_db + 1

    Application.StatusBar = "Gyorsjelentések generálásának folyamata: " & Kesz_db & "/35 db jelentés elkészült"

    Next

    Application.StatusBar = ""

    MsgBox "Kész vagyok. Köszönöm, hogy ma is dolgozhattam helyetted. Végrehajtási idő: " & Format(Now - Most, "hh:mm:ss;@")

    End Sub

  • föccer
    nagyúr

    Szóval a H oszlopba beírtad a ciklussal, tömbbe összehozott lapok nevét?

    H oszlopban sima szöveg függvényekkel van összerakva a leendő fájlok neve. Technikailag leveszi a dátumot, azt átrakja szövegbe =SZÖVEG(D15;"éééé")&"_"&SZÖVEG(D15;"hh")&"_" formátummal, mögé rakja a telephely azonosítóját, amit az az aktuális sor alapján alapadatokból kikeresi majd elé illeszti a megadott útvonalat és kész is. Ha változtatom az elérési utat, akkor elég 1 cellában, illetve az elemzett időszaknak megfelelően módosítja a fájlok neveit, hogy a kolléágk ki tudják keresni, hogy melyik kell nekik.

  • Delila_1
    veterán

    Csak megtaláltam, hogy mi kell nekem. Így működik a beállított nyomtatóra kiküldi a cuccot ahogy kell és átveszi a fájl nevét is.

    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False, ActivePrinter:=Nyomtato, PrintToFile:=True, PrToFileName:=Sheets("Kezelő").Cells(Akt_sor, 8)

    Köszi ismételten. :R

    üdv, föccer

    Szóval a H oszlopba beírtad a ciklussal, tömbbe összehozott lapok nevét?

  • föccer
    nagyúr

    Sebaj, végül a select case-zel sikeresen megoldottad. :C

    Csak megtaláltam, hogy mi kell nekem. Így működik a beállított nyomtatóra kiküldi a cuccot ahogy kell és átveszi a fájl nevét is.

    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False, ActivePrinter:=Nyomtato, PrintToFile:=True, PrToFileName:=Sheets("Kezelő").Cells(Akt_sor, 8)

    Köszi ismételten. :R

    üdv, föccer

  • Delila_1
    veterán

    A select case az szépen működik. Nem túl elegáns, de hibátlan. Szépsége a dolognak, hogy ahogy pörgetem a for-t, az EE_szama ugye lehet több vagy kevesebb, ugyan akkor az új kijelölési array felülírja az előző ciklusban használt kijelölést. Tehát nem hozzáadja az előző kijelölésekhez, hanem új kijelölést állít be, így nem kell azzal foglalkozni, hogy a korábbi kijelölést megszüntessem.

    Nyomtatással viszont félsikert értem el. Kipróbáltam ez aze ExportAsFixedFormat-ot. Szépen le is generálja nekem a pdf-et és fel is rakja oda ahová kell, de hiába van beparaméterezve hogy vegye figyelembe az oldaltöréseket, nem úgy jön le a doksi, ahogy az a MS pdf printerével megszoktam és beállítottam. :(

    Sebaj, végül a select case-zel sikeresen megoldottad. :C

  • föccer
    nagyúr

    Csak azt találtam, hogy Array-be kell fogni őket. Mást nem találtam. Viszont az Array tömbjének az összeállítására vagy dinamikus tömböt lehetne használni, de mivel a 19 esetre minden esetben konstans választ kell adni, így egyszerűbbnek (számomra, mint botcsinálta ember) tűnik megcsinálni.

    Este találtam olya függvényt hogy ActiveSheet.ExportAsFixedFormat. Ezt akarom kipróbálni, hogy működik-e

    A select case az szépen működik. Nem túl elegáns, de hibátlan. Szépsége a dolognak, hogy ahogy pörgetem a for-t, az EE_szama ugye lehet több vagy kevesebb, ugyan akkor az új kijelölési array felülírja az előző ciklusban használt kijelölést. Tehát nem hozzáadja az előző kijelölésekhez, hanem új kijelölést állít be, így nem kell azzal foglalkozni, hogy a korábbi kijelölést megszüntessem.

    Nyomtatással viszont félsikert értem el. Kipróbáltam ez aze ExportAsFixedFormat-ot. Szépen le is generálja nekem a pdf-et és fel is rakja oda ahová kell, de hiába van beparaméterezve hogy vegye figyelembe az oldaltöréseket, nem úgy jön le a doksi, ahogy az a MS pdf printerével megszoktam és beállítottam. :(

  • föccer
    nagyúr

    Na és ha ciklusban nyomtatod a megfelelő lapokat?

    Egyszerre kell, hogy egy dokumentumként kerüljön lementésre. pdf-be megy ki. Ha külön-külön adom ki nyomtatási sorba, akkor különálló pdf lesz. Ezért kell kijelölni a WS-eket egyszerre,mert akkor összefűzve, 1 doksiban kerül lementésre.

    üdv,

  • Delila_1
    veterán

    Csak azt találtam, hogy Array-be kell fogni őket. Mást nem találtam. Viszont az Array tömbjének az összeállítására vagy dinamikus tömböt lehetne használni, de mivel a 19 esetre minden esetben konstans választ kell adni, így egyszerűbbnek (számomra, mint botcsinálta ember) tűnik megcsinálni.

    Este találtam olya függvényt hogy ActiveSheet.ExportAsFixedFormat. Ezt akarom kipróbálni, hogy működik-e

    Na és ha ciklusban nyomtatod a megfelelő lapokat?

  • föccer
    nagyúr

    Jó ötlet.
    Esetleg a kötelező 3 lap nyomtatása után egy for-next ciklust indíthatnál.

    Db = Sheets("Kezelő").Range("D23")
    For lap = 5 To 24
        If Mid(Sheets(lap).Name, 4, 2) * 1 <= Db Then
            'nyomtatás
        Else
            'exit for
        End If
    Next

    Biztosan van ennél egyszerűbb VBA-s megoldás az együttes lapok kijelölésére.

    Csak azt találtam, hogy Array-be kell fogni őket. Mást nem találtam. Viszont az Array tömbjének az összeállítására vagy dinamikus tömböt lehetne használni, de mivel a 19 esetre minden esetben konstans választ kell adni, így egyszerűbbnek (számomra, mint botcsinálta ember) tűnik megcsinálni.

    Este találtam olya függvényt hogy ActiveSheet.ExportAsFixedFormat. Ezt akarom kipróbálni, hogy működik-e

  • Delila_1
    veterán

    Hát, ahogy jöttem-mentem a városban kattogot az agyam rajta. Lehet hogy az egészet beteszem egy select case statementbe. Miáltal fixen 0-20 közötti szám jöhet a feltétel alapjául, és a munkalapok csak ezektől függenek, így lehet hogy ebben az esetben ez lesz az egyszerűbb...

    EE_szama = Sheets("KEZELŐ").Range("D23").Value

    For Akt_sor = 3 To 35
    Sheets("Kezelő").Range("D17").Value = Sheets("Kezelő").Cells(Akt_sor, 10)
    Select Case EE_szama
    Case 1
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1")).Select
    Case 2
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2")).Select
    ....
    ......
    .....
    ....
    Case Else
    Resume Next
    End Select

    ' és akkor ide jönne a nyomtatás.
    Next

    Jó ötlet.
    Esetleg a kötelező 3 lap nyomtatása után egy for-next ciklust indíthatnál.

    Db = Sheets("Kezelő").Range("D23")
    For lap = 5 To 24
        If Mid(Sheets(lap).Name, 4, 2) * 1 <= Db Then
            'nyomtatás
        Else
            'exit for
        End If
    Next

    Biztosan van ennél egyszerűbb VBA-s megoldás az együttes lapok kijelölésére.

  • föccer
    nagyúr

    Kicsit tovább vittem az előzőt, de megállt a tudományom. Addig jutottam, hogy összeáll az együttesen kijelölendő lapok listája. Hátha valaki tovább jut, esetleg egészen más úton.

    Sub arr()
        Dim lapszam As Integer, lap As Integer, lapok As String, tomb(29)
        
        For lap = 2 To 4
            tomb(lap - 2) = Sheets(lap).Name
        Next
        
        lapszam = Sheets("Kezelő").Range("D23")
        For lap = 5 To lapszam + 4
            If Mid(Sheets(lap).Name, 4, 2) * 1 <= lapszam Then
                tomb(lap - 2) = Sheets(lap).Name
            End If
        Next
        
        For lap = 0 To 29
            If tomb(lap) = "" Then Exit For
            lapok = lapok & """" & tomb(lap) & """"
            lapok = lapok & ","
        Next
        
        lapok = Left(lapok, Len(lapok) - 1)
        lapok = """" & lapok
        lapok = Right(lapok, Len(lapok) - 1)
        
        Debug.Print lapok
    End Sub

    Hát, ahogy jöttem-mentem a városban kattogot az agyam rajta. Lehet hogy az egészet beteszem egy select case statementbe. Miáltal fixen 0-20 közötti szám jöhet a feltétel alapjául, és a munkalapok csak ezektől függenek, így lehet hogy ebben az esetben ez lesz az egyszerűbb...

    EE_szama = Sheets("KEZELŐ").Range("D23").Value

    For Akt_sor = 3 To 35
    Sheets("Kezelő").Range("D17").Value = Sheets("Kezelő").Cells(Akt_sor, 10)
    Select Case EE_szama
    Case 1
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1")).Select
    Case 2
    Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2")).Select
    ....
    ......
    .....
    ....
    Case Else
    Resume Next
    End Select

    ' és akkor ide jönne a nyomtatás.
    Next

  • Delila_1
    veterán

    Sziasztok!

    Next round az automatizálásban :)

    Most automatikus nyomtatásban kérem segítségeteket.
    Van egy elemző xlsm, aminek van egy maréknyi füle Ami érdemleges az a "KEZELŐ"; mellette "TOP LISTÁK"; TOPELEMZES"; "VCBE"; valamint ez után 20 db, sorszámozott fül ami "EE_"& sorszám 1-20.ig nevél rendelkezik (EE_1; EE_2; EE_3; ... ; EE_20). Van ezen kívül még fül, de ezek egymás mellett vannak és sorrendjük nem változik.

    Kezelő fül J3:J35-ben vannak telephely megnevezések. KEZELŐ fül H3:H35-ben vannak a telephelyhez tartozó (leendő) fájl nevek, elérési úttal kialakítva. (soronként összetarozóan természetesen)

    A KEZELŐ fülön van egy gomb ami indít egy makrót, ami az alábbiakat kell, h tudja.
    - A KEZELŐ fül J3:J35 cellák értékeit sorba átmásolja a D17-be. Minden lépésnél újra kalkulálja a teljes munkafüzetet. (A KEZELŐ D23 cellájában kiszámolódik 1 darab szám, aminek értéke 0-20 között lesz.)
    - ha KEZELŐ D23 = 0, akkor lépjen a következő ciklusra és töltse be a következő telepet. HA KEZELŐ D23 > 0, akkor jelölje ki a "KEZELŐ"; "TOP LISTÁK"; TOPELEMZES"; "VCBE" fülek, valamint az EE_ kezdetű fülekből azokat, amelynek sorszáma kisebb mint a D23 cellába kikalkulált szám (pl D23 értéke:5 , akkor az EE_1; EE_2; EE_3; EE_4; EE_5 jön az első 4 mellé. Manuálisan ezt simán shift+katt-al intézem el úgy, hogy a KEZELŐTŐL ki vannak jelölve a fülek).
    - "Microsoft Print to PDF" mint alapértelmezett nyomtatóra küldje ki az anyagot csak aktív lapok, normál margók, nem méretezhető beállításokkal. Kimeneti fájl neve a ciklusban felhasznált telepnek megfelelő fájlnév a H oszlopból.

    Minden munkalapon be vannak állítva a nyomtatási területek és oldaltörések, így elvileg a kijelölt munkalapokra egy 6-44 oldal közötti pdf kerül fel a fájlszerver megfelelő könyvtárába, egymás után a 32 telephely adataival. Voilá :)

    A munkalapok többszörös kijelölésénél már el is akadtam és hirtelen google sem segített nekem, h hogy oldjam meg :(

    For Akt_sor = 3 To 5

    Sheets("Kezelő").Range("D17").Value = Sheets("Kezelő").Cells(Akt_sor, 10).Value 'telepek neveit másolja
    Sheets("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE").Select


    ' If Sheets("KEZELŐ").Range("D23").Value > 0 Then
    ' For Akt_WS = 1 To Sheets("KEZELŐ").Range("D23").Value
    ' Sheets("EE_" & Akt_WS).Select

    ' Next
    ' End If


    Köszönöm :R
    '


    Kesz_db = Kesz_db + 1

    Application.StatusBar = "Gyorsjelentések generálásának folyamata: " & Kesz_db & " db jelentés elkészült"
    Next

    oh, de hülye. Array() :D Akkor más csak össze kell tákolnom a listát.

    üdv, FG

    Kicsit tovább vittem az előzőt, de megállt a tudományom. Addig jutottam, hogy összeáll az együttesen kijelölendő lapok listája. Hátha valaki tovább jut, esetleg egészen más úton.

    Sub arr()
        Dim lapszam As Integer, lap As Integer, lapok As String, tomb(29)
        
        For lap = 2 To 4
            tomb(lap - 2) = Sheets(lap).Name
        Next
        
        lapszam = Sheets("Kezelő").Range("D23")
        For lap = 5 To lapszam + 4
            If Mid(Sheets(lap).Name, 4, 2) * 1 <= lapszam Then
                tomb(lap - 2) = Sheets(lap).Name
            End If
        Next
        
        For lap = 0 To 29
            If tomb(lap) = "" Then Exit For
            lapok = lapok & """" & tomb(lap) & """"
            lapok = lapok & ","
        Next
        
        lapok = Left(lapok, Len(lapok) - 1)
        lapok = """" & lapok
        lapok = Right(lapok, Len(lapok) - 1)
        
        Debug.Print lapok
    End Sub

  • Delila_1
    veterán

    Sziasztok!

    Next round az automatizálásban :)

    Most automatikus nyomtatásban kérem segítségeteket.
    Van egy elemző xlsm, aminek van egy maréknyi füle Ami érdemleges az a "KEZELŐ"; mellette "TOP LISTÁK"; TOPELEMZES"; "VCBE"; valamint ez után 20 db, sorszámozott fül ami "EE_"& sorszám 1-20.ig nevél rendelkezik (EE_1; EE_2; EE_3; ... ; EE_20). Van ezen kívül még fül, de ezek egymás mellett vannak és sorrendjük nem változik.

    Kezelő fül J3:J35-ben vannak telephely megnevezések. KEZELŐ fül H3:H35-ben vannak a telephelyhez tartozó (leendő) fájl nevek, elérési úttal kialakítva. (soronként összetarozóan természetesen)

    A KEZELŐ fülön van egy gomb ami indít egy makrót, ami az alábbiakat kell, h tudja.
    - A KEZELŐ fül J3:J35 cellák értékeit sorba átmásolja a D17-be. Minden lépésnél újra kalkulálja a teljes munkafüzetet. (A KEZELŐ D23 cellájában kiszámolódik 1 darab szám, aminek értéke 0-20 között lesz.)
    - ha KEZELŐ D23 = 0, akkor lépjen a következő ciklusra és töltse be a következő telepet. HA KEZELŐ D23 > 0, akkor jelölje ki a "KEZELŐ"; "TOP LISTÁK"; TOPELEMZES"; "VCBE" fülek, valamint az EE_ kezdetű fülekből azokat, amelynek sorszáma kisebb mint a D23 cellába kikalkulált szám (pl D23 értéke:5 , akkor az EE_1; EE_2; EE_3; EE_4; EE_5 jön az első 4 mellé. Manuálisan ezt simán shift+katt-al intézem el úgy, hogy a KEZELŐTŐL ki vannak jelölve a fülek).
    - "Microsoft Print to PDF" mint alapértelmezett nyomtatóra küldje ki az anyagot csak aktív lapok, normál margók, nem méretezhető beállításokkal. Kimeneti fájl neve a ciklusban felhasznált telepnek megfelelő fájlnév a H oszlopból.

    Minden munkalapon be vannak állítva a nyomtatási területek és oldaltörések, így elvileg a kijelölt munkalapokra egy 6-44 oldal közötti pdf kerül fel a fájlszerver megfelelő könyvtárába, egymás után a 32 telephely adataival. Voilá :)

    A munkalapok többszörös kijelölésénél már el is akadtam és hirtelen google sem segített nekem, h hogy oldjam meg :(

    For Akt_sor = 3 To 5

    Sheets("Kezelő").Range("D17").Value = Sheets("Kezelő").Cells(Akt_sor, 10).Value 'telepek neveit másolja
    Sheets("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE").Select


    ' If Sheets("KEZELŐ").Range("D23").Value > 0 Then
    ' For Akt_WS = 1 To Sheets("KEZELŐ").Range("D23").Value
    ' Sheets("EE_" & Akt_WS).Select

    ' Next
    ' End If


    Köszönöm :R
    '


    Kesz_db = Kesz_db + 1

    Application.StatusBar = "Gyorsjelentések generálásának folyamata: " & Kesz_db & " db jelentés elkészült"
    Next

    oh, de hülye. Array() :D Akkor más csak össze kell tákolnom a listát.

    üdv, FG


    Eddig jutottam el:

    Sub arr()
        Dim lapszam As Integer, lap As Integer
        Dim tomb(29)
        
        For lap = 2 To 4
            tomb(lap - 2) = Sheets(lap).Name
        Next
        
        lapszam = Sheets("Kezelő").Range("D23")
        For lap = 5 To lapszam + 4
            If Mid(Sheets(lap).Name, 4, 2) * 1 <= lapszam Then
                tomb(lap - 2) = Sheets(lap).Name
            End If
        Next 
    End Sub

    Innen valahogy be kell olvasnod az array-ba a tomb neveit, de most el kell rohannom, késésben vagyok. :(

  • föccer
    nagyúr

    Sziasztok!

    Next round az automatizálásban :)

    Most automatikus nyomtatásban kérem segítségeteket.
    Van egy elemző xlsm, aminek van egy maréknyi füle Ami érdemleges az a "KEZELŐ"; mellette "TOP LISTÁK"; TOPELEMZES"; "VCBE"; valamint ez után 20 db, sorszámozott fül ami "EE_"& sorszám 1-20.ig nevél rendelkezik (EE_1; EE_2; EE_3; ... ; EE_20). Van ezen kívül még fül, de ezek egymás mellett vannak és sorrendjük nem változik.

    Kezelő fül J3:J35-ben vannak telephely megnevezések. KEZELŐ fül H3:H35-ben vannak a telephelyhez tartozó (leendő) fájl nevek, elérési úttal kialakítva. (soronként összetarozóan természetesen)

    A KEZELŐ fülön van egy gomb ami indít egy makrót, ami az alábbiakat kell, h tudja.
    - A KEZELŐ fül J3:J35 cellák értékeit sorba átmásolja a D17-be. Minden lépésnél újra kalkulálja a teljes munkafüzetet. (A KEZELŐ D23 cellájában kiszámolódik 1 darab szám, aminek értéke 0-20 között lesz.)
    - ha KEZELŐ D23 = 0, akkor lépjen a következő ciklusra és töltse be a következő telepet. HA KEZELŐ D23 > 0, akkor jelölje ki a "KEZELŐ"; "TOP LISTÁK"; TOPELEMZES"; "VCBE" fülek, valamint az EE_ kezdetű fülekből azokat, amelynek sorszáma kisebb mint a D23 cellába kikalkulált szám (pl D23 értéke:5 , akkor az EE_1; EE_2; EE_3; EE_4; EE_5 jön az első 4 mellé. Manuálisan ezt simán shift+katt-al intézem el úgy, hogy a KEZELŐTŐL ki vannak jelölve a fülek).
    - "Microsoft Print to PDF" mint alapértelmezett nyomtatóra küldje ki az anyagot csak aktív lapok, normál margók, nem méretezhető beállításokkal. Kimeneti fájl neve a ciklusban felhasznált telepnek megfelelő fájlnév a H oszlopból.

    Minden munkalapon be vannak állítva a nyomtatási területek és oldaltörések, így elvileg a kijelölt munkalapokra egy 6-44 oldal közötti pdf kerül fel a fájlszerver megfelelő könyvtárába, egymás után a 32 telephely adataival. Voilá :)

    A munkalapok többszörös kijelölésénél már el is akadtam és hirtelen google sem segített nekem, h hogy oldjam meg :(

    For Akt_sor = 3 To 5

    Sheets("Kezelő").Range("D17").Value = Sheets("Kezelő").Cells(Akt_sor, 10).Value 'telepek neveit másolja
    Sheets("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE").Select


    ' If Sheets("KEZELŐ").Range("D23").Value > 0 Then
    ' For Akt_WS = 1 To Sheets("KEZELŐ").Range("D23").Value
    ' Sheets("EE_" & Akt_WS).Select

    ' Next
    ' End If


    Köszönöm :R
    '


    Kesz_db = Kesz_db + 1

    Application.StatusBar = "Gyorsjelentések generálásának folyamata: " & Kesz_db & " db jelentés elkészült"
    Next

    oh, de hülye. Array() :D Akkor más csak össze kell tákolnom a listát.

    üdv, FG

  • LilProphet90
    senior tag

    Sziasztok!

    Az egyik kolléganőnél probléma, hogy diagramkészítésekor mindig dollárban jeleníti meg a pénznemet. A forrás szintén HUF, és a diagram forintra való átállásakor jó, lementés, bezárás és ismételt megnyitás után utáni újból dollárban jeleníti meg.

    Több kolléganőnek továbbította, ők viszont forintban látják, rendesen.

    Tudja valaki, mi lehet az oka? Régióbeállítások megfelelőek.

    Nagyon köszönöm!

  • lappy
    őstag

    Szia!

    A korábbi kérdésre küldött talajnevezékes fázisdiagramot át tudod dobni újra?
    Örökkön örökké hála érte előre is! :R

    szinte esélytelen

  • aehike
    újonc

    Szia!

    A korábbi kérdésre küldött talajnevezékes fázisdiagramot át tudod dobni újra?
    Örökkön örökké hála érte előre is! :R

  • lappy
    őstag

    ctrl+0 bill kombó pediglen a legegyszerűbb ha valaki az aktuális dátumot akarja fixen berakni :K

    üdv, föccer

    Akkor a képletben csak a cella azonosítója kell es nem.kell dátum függvény

  • föccer
    nagyúr

    mert nincs megadva hogy honnan vegye az Év, Hónap, Napot ezt pótolni kell akkor jó lesz
    de ha csak egy dátum kell akkor a Ma függvény jó lesz Ma() így használhatod, de ez minden nap változik majd!!

    ctrl+0 bill kombó pediglen a legegyszerűbb ha valaki az aktuális dátumot akarja fixen berakni :K

    üdv, föccer

  • lappy
    őstag

    =HA(O5="Igen";DÁTUM(év;hónap;nap);"-")

    Mit írok el a képletben? Ha az O5 igen, akkor "#NÉV?" jön fel, ha viszont nem akkor beírja a "-"-et.

    Annyit szeretnék igazából, hogy ha az O5 Igen, akkor kiírja nekem a mellette lévő oszlopba azt a dátumot ami akkor van mikor beírtam, hogy "Igen".

    Így belegondolva, lehet, hogy eleve rossz vonalon indultam.. :))

    mert nincs megadva hogy honnan vegye az Év, Hónap, Napot ezt pótolni kell akkor jó lesz
    de ha csak egy dátum kell akkor a Ma függvény jó lesz Ma() így használhatod, de ez minden nap változik majd!!

  • zsoci0914
    csendes tag

    =HA(O5="Igen";DÁTUM(év;hónap;nap);"-")

    Mit írok el a képletben? Ha az O5 igen, akkor "#NÉV?" jön fel, ha viszont nem akkor beírja a "-"-et.

    Annyit szeretnék igazából, hogy ha az O5 Igen, akkor kiírja nekem a mellette lévő oszlopba azt a dátumot ami akkor van mikor beírtam, hogy "Igen".

    Így belegondolva, lehet, hogy eleve rossz vonalon indultam.. :))

  • lappy
    őstag

    Szia, köszi, de ez fizetős aplikáció, nincs esetleg ingyenes? Ez szerintem egy elég gyakori probléma, kell, hogy legyen rá megoldás. :D

    Akkor ez lesz a

  • n42
    tag

    Ezek közül lehet válogatni

    Szia, köszi, de ez fizetős aplikáció, nincs esetleg ingyenes? Ez szerintem egy elég gyakori probléma, kell, hogy legyen rá megoldás. :D

  • lappy
    őstag

    Sziasztok, segítséget szeretnék kérni egy Excel feladatban:

    Van három külön lapom, a három külön lapon van három táblázat és ezt a három táblázat adatait szeretném összevonni egy közös táblázatba a negyedik lapon, természetesen dinamikusan. :) Tehát a három táblát akarom szerkeszteni, új adatokat hozzáadni és azt szeretném, ha a negyedik lapon automatikusan (vagy legalább adatok frissítése megnyomásával) frissülne. A negyedik táblázatból pedig egy kimutatást szeretnék készíteni.

    Lehetséges?

    https://1drv.ms/x/s!Ajul2ZoI4t5mgYZ_aqQiGnozKXGkNw?e=xq0Cga

    Ezek közül lehet válogatni

  • n42
    tag

    Sziasztok, segítséget szeretnék kérni egy Excel feladatban:

    Van három külön lapom, a három külön lapon van három táblázat és ezt a három táblázat adatait szeretném összevonni egy közös táblázatba a negyedik lapon, természetesen dinamikusan. :) Tehát a három táblát akarom szerkeszteni, új adatokat hozzáadni és azt szeretném, ha a negyedik lapon automatikusan (vagy legalább adatok frissítése megnyomásával) frissülne. A negyedik táblázatból pedig egy kimutatást szeretnék készíteni.

    Lehetséges?

    https://1drv.ms/x/s!Ajul2ZoI4t5mgYZ_aqQiGnozKXGkNw?e=xq0Cga

  • cekkk
    veterán

    Szia,

    Egyéb lehetőségek a már kapott megoldáson túl.

    1. Az adatsoron állva Beszúrás menü, Kimutatás. Erről érdemes előbb interneten/youtubeon leirasokat nézned, de röviden a sorok dobozba a neveket, az értékbe pedig az összeadni kívánt oszlopot kell húzni.
    2. MS365-os verziót használva pedig az EGYEDI függvénnyel ki tudod nyerni a neveket egy új helyre és mellé a már használt SZUMHA jöhet.

    Üdv

    Köszönöm szépen a válaszod.

  • Mutt
    senior tag

    Sziasztok!

    Amennyiben valaki otthonosan mozog az adatbázis függvények terén, segítene?
    Az alábbi 4 példát kellene adatbázis függvényekkel megoldani (az adatbázis táblának csak egy részét mutatom, mert csak a metodika érdekel. Adatbázis függvény nélkül meg tudom oldani, de nem úgy kérik). :R

    Szia,

    Csináltam egy egyszerű adatbázist, ami az A21:I26 tartományban van.

    A kérdésekre a megoldások pedig így néznek ki:

    Az adatbázis függvényeknek 3 paramétere van, az első az adatbázis helye, a második hogy melyik oszlopból akarod az értéket megkapni (itt az adatbázis első sora az oszlop azonosítója azt kell megadni - lehet gépelni illetve cellahivatkozással megadni - pl. "Cég neve" kell és nem az hogy A-oszlop) az utolsó pedig hogy mely sorokra kell szűrni az adatbázisban. Ez az utolsó ami kicsit nehézkes, de egyszerűen csak ad meg az oszlop nevét amely alapján szűrni akarsz és alá az értéket (ami tartalmazhat operátorokat, pl. >10 vagy helyettesítő karaktereket pl. B*). Ha több értéket akarsz megadni, akkor egymás alá írd őket (ekkor VAGY kapcsolat lesz).

    Az utolsó 2 kérdésre a legkönyebb a válasz, nézd a legutolsót, ahol csak a székhelyre kell szűrni. Megadtam az oszlop nevét és alá, hogy az 1-es érdekel minket (Budapest). Az AB.DARAB2 függvénynek pedig ez a két cella lesz az utolsó paramétere.

    A 3-as kérdésben két feltétel szerint kell szűrni, székhely és ágazat. Egy sorban adtam meg a szűrési feltéleket, ezek ÉS kapcsolatot jelentenek vagyis csak azok a sorok lesznek érvényések ahol mindkét feltétel egyszerre teljesül. (Ha nem egy sorba írtam volna, akkor VAGY kapcsolata lesz, próbáld ki.)

    A többi kérdés már ezek kaptafája, de itt annyi hogy van egy köztes lépés mert meg kell kapni előbb egy eredményt a végső lekérdezéshez. Igazából ha nem lenne kötelező csak adatbázis függvény használata, akkor az első kérdésnél a C3-as mezőben egy =MAX(H22:H26) képlet elég lenne és nem kellene a AB.MAX képlet.

    Youtube-on Mynda szerintem jól elmagyarázza az egészet.

    Még annyi hogy az első képletekben még az oszlop nevét közvetlenül megadtam ("Cég neve"), de a többinél már csak cella hivatkozást használtam. Te döntöd el melyik szimpi.

    üdv

  • Fferi50
    Topikgazda

    Sziasztok!

    Amennyiben valaki otthonosan mozog az adatbázis függvények terén, segítene?
    Az alábbi 4 példát kellene adatbázis függvényekkel megoldani (az adatbázis táblának csak egy részét mutatom, mert csak a metodika érdekel. Adatbázis függvény nélkül meg tudom oldani, de nem úgy kérik). :R

    Szia!
    Külön tartományban kell meghatározni a kritériumokat, az alap adatoktól elkülönítve.
    Szerintem érdemes megnézni a hozzá tartozó súgót. Pl. az AB.MAX függvényt elkezded, az FX gombot megnyomod az állapotsorban és a párbeszéd ablakban rákattintasz a Súgó a függvényről szövegre.

    Üdv.

  • Otisz
    őstag

    Sziasztok!

    Amennyiben valaki otthonosan mozog az adatbázis függvények terén, segítene?
    Az alábbi 4 példát kellene adatbázis függvényekkel megoldani (az adatbázis táblának csak egy részét mutatom, mert csak a metodika érdekel. Adatbázis függvény nélkül meg tudom oldani, de nem úgy kérik). :R

  • Mutt
    senior tag

    Köszönöm!
    És hogyan tudum kigyűjteni egy új oszlopba a neveket, úgy hogy töbször ne forduljon elő és ne manuálisan kelljen megcsinálni?

    Szia,

    Egyéb lehetőségek a már kapott megoldáson túl.

    1. Az adatsoron állva Beszúrás menü, Kimutatás. Erről érdemes előbb interneten/youtubeon leirasokat nézned, de röviden a sorok dobozba a neveket, az értékbe pedig az összeadni kívánt oszlopot kell húzni.
    2. MS365-os verziót használva pedig az EGYEDI függvénnyel ki tudod nyerni a neveket egy új helyre és mellé a már használt SZUMHA jöhet.

    Üdv

  • cekkk
    veterán

    Szia!
    "hogyan tudum kigyűjteni egy új oszlopba a neveket, úgy hogy töbször ne forduljon elő és ne manuálisan kelljen megcsinálni"
    Átmásolod az összes nevet az új oszlopba, majd Adatok - Ismétlődések eltávolítása.
    Sajnos új név hozzáadása esetén kell egy kis munka még. Fkeres függvénnyel meg kell nézni, hogy létezik-e már az egyedi oszlopban, ha nem akkor egyszerűen át kell írni oda, ha igen, akkor nincs teendő.
    Több név hozzáadásakor pedig meg kell ismételni az ismétlődések eltávolítását.
    A nevek melletti képletet nem kell megváltoztatnod, csak lehúznod az új nevekhez.
    Üdv.

    Köszönöm

  • Fferi50
    Topikgazda

    Köszönöm!
    És hogyan tudum kigyűjteni egy új oszlopba a neveket, úgy hogy töbször ne forduljon elő és ne manuálisan kelljen megcsinálni?

    Szia!
    "hogyan tudum kigyűjteni egy új oszlopba a neveket, úgy hogy töbször ne forduljon elő és ne manuálisan kelljen megcsinálni"
    Átmásolod az összes nevet az új oszlopba, majd Adatok - Ismétlődések eltávolítása.
    Sajnos új név hozzáadása esetén kell egy kis munka még. Fkeres függvénnyel meg kell nézni, hogy létezik-e már az egyedi oszlopban, ha nem akkor egyszerűen át kell írni oda, ha igen, akkor nincs teendő.
    Több név hozzáadásakor pedig meg kell ismételni az ismétlődések eltávolítását.
    A nevek melletti képletet nem kell megváltoztatnod, csak lehúznod az új nevekhez.
    Üdv.

  • Delila_1
    veterán

    Köszönöm!
    És hogyan tudum kigyűjteni egy új oszlopba a neveket, úgy hogy töbször ne forduljon elő és ne manuálisan kelljen megcsinálni?

    Szívesen. :)

  • cekkk
    veterán

    Szia!
    Nézd meg a SZUMHA függvényt, az kell ide.

    Köszönöm!
    És hogyan tudum kigyűjteni egy új oszlopba a neveket, úgy hogy töbször ne forduljon elő és ne manuálisan kelljen megcsinálni?

  • Delila_1
    veterán

    Sziasztok!
    Egy kis segítséget szeretnék kérni.
    Van egy táblázatom amibe van két oszlop legyen A nevek B értékek, A oszlopban nevek vannak amelyek ismétlődnek a B oszlopban pedig a nevekhez tartozó érték. Hogyan tudom össze adni a nevekhez tartozó értéket úgy, hogy egy új oszlopba kiírja magától, hogy zsolt 345 majd péter 456 stb. Ha megnézi az a oszlpot ott megtalálja az összes zsoltot akkor kiírja majd megnézi a következő nevet és azt is így kirja. Érthető vagyok, vagy nagyon rosszul fogalmaztam? :)

    Szia!
    Nézd meg a SZUMHA függvényt, az kell ide.

  • cekkk
    veterán

    Sziasztok!
    Egy kis segítséget szeretnék kérni.
    Van egy táblázatom amibe van két oszlop legyen A nevek B értékek, A oszlopban nevek vannak amelyek ismétlődnek a B oszlopban pedig a nevekhez tartozó érték. Hogyan tudom össze adni a nevekhez tartozó értéket úgy, hogy egy új oszlopba kiírja magától, hogy zsolt 345 majd péter 456 stb. Ha megnézi az a oszlpot ott megtalálja az összes zsoltot akkor kiírja majd megnézi a következő nevet és azt is így kirja. Érthető vagyok, vagy nagyon rosszul fogalmaztam? :)

  • Talala
    senior tag

    Szia!
    Cells(Target.Row, "A").Value=Application.WorksheetFunction.WeekNum(Date,1)
    Üdv.

    Közben sikerült rájönni nekem is. Köszönöm.:R

  • Fferi50
    Topikgazda

    Sajnos nem sikerül ezt makróba illesztenem. Jelenleg így néz ki a makró, amiben a képletet illeszti be.
    Tudnál segiteni, hogyan kéne ezt beillesztenem?
    link

    Szia!
    Cells(Target.Row, "A").Value=Application.WorksheetFunction.WeekNum(Date,1)
    Üdv.

  • Talala
    senior tag

    Szia!
    Ne a függvényt illeszd be, hanem az értéket:
    pl. Range("A2").Value=Application.WorksheetFunction.WeekNum(Date,1)
    Üdv.

    Sajnos nem sikerül ezt makróba illesztenem. Jelenleg így néz ki a makró, amiben a képletet illeszti be.
    Tudnál segiteni, hogyan kéne ezt beillesztenem?
    link

  • Fferi50
    Topikgazda

    Sajnos igy is újra számolódik, mert ugyan makróval, de egy függvényt illesztettem be. Hogyan tudnam megoldani, hogy ne számolódjon újra, a következő hétbe lépve is annak a hétnek a száma legyen a cellába amikor adat került abba a sorba.

    Szia!
    Ne a függvényt illeszd be, hanem az értéket:
    pl. Range("A2").Value=Application.WorksheetFunction.WeekNum(Date,1)
    Üdv.

  • Talala
    senior tag

    Ha makróba illesztem a hét száma függvényt, az működhet? Ha kerül adat a 3. oszlop sorába, akkor adott sor "A" oszlopába beilleszti a hét számát.

    Sajnos igy is újra számolódik, mert ugyan makróval, de egy függvényt illesztettem be. Hogyan tudnam megoldani, hogy ne számolódjon újra, a következő hétbe lépve is annak a hétnek a száma legyen a cellába amikor adat került abba a sorba.

  • Mutt
    senior tag

    Sziasztok!

    Szeretnék egy térképre vetített animációt készíteni. A lényege, hogy vannak gépjárművek, amik minden nap adott időben, adott helyen tartózkodnak. Mondhatni menetrend szerint közlekednek.
    Szeretném megjeleníteni az összes gépjármű tervezett mozgását egy térképes animációban.
    Excel táblában megvan minden jármű adott időben, adott tartózkodási helye óra/perc és megállóhelyek GPS koordinátái.
    Láttam már excel alapú hasonló animációt, csak nem tudom a bővítmény vagy akármi nevét, ami kell hozzá.

    Van ötletek, hogy hogy lehetne ezt megoldani? :F

    Szia,

    Nagy segítséget nem tudok adni, de anno csináltam pár animációt Excelben VBA-val.
    https://github.com/viszi/codes/tree/master/Excel/Fun oldalon van pár, Clock/Maze/Langton's Ant/Game of life.
    Makróval lehet csinálni vmit, de nem igazán evidens mivel az Excelben a megjelenítést befolyásolja hogy a gépnek illetve az Excelnek milyen műveleteket kell elvégeznie párhuzamosan.
    A legtöbb esetben csak annyi kell, hogy mindig újabb adatokat adsz a grafikon alapját adó táblázathoz és az Excel ezt megjeleníti. A gond az időzítés, mert egy Sleep vagy Appliction.Wait nem mindig tart ugyanaddig.

    Bővítményt nem találtam ami igazán segít, olyanok vannak amelyek mozgó GIF-ekket használnak, de azt előbb elő kellene állítani hogy lehessen használni.

    Az Excel nem igazán erre van kihegyezve, a 3Ds térképpel pedig én eddig csak szenvedtem.
    Szerintem más eszközt kell keresned.

    üdv

  • AxBattler
    félisten

    Üdv!
    Excel még mindig inkább 1 szálon terheli a processzort, vagy sikerült normálisan megoldaniuk a többszálas munkamenetet/számítást?
    Notivásárlás előtt állok, és ez is erős szempont... :B

  • vilmaboy
    őstag

    Sziasztok!

    Szeretnék egy térképre vetített animációt készíteni. A lényege, hogy vannak gépjárművek, amik minden nap adott időben, adott helyen tartózkodnak. Mondhatni menetrend szerint közlekednek.
    Szeretném megjeleníteni az összes gépjármű tervezett mozgását egy térképes animációban.
    Excel táblában megvan minden jármű adott időben, adott tartózkodási helye óra/perc és megállóhelyek GPS koordinátái.
    Láttam már excel alapú hasonló animációt, csak nem tudom a bővítmény vagy akármi nevét, ami kell hozzá.

    Van ötletek, hogy hogy lehetne ezt megoldani? :F

  • lac14548
    aktív tag

    Szia!
    A jelenlegi oszlop mellé segédoszlopba beviszed a számokat 1-től (gyorsan így megy: 1, 2 ezután kijelölöd ezt a két cellát és lehúzod addig, ameddig adatod van.)
    Az így létrejött két oszlopot kijelölöd, másolás, majd az eddigi adataid alá beilleszted.
    Ezután a teljes 2 oszlop kijelölésével Adatok - rendezés - a számos oszlop szerint - figyelj a fejlécre, ha nincs ne legyen bepipálva.
    A segédoszlopot kitörlöd és kész a feladat.
    Üdv.

    köszönöm!!! működik!

    valami sokkal bonyolultabbra gondoltam megoldásként :)

  • Fferi50
    Topikgazda

    Hello,

    Hogyan lehet gyorsan megoldani a következőt?

    Van egy oszlop az excelben kb. 300 cellányi tartalom (betűk számok vegyesen).
    Azt szeretném, ha minden duplán szerepelne egymás alatt!

    Pl.:

    jelenleg:

    fdsfdg
    3243
    fsf
    hzhz
    rtr

    Ami kellene gombnyomásra, hogy ne kelljen egyesével (kimásol, cella beszúr - az alatta lévőket lejjeb tolja, beilleszt):

    fdsfdg
    fdsfdg
    3243
    3243
    fsf
    fsf
    hzhz
    hzhz
    rtr
    rtr

    kösz,

    Szia!
    A jelenlegi oszlop mellé segédoszlopba beviszed a számokat 1-től (gyorsan így megy: 1, 2 ezután kijelölöd ezt a két cellát és lehúzod addig, ameddig adatod van.)
    Az így létrejött két oszlopot kijelölöd, másolás, majd az eddigi adataid alá beilleszted.
    Ezután a teljes 2 oszlop kijelölésével Adatok - rendezés - a számos oszlop szerint - figyelj a fejlécre, ha nincs ne legyen bepipálva.
    A segédoszlopot kitörlöd és kész a feladat.
    Üdv.

  • lac14548
    aktív tag

    Hello,

    Hogyan lehet gyorsan megoldani a következőt?

    Van egy oszlop az excelben kb. 300 cellányi tartalom (betűk számok vegyesen).
    Azt szeretném, ha minden duplán szerepelne egymás alatt!

    Pl.:

    jelenleg:

    fdsfdg
    3243
    fsf
    hzhz
    rtr

    Ami kellene gombnyomásra, hogy ne kelljen egyesével (kimásol, cella beszúr - az alatta lévőket lejjeb tolja, beilleszt):

    fdsfdg
    fdsfdg
    3243
    3243
    fsf
    fsf
    hzhz
    hzhz
    rtr
    rtr

    kösz,

  • lappy
    őstag

    Ha makróba illesztem a hét száma függvényt, az működhet? Ha kerül adat a 3. oszlop sorába, akkor adott sor "A" oszlopába beilleszti a hét számát.

    persze hogy működhet

  • Talala
    senior tag

    És makróval ez hogy nézne ki?:F Az is jó lenne.
    Dátumot tudok kiíratni, de a hét számát nem tudom hogy kéne. Plusz cellát nem akarok ez miatt (pl ahol az aktuális dátum szerepel és abból számoltatni)

    Ha makróba illesztem a hét száma függvényt, az működhet? Ha kerül adat a 3. oszlop sorába, akkor adott sor "A" oszlopába beilleszti a hét számát.

  • Talala
    senior tag

    na ezt kérdeztem így csak markóval lehet

    És makróval ez hogy nézne ki?:F Az is jó lenne.
    Dátumot tudok kiíratni, de a hét számát nem tudom hogy kéne. Plusz cellát nem akarok ez miatt (pl ahol az aktuális dátum szerepel és abból számoltatni)

  • lappy
    őstag

    A hét száma amint beíródott egy cellába, akkor az onnantól kezdve ne változzon. Az adott sorban történő adat rögzítésének időpontját hivatott jelezni.
    Amit irtal képlet, az jelenleg jónak tűnik, amennyiben jövőhéten nem vált át 22-re.

    na ezt kérdeztem így csak markóval lehet

  • Talala
    senior tag

    =HA(ÜRES(A2);" ";HÉT.SZÁMA(MA()))
    viszont kérdés, hogy ez állandó maradjon ez a hét száma vagy változhat?
    ha állandó kell akkor nem jó a képletes megoldás

    A hét száma amint beíródott egy cellába, akkor az onnantól kezdve ne változzon. Az adott sorban történő adat rögzítésének időpontját hivatott jelezni.
    Amit irtal képlet, az jelenleg jónak tűnik, amennyiben jövőhéten nem vált át 22-re.

  • lappy
    őstag

    Sziasztok.
    Egy egyszerű dologban kérném a segitségeteket. Excelben makróval hogyan tudom kiíratni az aktuális hét számát egy adott cellába, ha a mellette lévőbe adat kerül?
    Pl. A2-be adat kerül, akkor A1-be jelenjen meg az aktuális hét száma, ha pedig törlődik az A2-ből az adat akkor az A1 is legyen üres.
    Függvénnyel is jó, ha megoldható.
    Köszönöm :R

    =HA(ÜRES(A2);" ";HÉT.SZÁMA(MA()))
    viszont kérdés, hogy ez állandó maradjon ez a hét száma vagy változhat?
    ha állandó kell akkor nem jó a képletes megoldás

  • Talala
    senior tag

    Sziasztok.
    Egy egyszerű dologban kérném a segitségeteket. Excelben makróval hogyan tudom kiíratni az aktuális hét számát egy adott cellába, ha a mellette lévőbe adat kerül?
    Pl. A2-be adat kerül, akkor A1-be jelenjen meg az aktuális hét száma, ha pedig törlődik az A2-ből az adat akkor az A1 is legyen üres.
    Függvénnyel is jó, ha megoldható.
    Köszönöm :R

  • Reinhardt
    őstag

    Koszi.

    A problemam vegulis nem is ez volt, hanem hogy a lista amit a sales teamtol kapunk tartalmaz par hibas emailt:

    Patrick valamiert tartalmaz egy ' jelet ami filterrel nem keresheto.

    Ez rogton latszik, mert nem valtozik at linknek.
    Kiprobaltam amit javasoltal, atmasoltam minden email cimet egy uj lapra, de csak ertekkent masolva nem vitte at a '-t, szoval csak visszamasoltam az eredetire es a problemam megoldodott.

  • lappy
    őstag

    Hali

    Van egy tablazatom a lakok adataival.
    Az egyik oszlop az email cim.
    Ha F2-vel belepek a cellaba es entert nyomok utanna a cella klikkelheto lesz, es tudok nekik rogton emailt kuldeni.
    Tobb mint 600 sorom van, at lehet valahogy formazni egyszerre az oszlopot? Vagy 600+ F2+Entert kell nyomnom?

    például így

  • Reinhardt
    őstag

    Hali

    Van egy tablazatom a lakok adataival.
    Az egyik oszlop az email cim.
    Ha F2-vel belepek a cellaba es entert nyomok utanna a cella klikkelheto lesz, es tudok nekik rogton emailt kuldeni.
    Tobb mint 600 sorom van, at lehet valahogy formazni egyszerre az oszlopot? Vagy 600+ F2+Entert kell nyomnom?

  • rvn_10
    senior tag

    Szia!
    Az INDEX - HOL.VAN függvény kombó, illetve újabb Excel verziókban az XKERES függvény használható.
    Üdv.

    X keressel megvan, köszi

  • Fferi50
    Topikgazda

    ÜDv. Van az A tablában a W oszlopban egy képlettel összefűzött szöveg(akár 50 karakter is lehet) a B táblában szintén van egy összefűzött szöveg az AA oszlopan.

    Egy függvény kellene ami az A táblában lévő szöveg értékét keresi a B tábla érékei között és ahol a 2 érték megegyezik ott a B tábla E oszlopának értékét kapom vissza az A tábla X oszlopában.

    Köszönöm a segítséget.

    Szia!
    Az INDEX - HOL.VAN függvény kombó, illetve újabb Excel verziókban az XKERES függvény használható.
    Üdv.

  • rvn_10
    senior tag

    ÜDv. Van az A tablában a W oszlopban egy képlettel összefűzött szöveg(akár 50 karakter is lehet) a B táblában szintén van egy összefűzött szöveg az AA oszlopan.

    Egy függvény kellene ami az A táblában lévő szöveg értékét keresi a B tábla érékei között és ahol a 2 érték megegyezik ott a B tábla E oszlopának értékét kapom vissza az A tábla X oszlopában.

    Köszönöm a segítséget.

  • föccer
    nagyúr

    Szia!
    A fileokat begyűjtő ciklus elé:
    On Error Resume Next
    A Workbooks.Open utasítás után:
    If Err=0 Then
       ' Ide jönnek a sikeres megnyitás utáni műveletek
    a fájlbegyűjtő ciklus Next utasítása elé (ami most az utolsó sor)
    Else
      ' Ide jön a hibakezelő 2 sorod +
        Err=0
    End If
    A folyamat (makró) legvégén pedig On Error Goto 0 - a hibakezelés visszaadása a VBA-nak.
    Üdv.

    Sima liba. Azt gondoltam, hogy ennél furfangosabb a dolog, minthogy egy sima if then else-be bele kell fogni. :R

    Köszönöm, ismét tanultam

    üdv, föccer

  • Fferi50
    Topikgazda

    Jó reggelt!

    On Error hibakezelés kérdésem következik. :)

    Ha egy for ciklusban nyitom a fájlokat, de a fájl nem található, akkor azt On Error-ral hogy kezeljem le?

    Azt már megtaláltam, hogy hogyan lehet megvédeni a kódot, hogy ne álljon le és lépjen a következő ciklusra, de szeretném, ha a makrót futtató táblázatban kapjak erről egy log-ot.

    A védendő ciklus:

    For i = 2 To Filok_szama + 1
    Akt_file = Sheets("Minta_gyujto_alapadatok").Cells(i, 1).Value 'innen jönnek a fájl nevek
    Akt_file_cime = Sheets("Minta_gyujto_alapadatok").Cells(i, 3).Value ' itt vannak a teljes elérési úttal a fájlok

    Workbooks.Open _ ' ebben történő hibát kellene most kezelnem
    Filename:=Akt_file_cime, _
    UpdateLinks:=False, _
    ReadOnly:=False, _
    IgnoreReadOnlyRecommended:=True

    Akt_minta_darab = Workbooks(Akt_file).Sheets("Munka1").Range("N1").Value
    Keresett_sorazonosito = Akt_minta_darab
    Akt_sor = 0

    If Akt_minta_darab = 0 Then ' Ha nincs a megnyitott fájlban újonnan kiértékeledő adat, akkor ezt log-ba lerakja a célfájl megfelelő részére. X5 cellában van hogy eddig mennyi log jelzés volt
    Cel_ws.Cells(Cel_ws.Range("X5").Value + 6, 24) = Akt_file
    Cel_ws.Cells(Cel_ws.Range("X5").Value + 5, 25) = "Új minta darabszáma = 0"

    End If

    For j = 1 To Akt_minta_darab
    Akt_sor = Workbooks(Akt_file).Sheets("Munka1").Cells(Keresett_sorazonosito, 18).Value
    Cel_ws.Range(Cel_ws.Cells(Gyujtott_minta_darab + 2, 1), Cel_ws.Cells(Gyujtott_minta_darab + 2, 20)).Value = Workbooks(Akt_file).Sheets("Üzem").Range(Workbooks(Akt_file).Sheets("Üzem").Cells(Akt_sor, 1), Workbooks(Akt_file).Sheets("Üzem").Cells(Akt_sor, 20)).Value
    Workbooks(Akt_file).Sheets("Üzem").Cells(Akt_sor, 21).Value = "igen"
    Workbooks(Akt_file).Sheets("Üzem").Cells(Akt_sor, 22).Value = ("Automatán beolvasva - " & Now)
    Gyujtott_minta_darab = Gyujtott_minta_darab + 1
    Keresett_sorazonosito = Keresett_sorazonosito - 1
    Next

    Workbooks(Akt_file).Close _
    SaveChanges:=True

    Next

    Ennek a két sornak kellene futnia, On Error-ra.

    Cel_ws.Cells(Cel_ws.Range("X5").Value + 6, 24) = Akt_file
    Cel_ws.Cells(Cel_ws.Range("X5").Value + 5, 25) = "Forrás fájl nem található"

    Köszönöm a segítségeteket ismét :R

    Szia!
    A fileokat begyűjtő ciklus elé:
    On Error Resume Next
    A Workbooks.Open utasítás után:
    If Err=0 Then
       ' Ide jönnek a sikeres megnyitás utáni műveletek
    a fájlbegyűjtő ciklus Next utasítása elé (ami most az utolsó sor)
    Else
      ' Ide jön a hibakezelő 2 sorod +
        Err=0
    End If
    A folyamat (makró) legvégén pedig On Error Goto 0 - a hibakezelés visszaadása a VBA-nak.
    Üdv.

  • föccer
    nagyúr

    Jó reggelt!

    On Error hibakezelés kérdésem következik. :)

    Ha egy for ciklusban nyitom a fájlokat, de a fájl nem található, akkor azt On Error-ral hogy kezeljem le?

    Azt már megtaláltam, hogy hogyan lehet megvédeni a kódot, hogy ne álljon le és lépjen a következő ciklusra, de szeretném, ha a makrót futtató táblázatban kapjak erről egy log-ot.

    A védendő ciklus:

    For i = 2 To Filok_szama + 1
    Akt_file = Sheets("Minta_gyujto_alapadatok").Cells(i, 1).Value 'innen jönnek a fájl nevek
    Akt_file_cime = Sheets("Minta_gyujto_alapadatok").Cells(i, 3).Value ' itt vannak a teljes elérési úttal a fájlok

    Workbooks.Open _ ' ebben történő hibát kellene most kezelnem
    Filename:=Akt_file_cime, _
    UpdateLinks:=False, _
    ReadOnly:=False, _
    IgnoreReadOnlyRecommended:=True

    Akt_minta_darab = Workbooks(Akt_file).Sheets("Munka1").Range("N1").Value
    Keresett_sorazonosito = Akt_minta_darab
    Akt_sor = 0

    If Akt_minta_darab = 0 Then ' Ha nincs a megnyitott fájlban újonnan kiértékeledő adat, akkor ezt log-ba lerakja a célfájl megfelelő részére. X5 cellában van hogy eddig mennyi log jelzés volt
    Cel_ws.Cells(Cel_ws.Range("X5").Value + 6, 24) = Akt_file
    Cel_ws.Cells(Cel_ws.Range("X5").Value + 5, 25) = "Új minta darabszáma = 0"

    End If

    For j = 1 To Akt_minta_darab
    Akt_sor = Workbooks(Akt_file).Sheets("Munka1").Cells(Keresett_sorazonosito, 18).Value
    Cel_ws.Range(Cel_ws.Cells(Gyujtott_minta_darab + 2, 1), Cel_ws.Cells(Gyujtott_minta_darab + 2, 20)).Value = Workbooks(Akt_file).Sheets("Üzem").Range(Workbooks(Akt_file).Sheets("Üzem").Cells(Akt_sor, 1), Workbooks(Akt_file).Sheets("Üzem").Cells(Akt_sor, 20)).Value
    Workbooks(Akt_file).Sheets("Üzem").Cells(Akt_sor, 21).Value = "igen"
    Workbooks(Akt_file).Sheets("Üzem").Cells(Akt_sor, 22).Value = ("Automatán beolvasva - " & Now)
    Gyujtott_minta_darab = Gyujtott_minta_darab + 1
    Keresett_sorazonosito = Keresett_sorazonosito - 1
    Next

    Workbooks(Akt_file).Close _
    SaveChanges:=True

    Next

    Ennek a két sornak kellene futnia, On Error-ra.

    Cel_ws.Cells(Cel_ws.Range("X5").Value + 6, 24) = Akt_file
    Cel_ws.Cells(Cel_ws.Range("X5").Value + 5, 25) = "Forrás fájl nem található"

    Köszönöm a segítségeteket ismét :R

  • Delila_1
    veterán

    https://www.youtube.com/watch?v=O3Q77f6uJ_A

    A videóban az összegző sorokat és oszlopot egyszerűbben is elő lehet állítani.
    Kijelölölm a B2:I7 tartományt, és a Kezdőlap | Szerkesztés | ∑ jelre kattintva más kész is.

  • lappy
    őstag

    Sziasztok!
    Az lenne a kérésem, egy olyan segítséghez, hogy a beírt érték után a cella színe megváltozzon. Pl. ha az érték 5-nél kisseb akkor legyen piros, ha 5-7 között legyen zöld, és ha 7-nél nagyobb akkor sárga. Ez vonatkozzon az egész munkalapra, vagy csak egy kijelőlt részére. Nem tudom hogy ez csak makróval oldható meg, vagy lehet e a formátumok vagy feltételek beállításával is.
    Előre is köszönöm a segítséget, Laci

    Feltételes formázás

  • lacipapi
    csendes tag

    Sziasztok!
    Az lenne a kérésem, egy olyan segítséghez, hogy a beírt érték után a cella színe megváltozzon. Pl. ha az érték 5-nél kisseb akkor legyen piros, ha 5-7 között legyen zöld, és ha 7-nél nagyobb akkor sárga. Ez vonatkozzon az egész munkalapra, vagy csak egy kijelőlt részére. Nem tudom hogy ez csak makróval oldható meg, vagy lehet e a formátumok vagy feltételek beállításával is.
    Előre is köszönöm a segítséget, Laci

  • MEKK
    aktív tag

    Sziasztok!
    Az lenne a kérésem, hogy van egy táblázat, és a benne lévő cellák szíínét szeretném változtatni a beírt értéktől függően. Pl. a beírt érték kisseb 5-nél akkor a cella szine legyen piros, ha 5és 7 között van akkor legyen zöld, ha 7-nél nagyobb akkor legyen sárga. Ez vonatkozzon a munkalap összes cellájára.
    Előre is köszönöm a segítséget, Laci

    https://www.youtube.com/watch?v=O3Q77f6uJ_A

  • lacipapi
    csendes tag

    Sziasztok!
    Az lenne a kérésem, hogy van egy táblázat, és a benne lévő cellák szíínét szeretném változtatni a beírt értéktől függően. Pl. a beírt érték kisseb 5-nél akkor a cella szine legyen piros, ha 5és 7 között van akkor legyen zöld, ha 7-nél nagyobb akkor legyen sárga. Ez vonatkozzon a munkalap összes cellájára.
    Előre is köszönöm a segítséget, Laci

  • föccer
    nagyúr

    Szia!
    Esetleg kipróbálhatnád a következőt:
    A másolandó sorok mellé teszel egy jelet (pl. x) az utolsó oszlop után.
    Ezután autoszűrő a teljes tartományra - x -re.
    Ezután másolás:
    Pl. Range($A$1:$X200).SpecialCells(xlCelltypeVisible).Copy Destination:=A célterület első cellája.
    Ha esetleg így túl lassúnak találod, akkor lehet a látható tartományt területenként is másolni:
    Dim terulet As Range
    For Each terulet In Range($A$1:$X200).SpecialCells(xlCelltypeVisible).Areas
           terulet.Copy Destination:=a következő üres sor
           következő üres sor meghatározása
    Next
    Ezután kitörlöd az x-eket és kész, vagy bezárod mentés nélkül a forrás fájlt.
    Üdv.

    Bonyolultnak tűnik. Ha már megvannak a sor azonosítók, akkor sokkal egyszerűbb végig menni. Extrém esetben is ~100 sort kell átrakni 1-1 fájlból. Az egész éves "termés" 4500-5000 sor az összes fájlban. Eddig fájlonként, évente 1-2 alkalommal volt frissítve, manuálisan elbabráltam vele. Most havonta 1-2 alkalommal kell végig fésülni az összes fájlt. Eddig alkalmanként 10-50 sort szedtem be egy fájlból, most már 0-10-et. 10xére nőtt a munka, amit kiváltanék :D

    Egyébként megvan a kód, fut is szépen. Hibakezelés lehetne még benne, de majd egyszer. :D

    Most még a forrás fájlokat kell átalakítanom, uniformizálnom, immáron az éles könyvtárban. Elmolyolok vele, oszt ami eddig volt 1-1,5 nap, most lemegy 15 perc alatt. Kár, hogy a felszabadult időt nem tölthetem a családommal :D

    Köszi még egyszer a segítséget.

    üdv, föccer

  • Fferi50
    Topikgazda

    Din tömb kérdését megoldottam. Ahol a forrás fájlban kigyűjtöm a szükséges sorokat, megfordítottam a sorrendet és vissza felé olvasom be az adatokat és előlről töltöm fel. Így a sorrend marad, de nem okoz gondot, hogy a forrás sorok végéről mindig eltünk 1-1 sor azonosító, mert mindig "előtte haladok" 1 sorral. Nem túl elegáns megoldás, de hibátlan :D

    üdv, föcc

    Szia!
    Esetleg kipróbálhatnád a következőt:
    A másolandó sorok mellé teszel egy jelet (pl. x) az utolsó oszlop után.
    Ezután autoszűrő a teljes tartományra - x -re.
    Ezután másolás:
    Pl. Range($A$1:$X200).SpecialCells(xlCelltypeVisible).Copy Destination:=A célterület első cellája.
    Ha esetleg így túl lassúnak találod, akkor lehet a látható tartományt területenként is másolni:
    Dim terulet As Range
    For Each terulet In Range($A$1:$X200).SpecialCells(xlCelltypeVisible).Areas
           terulet.Copy Destination:=a következő üres sor
           következő üres sor meghatározása
    Next
    Ezután kitörlöd az x-eket és kész, vagy bezárod mentés nélkül a forrás fájlt.
    Üdv.

  • föccer
    nagyúr

    Ismét köszönöm a segítséget. :R Minden nap tanul az ember.

    A másolandó soron nem egymás alatt vannak. Kigyűjtöm függvénnyel azokat a sorokat, amik kellenek nekem, és ezeket a sor számokat fogom berakni az Akt_sor változóban

    Apropó, még egy kérdés. Olvasgattam, hogy a VBA a dinamikus tömböket nem szereti és valami más trükk van a használatára. Próbáltam is a Dim Sorazonositok As New List(Of Integer) kifejezéssel megnyitni a tömböt, amibe bepakolnám az azonosítókat, de nem tetszik neki. :(

    Most csináltam egy statikus tömböt és oda rakom fel a forrás fájl megnyitása után a szükséges azonosítókat (a szükséges sorazonosítókat minden forrás fájl, saját maga kalkulálja egy elrejtett munkalapon. 35 ilyen betöntő fájl van, amit a kollégák töltögetnek az ügyviteli rendben.

    Igen, tudom hogy mennyivel jobb lenne célszoftverrel, de az nincs :D

    Din tömb kérdését megoldottam. Ahol a forrás fájlban kigyűjtöm a szükséges sorokat, megfordítottam a sorrendet és vissza felé olvasom be az adatokat és előlről töltöm fel. Így a sorrend marad, de nem okoz gondot, hogy a forrás sorok végéről mindig eltünk 1-1 sor azonosító, mert mindig "előtte haladok" 1 sorral. Nem túl elegáns megoldás, de hibátlan :D

    üdv, föcc

  • föccer
    nagyúr

    Szia!
    Csak egy gondolat:
    Amikor egy új fájlt nyitsz meg, akkor az lesz az aktuális munkafüzet. Mivel azt írod, hogy egymás után több fájlt is nyitsz, nagy eséllyel nem a cél fájlod az aktív workbook amikor ehhez a sorhoz ér a makró.
    Nézd meg, hogy a hibaüzenet esetében melyik munkafüzet aktív.
    Mivel a Gyujtott_mintavetelek munkalap előtt nem írsz munkafüzet nevet, így azt az aktuális munkafüzetben keresi - de mivel az aktív munkafüzet az éppen megnyitott forrás fájl, persze nem találja.
    Megoldás: a forrás fájl megnyitása után aktíváld ismét a cél fájlt - vagy a munkalapnál használj teljes nevet.
    Célszerűnek találnám, ha változóba tennéd a cél munkafüzetet és akkor egyszerűbb lenne a hivatkozás rá:
    Mielőtt megnyitnád az első forrás fájlt:
    dim celwsh as Worksheet
    set celwsh=Sheets("Gyujtott_mintavetelek")
    'A mutatott sor pedig:
    celwsh.Range(celwsh.Cells(Gyujtott_minta_darab + 2, 1), celwsh.Cells(Gyujtott_minta_darab + 2, 20)).Value
    Ebben az esetben nem szükséges aktívvá tenni a cél munkafüzetet, mivel a változó tartalmazza a szükséges információkat.
    Egyébként egy területet egyben is átmásolhatsz, nem kell soronként menni.
    A forrás munkafüzetet is egyszerűbben tudod kezelni, ha változóba teszed a fájl megnyitása után. Egyszerűbb a kód írás is.
    Üdv.

    Ismét köszönöm a segítséget. :R Minden nap tanul az ember.

    A másolandó soron nem egymás alatt vannak. Kigyűjtöm függvénnyel azokat a sorokat, amik kellenek nekem, és ezeket a sor számokat fogom berakni az Akt_sor változóban

    Apropó, még egy kérdés. Olvasgattam, hogy a VBA a dinamikus tömböket nem szereti és valami más trükk van a használatára. Próbáltam is a Dim Sorazonositok As New List(Of Integer) kifejezéssel megnyitni a tömböt, amibe bepakolnám az azonosítókat, de nem tetszik neki. :(

    Most csináltam egy statikus tömböt és oda rakom fel a forrás fájl megnyitása után a szükséges azonosítókat (a szükséges sorazonosítókat minden forrás fájl, saját maga kalkulálja egy elrejtett munkalapon. 35 ilyen betöntő fájl van, amit a kollégák töltögetnek az ügyviteli rendben.

    Igen, tudom hogy mennyivel jobb lenne célszoftverrel, de az nincs :D

  • Fferi50
    Topikgazda

    Sziasztok!

    Korábban itt nyújtott segítséget szeretném adaptálni.

    Egyik fájlból a másikba akarok másolni.

    A cél fájl futtatja a makrót, és a "Gyujtott_mintavetelek" munkalap-ra kell kirakni, soronként. Az aktuális sort a Gyujtott_minta_darab változó tartja számon. Nyilván ez léptetve van. 0-tól indul és a 2- sortül kell kiírtnom.

    A forrás fájl neve az Akt_file változó tárolja (egymás után több fájlt nyitok meg) A forrás fájl "Üzem" nevű munkalapjáról 1-20 oszlopok kellenek. Az, hogy a forrás munkalap melyik sora kell éppen, az pedig az Akt_sor változó hozza.

    Sheets("Gyujtott_mintavetelek").Range(Sheets("Gyujtott_mintavetelek").Cells(Gyujtott_minta_darab + 2, 1), Sheets("Gyujtott_mintavetelek").Cells(Gyujtott_minta_darab + 2, 20)).Value = Workbooks(Akt_file).Sheets("Üzem").Range(Workbooks(Akt_file).Sheets("Üzem").Cells(Akt_sor, 1), Workbooks(Akt_file).Sheets("Üzem").Cells(Akt_sor, 20)).Value

    Nem találom benne a hibát ellenben nem akar lefutni, out of range hibát dob. Az Akt_sor biztosan felveszi a megfelelő értéket, mielőtt ez a sor furna.

    MEg tudnátok mondani hogy hol a hiba?

    Köszi :R

    Szia!
    Csak egy gondolat:
    Amikor egy új fájlt nyitsz meg, akkor az lesz az aktuális munkafüzet. Mivel azt írod, hogy egymás után több fájlt is nyitsz, nagy eséllyel nem a cél fájlod az aktív workbook amikor ehhez a sorhoz ér a makró.
    Nézd meg, hogy a hibaüzenet esetében melyik munkafüzet aktív.
    Mivel a Gyujtott_mintavetelek munkalap előtt nem írsz munkafüzet nevet, így azt az aktuális munkafüzetben keresi - de mivel az aktív munkafüzet az éppen megnyitott forrás fájl, persze nem találja.
    Megoldás: a forrás fájl megnyitása után aktíváld ismét a cél fájlt - vagy a munkalapnál használj teljes nevet.
    Célszerűnek találnám, ha változóba tennéd a cél munkafüzetet és akkor egyszerűbb lenne a hivatkozás rá:
    Mielőtt megnyitnád az első forrás fájlt:
    dim celwsh as Worksheet
    set celwsh=Sheets("Gyujtott_mintavetelek")
    'A mutatott sor pedig:
    celwsh.Range(celwsh.Cells(Gyujtott_minta_darab + 2, 1), celwsh.Cells(Gyujtott_minta_darab + 2, 20)).Value
    Ebben az esetben nem szükséges aktívvá tenni a cél munkafüzetet, mivel a változó tartalmazza a szükséges információkat.
    Egyébként egy területet egyben is átmásolhatsz, nem kell soronként menni.
    A forrás munkafüzetet is egyszerűbben tudod kezelni, ha változóba teszed a fájl megnyitása után. Egyszerűbb a kód írás is.
    Üdv.

  • föccer
    nagyúr

    Sziasztok!

    Korábban itt nyújtott segítséget szeretném adaptálni.

    Egyik fájlból a másikba akarok másolni.

    A cél fájl futtatja a makrót, és a "Gyujtott_mintavetelek" munkalap-ra kell kirakni, soronként. Az aktuális sort a Gyujtott_minta_darab változó tartja számon. Nyilván ez léptetve van. 0-tól indul és a 2- sortül kell kiírtnom.

    A forrás fájl neve az Akt_file változó tárolja (egymás után több fájlt nyitok meg) A forrás fájl "Üzem" nevű munkalapjáról 1-20 oszlopok kellenek. Az, hogy a forrás munkalap melyik sora kell éppen, az pedig az Akt_sor változó hozza.

    Sheets("Gyujtott_mintavetelek").Range(Sheets("Gyujtott_mintavetelek").Cells(Gyujtott_minta_darab + 2, 1), Sheets("Gyujtott_mintavetelek").Cells(Gyujtott_minta_darab + 2, 20)).Value = Workbooks(Akt_file).Sheets("Üzem").Range(Workbooks(Akt_file).Sheets("Üzem").Cells(Akt_sor, 1), Workbooks(Akt_file).Sheets("Üzem").Cells(Akt_sor, 20)).Value

    Nem találom benne a hibát ellenben nem akar lefutni, out of range hibát dob. Az Akt_sor biztosan felveszi a megfelelő értéket, mielőtt ez a sor furna.

    MEg tudnátok mondani hogy hol a hiba?

    Köszi :R

  • TillaT
    tag

    Szia!
    A feltételes formázás "viselkedése" külön tanulmányokat érdemelne, pl. amikor beszúrsz a formázott területre, akkor rögtön többszörözi a szabályokat, terület bontással.
    A 2. képen látható szabály "logikája" a hivatkozásban keresendő:
    $CQ7 - > a CQ rögzített oszlopból a 7. sorban levő cella. Mivel a formázás a 7-től 10-ig sorra vonatkozik, ezért minden sorban a CQ oszlop megfelelő - 7-től 10-ig - cellája lesz a kiindulási alap. A nem rögzített sor miatt a szabályban levő függvény "mozog" a formázott területtel együtt.
    Ugyanezt tapasztalhatod a normál Excel munkalapon is - a képletek a sor/oszlop rögzítésnek megfelelően "mozognak". Szerintem érdemes a hivatkozások magyarázatát átnézni az Excelben.
    Üdv.

    Szia, köszönöm szépen.
    "A nem rögzített sor miatt a szabályban levő függvény "mozog" a formázott területtel együtt."
    Igen, ez világos. Az értetlenkedésem inkább amiatt van/volt, hogy amíg a "normál Excel munkalapon" a cellákba írt képletek más cellákba történő átmásolásakor a fogadó cellákban 'testre szabódnak", azaz a célcellákban látható képletekben is megjelennek az adott célcella azonosítói (amennyiben nem rögzítettek az oszlop és sorazonosítók), addig a feltételes formázás céltartományba történő átmásolásakor a formázási képletek csak a céltartomány első cellájában veszik fel a cella azonosítókat, és a tartomány többi cellájában is az első célcella azonosítóit tartalmazó képletek lesznek.

    Nekem -tudatlannak- az lenne a logikus, hogy a céltartomány minden cellájában vegyék fel a célcellák saját azonosítóit a bemásolt formázási képletek, és az érvényesség csak mindig az adott célcellára vonatkozzon. :)

    Persze -elfogadás és megszokás után- azzal sincs bajom, hogy ez nem így van, hanem a képletek célcellákra történő testreszabása helyett a formázási tartomány megadásával van lehetőség a képlet érvényességének kiterjesztésére.
    Ha nem lennék olyan merev, biztosan nem értetlenkednék és akadnék fel ezen. :)

    "Szerintem érdemes a hivatkozások magyarázatát átnézni az Excelben."
    Így teszek.

  • Fferi50
    Topikgazda

    A logikáját nem értem.
    Számomra az lenne a logikus, hogy az 'A6' formátumának a többi cellába való bemásolása után a formázó képletek mindig az adott cellára vonatkoznának.
    Tehát az 'A7' cella formátumának beállítása -képlet szerint is- az 'AT7', 'CQ7', 'CL7' cellák tartalmától tartalmától függ. És így tovább az 'A' oszlopbelim cellák formázása mindig az azonos sorban lévő 'AT', 'CQ', 'CL' oszlopokban lévő cellák tartalmától.
    Tehát, ha a képletek a bemásolás után mindig az utolsó két kép szerint alakulnának.

    Azt nehéz felfognom, hogy a 2. kép szerinti bemásolás esetén minden cellában ugyanaz a képlet, és a hatást (formázást) az érvényesség kiterjesztésével éri el a program.
    Az is segítség nekem, ha ajánlotok a témában valami releváns szakirodalmat.
    Előre is köszönöm!

    Szia!
    A feltételes formázás "viselkedése" külön tanulmányokat érdemelne, pl. amikor beszúrsz a formázott területre, akkor rögtön többszörözi a szabályokat, terület bontással.
    A 2. képen látható szabály "logikája" a hivatkozásban keresendő:
    $CQ7 - > a CQ rögzített oszlopból a 7. sorban levő cella. Mivel a formázás a 7-től 10-ig sorra vonatkozik, ezért minden sorban a CQ oszlop megfelelő - 7-től 10-ig - cellája lesz a kiindulási alap. A nem rögzített sor miatt a szabályban levő függvény "mozog" a formázott területtel együtt.
    Ugyanezt tapasztalhatod a normál Excel munkalapon is - a képletek a sor/oszlop rögzítésnek megfelelően "mozognak". Szerintem érdemes a hivatkozások magyarázatát átnézni az Excelben.
    Üdv.

  • TillaT
    tag

    ... és még mindig feltételes formázás. ... és még mindig kínok.
    Az 'A6' cella formázottsága a 'AT6', 'CQ6', 'CL6', tartalmától függ.
    Az 'A7' cella formázottsága a 'AT7', 'CQ7', 'CL7', tartalmától függ.
    ...
    Az 'A10' cella formázottsága a 'AT10', 'CQ10', 'CL10', tartalmától függ.
    ...
    ...
    Az 'A100' cella formázottsága a 'AT100', 'CQ100', 'CL100', tartalmától függ.

    - Az 'A6' cellában beállítok néhány feltételt az 'A6' cella formázására.

    - Majd a formázás másoló ikonra 1x kattintva másolom az 'A6' cella formázottságát, és beillesztem az 'A7:A10' tartományba. Ezután az 'A7:A10' bármelyik cellájára kattintva a feltételes formázás menü választása esetén az alábbi beállítást látom.

    - Ha a formázás másolását és beillesztését úgy oldom meg, hogy az 'A6' cellán állva 2x kattintok a formázás másolására, majd egyesével illesztem be a formátumot az 'A7', 'A8', 'A9', 'A10' cellákba, akkor pedig az alábbi állapotokat kapom.

    Mindegyik esetben az elvártak szerint működik a feltételes formázás. MIÉRT?

    A logikáját nem értem.
    Számomra az lenne a logikus, hogy az 'A6' formátumának a többi cellába való bemásolása után a formázó képletek mindig az adott cellára vonatkoznának.
    Tehát az 'A7' cella formátumának beállítása -képlet szerint is- az 'AT7', 'CQ7', 'CL7' cellák tartalmától tartalmától függ. És így tovább az 'A' oszlopbelim cellák formázása mindig az azonos sorban lévő 'AT', 'CQ', 'CL' oszlopokban lévő cellák tartalmától.
    Tehát, ha a képletek a bemásolás után mindig az utolsó két kép szerint alakulnának.

    Azt nehéz felfognom, hogy a 2. kép szerinti bemásolás esetén minden cellában ugyanaz a képlet, és a hatást (formázást) az érvényesség kiterjesztésével éri el a program.
    Az is segítség nekem, ha ajánlotok a témában valami releváns szakirodalmat.
    Előre is köszönöm!

  • TillaT
    tag

    ... és még mindig feltételes formázás. ... és még mindig kínok.
    Az 'A6' cella formázottsága a 'AT6', 'CQ6', 'CL6', tartalmától függ.
    Az 'A7' cella formázottsága a 'AT7', 'CQ7', 'CL7', tartalmától függ.
    ...
    Az 'A10' cella formázottsága a 'AT10', 'CQ10', 'CL10', tartalmától függ.
    ...
    ...
    Az 'A100' cella formázottsága a 'AT100', 'CQ100', 'CL100', tartalmától függ.

    - Az 'A6' cellában beállítok néhány feltételt az 'A6' cella formázására.

    - Majd a formázás másoló ikonra 1x kattintva másolom az 'A6' cella formázottságát, és beillesztem az 'A7:A10' tartományba. Ezután az 'A7:A10' bármelyik cellájára kattintva a feltételes formázás menü választása esetén az alábbi beállítást látom.

    - Ha a formázás másolását és beillesztését úgy oldom meg, hogy az 'A6' cellán állva 2x kattintok a formázás másolására, majd egyesével illesztem be a formátumot az 'A7', 'A8', 'A9', 'A10' cellákba, akkor pedig az alábbi állapotokat kapom.

    Mindegyik esetben az elvártak szerint működik a feltételes formázás. MIÉRT?

  • TillaT
    tag

    Egy megoldás:

    Private Sub Worksheet_Change(ByVal Target As Range)
        If Len(Target.Value) = 3 Then
            Application.EnableEvents = False
            Target = Target & ""
            Range(Target.Address).Characters(2, 1).Font.ColorIndex = 3
            Application.EnableEvents = True
        End If
    End Sub

    Szám esetén az Excel azonnal dátummá alakítja a beírt értéket, ezért kell szöveggé alakítani.

    Köszönöm, hasonlóan oldottam meg én is. :R

  • Delila_1
    veterán

    Köszönöm Delila! Akkor nem úszom meg és bővítenem kell a munkalapok "Private Sub Worksheet_Change ..." eseménykezelőihez rendelt műveleteket. :)

    Egy megoldás:

    Private Sub Worksheet_Change(ByVal Target As Range)
        If Len(Target.Value) = 3 Then
            Application.EnableEvents = False
            Target = Target & ""
            Range(Target.Address).Characters(2, 1).Font.ColorIndex = 3
            Application.EnableEvents = True
        End If
    End Sub

    Szám esetén az Excel azonnal dátummá alakítja a beírt értéket, ezért kell szöveggé alakítani.

Új hozzászólás Aktív témák