[VBA]-Excel - kopie listu s datem

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod urbi92 22. 9. 2015 17:07

Zdravím ,
Nemohl by mi prosím pomoct někdo s kódem pro makro ?

Tvořím dispečerský sešit. Každý jednotlivý list má fungovat jako jednotlivý den ve kterém přiřazuji z výběru pracovníka a k němu následně stroj a výbavu . Následně také odpracované hodiny atpd...

1)
Uvízl jsem momentálně na makru(tlačítku), které mi bude tvořit kopii předešlého dne .
Mám list pojmenovaný 22.9.2015 a a já bych chtěl "kliknout" na tlačítko "novýDen" a on mi automaticky vytvořil kopii listu dne 22.9.2015 a přiřadil mu datum 23.9.2015 a samozřejmě zachoval všechny vzorce ,data, makra.
2)
Uvažuji jak vyřešit to automatické přiřazování datumu abych byl schopen popřípadě si přidat dva dny dopředu - protože se třeba zrovna o víkendu nepracuje nebo je státní svátek a já potřebuji přeskočit dané datum .

Za každou radu budu strašně moc rád :oboze :oboze

děkuji
urbi92
Kolemjdoucí

Odeslat příspěvekod KačerT 23. 9. 2015 14:03

Ahoj,
1) v excelu se dá udělat kopie listu, tak si ji naklikej makrem.
2) existuje funkce workday
KačerT
Junior

Odeslat příspěvekod urbi92 23. 9. 2015 15:36

Děkuju za reakci .
Taky vím, že můžu udělat kopii listu pomocí "záznamu makra" , ale asi dělám něco špatně protože mi na daný nový list už nezkopíruje makro které jsem použil pro vytvoření kopie.

Uvažoval jsem i nad nějakým takovým to řešením , že bych si datum sám přidával ale bohužel mi zase jen přidává nový list a né kopii . Snad příjdu jak pozměnit kód aby mi tvoři tu moji požadvanou kopii ...

Tady je zmiňovaný kód :

Sub add_sheet1()
Dim x As Worksheet
Dim sh_name As String

sh_name = InputBox("Enter SheetName", "New Sheet", "")
If sh_name = "" Then Exit Sub

sh_name = "DM " & sh_name

On Error Resume Next

With ThisWorkbook
Set x = .Sheets(sh_name)
If Err = 9 Then
.Worksheets.Add after:=Worksheets(.Worksheets.Count)
.ActiveSheet.Name = sh_name
Else
MsgBox "The sheet """ & sh_name & """ already exists!", 48, "ERROR"
End If
End With

On Error GoTo 0

End Sub
urbi92
Kolemjdoucí

Odeslat příspěvekod KačerT 24. 9. 2015 09:36

Rozumím. To asi excel neudělá, že zkopíruje i makro z toho listu.
Tak to udělej tak, že to makro pro kopírování nebudeš mít na každém tom listě, to je stejně nesystémové. Udělej si nějaký hlavní list, odkud to budeš řídit. Vytvoř si tam formulář, kde dáš na výběr název kopírovaného listu a datum. V tom formuláři můžeš nabídnout poslední list, resp. list s tím nejvyšším datumem a datum můžeš nabídnout právě ten následující pracovní den.
KačerT
Junior


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků