› Sviluppare funzionalita su Microsoft Office con VBA › Macro creata ma non completa.
-
AutoreArticoli
-
Buongiorno a tutti,
ho creato questa macro per far aggiungere, tramite il "pulsante (controllo modulo), una riga con copia formato a mio piacimento.Unico intoppo è dove si genera la riga nuova: sempre sotto alla riga 69. Vi allego due screen.
Io vorrei creare una macro che mi inserisca una riga sempre sotto all'ultima popolata. (ultima versione di microsoft 365)

"Sub Riga()
'
' Riga Macro
' Inserisce e formatta riga.
'
' Scelta rapida da tastiera: CTRL+MAIUSC+I
'
ActiveWindow.SmallScroll Down:=57
Rows("70:70").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("C69").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 3
Range("C70").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub"Grazie mille.
Ho allegato un file prova,
mi inserisce sempre una riga sotto la riga 69 e non sotto l'ultima riga popolata.
Grazie.
Allegati:
You must be logged in to view attached files.Buon pomeriggio Alby,
l'intoppo è voluto infatti nel codice del post #43381 leggo Rows("70:70").Select dove viene incollata la riga.
Dovresti agire prima ricercando l'ultima riga popolata e successivamente scrivere il formato sulla riga succesiva.
Fai qualche tentativo e poi modifichiamo il codice in conformità alla richiesta.
A presto.
P.S.: nel file non sono presenti macro ...
P.S. 2: ma la riga da cui attingere il formato è la 69? nel foglio allegato tale riga è vuota e non avrebbe senso ...
Stavo cercando di fare questo e dopo un po' di tempo ho ottenuto lo script
(aiutato da chatgpt)Sub InserisciRigaFormattataultima()
Dim tbl As ListObject
Dim newRow As ListRow
Dim lastRow As ListRow
Dim i As Integer' Set reference to the table
Set tbl = ThisWorkbook.Sheets("nome sheet).ListObjects("nome tabella")' Check if there are existing rows in the table
If tbl.ListRows.Count > 0 Then
' Get reference to the last row
Set lastRow = tbl.ListRows(tbl.ListRows.Count)' Add a new row after the last row
Set newRow = tbl.ListRows.Add' Copy formatting from the row above
lastRow.Range.Copy
newRow.Range.PasteSpecial Paste:=xlPasteFormats' Clear contents of the new row
newRow.Range.ClearContents
End If
End SubEra questo il risultavo che mi serviva...
(aiutato da chatgpt)
Vi prego, non cadete in questa tentazione... abbandonate ChatGPT (che spara delle boiate pazzesche e ogni volta che glielo si fa notare si discolpa con mille scuse) e tutti gli altri sedicenti aiuti al programmatore
Capisco e concordo con il tuo ragionamento ma ero veramente in "crisi" per sta macro...
ps sono alle prime armi con vba
Onestamente non ho capito nulla, comunque elimina tutte le righe tranne la prima e prova questo codice.
Option Explicit Sub Aggiungi_Riga() Dim tbl As ListObject, Ur As Long Set tbl = Sheets("TRADINGJOURNAL").ListObjects("Tabella444") Ur = Range("C" & Rows.Count).End(xlUp).Row Sheets("TRADINGJOURNAL").Range("C" & Ur & ":G" & Ur).ListObject.ListRows.Add AlwaysInsert:=True Sheets("TRADINGJOURNAL").Range("C" & Ur + 1 & ":G" & Ur + 1) = "" End Sub -
AutoreArticoli
