Excel VBA worksheet másolás után munkalap sorszám növelése

Excel VBA worksheet másolás után munkalap sorszám növelése
2020-06-04T14:28:35+02:00
2020-07-29T20:35:08+02:00
2022-10-15T21:26:19+02:00
Muscularblade
Sziasztok!

Segítséget szeretnék kérni az alábbiakhoz:

Van egy Excel táblázatom, aminek a jobb felső sarkában (U1  cella) van egy sorszám. Makróval szeretném azt megcsináltatni, hogy másolja le az első munkalapot és a másolás után a másolat jobb felső sarkában (U1 cellában) lévő sorszámot növelje 1-el, utána az első munkalapot zárja (védje) le.

Esetleg gombnyomáshoz köthető e? pl. egy ÚJ gomb megnyomására működjön.

Előre is köszi a segítséget
Mutasd a teljes hozzászólást!

  • Dim Nr As Integer Nr = Sheets("Munka1").Range("U1") Sheets("Munka1").Unprotect ("jelszo") Sheets("Munka1").Copy After:=Sheets(1) Sheets("Munka1").Range("U1") = Nr + 1 Sheets("Munka1").Protect ("jelszo")
    Mutasd a teljes hozzászólást!
  • Kedves Rookarege!

    van egy kis probléma a makróval ugyanis miután lezárja az 1es munkalapot a fenti sorszámot átirja 1-esre ami induló esetben 2020000 volt, illetve ami nem derült ki a kérésemből, ezt nem egyszer szeretném megcsinálni hanem többször is. Tehát mindig az utolsó munkalapot másolja és utána zárja le amiről másolva lett.

    Azért köszi a törődést :)
    Mutasd a teljes hozzászólást!
  • Szia Muscularblade!

    Most láttam a kérdésedet, a mellékelt táblázattal is válaszolok.
    Meg itt is - prózában

    Sub MunkalapMásolásSorszámozás()

        Application.ScreenUpdating = False
    'ne villogj!
        Dim munkalapSorszám As Long
    ' fontos, hogy Long legyen
        ActiveSheet.Name = "eredeti"
    'így később egyértelmű lesz, hogy honnan hová tartunk
        Sheets("eredeti").Copy before:=Sheets(1)
    'így nem kell a listavégén keresgélni a legfrissebb munkalapot
    'mindig szemelőtt lesz
        ActiveSheet.Name = "másolat"
    'csak hogy tudjuk, honnan hová tartunk
        munkalapSorszám = Range("U1").Value
        Sheets("eredeti").Select
        Sheets("eredeti").Name = munkalapSorszám
    'késöbb milyen jó lesz a munkalapfülön látni a sorszámot :)
        ActiveSheet.Protect
        
        Sheets("másolat").Select
        Range("U1").Value = munkalapSorszám + 1
        Sheets("másolat").Name = munkalapSorszám + 1
        
        Application.ScreenUpdating = True
    'na lássuk! mit csináltunk?
    End Sub

    Szerintem erre gondoltál.

    üdvözlettel
    verax
    Mutasd a teljes hozzászólást!
  • Szia!

    Ilyen kódot javasolnék:

    Sub Start() eddig = 0 For Each lap In Worksheets eddig = Application.WorksheetFunction.Max(eddig, lap.Range("u1")) Next Worksheets(1).Copy after:=Worksheets(Worksheets.Count) ' végére lap után teszi be ActiveSheet.Unprotect ' Ha az első lap le van védve Range("U1") = eddig + 1 ActiveSheet.Protect End Sub
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd