› Sviluppare funzionalita su Microsoft Office con VBA › Busta Paga: Miglioramento Office 2016
-
AutoreArticoli
-
Buongiorno, ho un piccolo problema che non riesco a risolvere. Ho creato un foglio Busta Paga con un pulsante collegato ad una macro che dovrebbe; a) duplicare il foglio con con una box per scrivere il nome del nuovo foglio; b) cancellare il dato che c'è nella cella b9 che serve nel gestire i giorni della settimana; c) imputare la nuova data: esempio febbraio; ho creato, leggendo un pò sul web, una sequenza vba ma non arrivo a risolvere il problema;
Dim nuovoFoglio As Worksheet
Dim nomeFoglio As String
Dim cellaDaCancellare As Range' Imposta il foglio corrente
Set foglioCorrente = ActiveSheet' Chiede all'utente di inserire un nome per il nuovo foglio
nomeFoglio = InputBox("Inserisci il nome per il nuovo foglio:", "Nuovo Foglio")' Crea una copia del foglio corrente
If nomeFoglio <> "" Then
ActiveSheet.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = nomeFoglioEnd If
' Cambia il nome del nuovo foglio
On Error Resume Next ' per gestire eventuali errori nel caso il nome già esista
nuovoFoglio.Name = nomeFoglio
On Error GoTo 0 ' ripristina gestione errore standard' Imposta la cella da cancellare
Set cellaDaCancellare = nuovoFoglio.Range("b9")' Cancella il contenuto della cella
cellaDaCancellare.ClearContents' Chiede all'utente di inserire una data
nuovoFoglio.Range("B9").Value = InputBox("Inserisci la data (formato gg/mm/aaaa):", "Inserisci Data")End Sub
Spero in un aiuto per capire dove commetto l'errore e trovare la giusta soluzione.
Grazie
Allegati:
You must be logged in to view attached files.Prova
Option Explicit Sub DuplicaFoglio() Dim nomeFoglio As String Dim Num As Long Inizio: ' Chiede all'utente di inserire un nome per il nuovo foglio Num = InputBox("Inserisci il NUMERO del mese. Ex 1,2,3 ecc:", "Nuovo Foglio") nomeFoglio = Evaluate("=VLOOKUP(" & Num & ",{1,""Gennaio"";2,""Febbraio"";3,""Marzo"";4,""Aprile"";5,""Maggio"";6,""Giugno"";7,""Luglio"";8,""Agosto"";9,""Settembre"";10,""Ottobre"";11,""Novembre"";12,""Dicembre""},2,FALSE)") If IsError(Evaluate("'" & nomeFoglio & "'!A1")) Then 'Non esiste. Crea il foglio corrente ActiveSheet.Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = nomeFoglio ' Cancella il contenuto della cella ed inserire una data Sheets(nomeFoglio).Range("b9") = Num & "/" & "1/" & Year(Date) Else MsgBox "Foglio già esistente": GoTo Inizio End If End SubErrore mio, non verifico i dati che vengono immessi. Usa questa
Option Explicit Sub DuplicaFoglio() Dim nomeFoglio As String Dim Num As Variant ' Chiede all'utente di inserire un nome per il nuovo foglio Num = InputBox("Inserisci il NUMERO del mese. Ex 1,2,3 ecc:", "Nuovo Foglio") If IsNumeric(Num) Or Num = 0 Or Num > 12 Then MsgBox "Numero-carattere errato": Exit Sub nomeFoglio = Evaluate("=VLOOKUP(" & Num & ",{1,""Gennaio"";2,""Febbraio"";3,""Marzo"";4,""Aprile"";5,""Maggio"";6,""Giugno"";7,""Luglio"";8,""Agosto"";9,""Settembre"";10,""Ottobre"";11,""Novembre"";12,""Dicembre""},2,FALSE)") If IsError(Evaluate("'" & nomeFoglio & "'!A1")) Then 'Non esiste. Crea il foglio corrente ActiveSheet.Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = nomeFoglio ' Cancella il contenuto della cella ed inserire una data Sheets(nomeFoglio).Range("b9") = Num & "/" & "1/" & Year(Date) End If End Subciao, ho messo questo di codice e mi da errore nell'inserimento del mese.
Mettendo "date" lui prende l'anno corrente mentre devo partire dal 2022.
Riguardo il nome della busta, errore mio a non speecificare, devo fare due fogli, uno come si vede e uno denominato "busta paga "mese" 2022 orario
Allegati:
You must be logged in to view attached files.Prova
Option Explicit Sub DuplicaFoglio() Dim nomeFoglio1 As String, nomeFoglio2 As String, FgL As String Dim Num As Variant Dim Anno As Long FgL = ActiveSheet.Name ' Chiede all'utente di inserire un nome per il nuovo foglio Num = InputBox("Inserisci il NUMERO del mese. Ex 1,2,3 ecc:", "Nuovo Foglio") If IsNumeric(Num) And (Num > 0 And Num <= 12) Then nomeFoglio1 = Evaluate("=VLOOKUP(" & Num & ",{1,""Gennaio"";2,""Febbraio"";3,""Marzo"";4,""Aprile"";5,""Maggio"";6,""Giugno"";7,""Luglio"";8,""Agosto"";9,""Settembre"";10,""Ottobre"";11,""Novembre"";12,""Dicembre""},2,FALSE)") If IsError(Evaluate("'" & nomeFoglio1 & "'!A1")) Then Anno = InputBox("Inserisci l'anno. Ex 2023,2024,ecc ecc:", "Anno") 'Non esiste. Crea il foglio corrente ed inserire una data Sheets(FgL).Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = nomeFoglio1 Sheets(nomeFoglio1).Range("b9") = Num & "/" & "1/" & Anno 'inserisco l'altro foglio "busta paga "mese" 2022 orario nomeFoglio2 = "busta paga " & nomeFoglio1 & " " & Anno & " orario" Sheets(FgL).Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = nomeFoglio2 Sheets(nomeFoglio2).Range("b9") = Num & "/" & "1/" & Anno End If Else MsgBox "Numero-carattere errato" End If End SubDopo la tua modifica funziona tutto perfettamente. Ho creato una Busta in Bianco al fine di utilizzare il codice che hai creato.
Adesso metterò dei dati e formule che saranno utilizzate in ogni foglio, ho aggiunto dei calcoli che servono al fine della compilazione che verranno riportati nella busta stessa e ti posto il file. Se ritieni di darmi qualche consiglio sono grato di leggerlo.
Grazie ancora per il tuo aiuto.
Allegati:
You must be logged in to view attached files. -
AutoreArticoli
