Informazioni: postmaster@valcos47.it

Excel.run(async (context) => { // Ottieni il foglio di lavoro attivo const workbook = context.workbook; const sheet = workbook.worksheets.add("Tabella Mensile"); sheet.activate(); // Chiedi all'utente il numero di colonne const numColonne = parseInt(prompt("Quante colonne vuoi aggiungere (oltre alla colonna delle date)?", "3")); // Chiedi i nomi delle colonne let nomiColonne = []; for (let i = 0; i < numColonne; i++) { const nome = prompt(`Inserisci il nome della colonna ${i + 1}:`, `Colonna ${i + 1}`); nomiColonne.push(nome); } // Determina la data di inizio (primo giorno del mese successivo) const today = new Date(); const nextMonth = new Date(today.getFullYear(), today.getMonth() + 1, 1); const startDate = new Date(nextMonth.getFullYear(), nextMonth.getMonth(), 1); // Genera un array di date per il mese const dates = []; const month = startDate.getMonth(); let currentDate = new Date(startDate); while (currentDate.getMonth() === month) { dates.push(currentDate.toLocaleDateString()); currentDate.setDate(currentDate.getDate() + 1); } // Inserisci le date nella prima colonna const dateRange = sheet.getRange(`A2:A${dates.length + 1}`); dateRange.values = dates.map((date) => [date]); // Inserisci i nomi delle colonne nella riga 1 const headerRange = sheet.getRange(`A1:${String.fromCharCode(65 + numColonne)}1`); headerRange.values = [["Date", ...nomiColonne]]; // Formatta i bordi const tableRange = sheet.getRange(`A1:${String.fromCharCode(65 + numColonne)}${dates.length + 1}`); tableRange.format.borders.getItem("EdgeTop").style = "Continuous"; tableRange.format.borders.getItem("EdgeBottom").style = "Continuous"; tableRange.format.borders.getItem("EdgeLeft").style = "Continuous"; tableRange.format.borders.getItem("EdgeRight").style = "Continuous"; tableRange.format.borders.getItem("InsideVertical").style = "Continuous"; tableRange.format.borders.getItem("InsideHorizontal").style = "Continuous"; // Formatta l'intestazione (centro e grassetto) headerRange.format.font.bold = true; headerRange.format.horizontalAlignment = "Center"; // Autosize colonne sheet.getUsedRange().format.autofitColumns(); // Commit dei cambiamenti await context.sync(); console.log("Tabella mensile creata con successo!"); }).catch((error) => { console.error(error); });
Sub CreaTabellaMensile() Dim ws As Worksheet Dim numColonne As Integer Dim nomiColonne() As String Dim primaData As Date Dim ultimaData As Date Dim i As Integer Dim rigaIniziale As Integer Dim colonnaIniziale As Integer Dim rng As Range ' Aggiunge un nuovo foglio di lavoro Set ws = ThisWorkbook.Sheets.Add ws.Name = "Tabella Mensile" ws.Activate ' InputBox per numero di colonne numColonne = Application.InputBox("Quante colonne vuoi aggiungere (oltre alla colonna delle date)?", "Numero di Colonne", Type:=1) If numColonne < 1 Then Exit Sub ' Chiede i nomi delle colonne ReDim nomiColonne(1 To numColonne) For i = 1 To numColonne nomiColonne(i) = Application.InputBox("Inserisci il nome della colonna " & i & ":", "Nome Colonna " & i, "Colonna " & i, Type:=2) If nomiColonne(i) = "" Then Exit Sub Next i ' Calcola la prima data del mese successivo primaData = DateSerial(Year(Date), Month(Date) + 1, 1) ultimaData = DateSerial(Year(Date), Month(Date) + 2, 0) ' Inserisce i nomi delle colonne nella prima riga rigaIniziale = 1 colonnaIniziale = 1 ws.Cells(rigaIniziale, colonnaIniziale).Value = "Date" For i = 1 To numColonne ws.Cells(rigaIniziale, colonnaIniziale + i).Value = nomiColonne(i) Next i ' Inserisce le date nella prima colonna Dim dataCorrente As
javascript
vba

Tabella mensile dinamica

INIZIO Chi sono Home
Notifica sui cookie