Volevo, semplicemente, quando avvio la macro:
a) creare un riga vuota sopra la riga (ora n°7) con il testo "riga in corso"
b) copiare solamente i valori di riga in corso -> B7:M7 ( nell'originale il numero è il frutto di una formula con somma)
c) nella colonna A inserire il testo anno 2021 ( in pratica prendere il nome dalla celle che la precede incrementando di uno).
Ma non sapendo come fare a dire prendi questa riga a prescindere se oggi è la numero 7 e fra un anno è la numero 8.
Ho fatto, ovviamente un giro contorto!!!
Nell'esempio allegato partendo dalla riga 7 con questo script aggiungo una riga sopra quello che seleziono:
- Codice: Seleziona tutto
Sub InserisciSopra()
Dim i As Long
Dim xLast As Long
Dim xRng As Range
Dim xTxt As String
On Error Resume Next
xTxt = Application.ActiveWindow.RangeSelection.Address
Set xRng = Application.InputBox("Seleziona la cella", "Inserisci riga", xTxt, , , , , 8)
If xRng Is Nothing Then Exit Sub
If (xRng.Columns.Count > 1) Then
MsgBox "Devi selezionare una sola cella", , "AVVISO"
Exit Sub
End If
xLast = xRng.Rows.Count
For i = xLast To 1 Step -1
If InStr(1, xRng.Cells(i, 1).Value, "riga in corso") > 0 Then
Rows(xRng.Cells(i, 1).Row).Insert shift:=xlDown
End If
Next
End Sub
poi copio i valori:
- Codice: Seleziona tutto
Sub CopiaValori1()
Dim CopyRng As Range, PasteRng As Range
xTitleId = "Copia Valori"
Set CopyRng = Application.Selection
Set CopyRng = Application.InputBox("Range da copiare", xTitleId, CopyRng.Address, Type:=8)
Set PasteRng = Application.InputBox("Cella di destinazione", xTitleId, Type:=8)
CopyRng.Copy
PasteRng.Parent.Activate
PasteRng.PasteSpecial xlPasteValuesAndNumberFormats
'PasteRng.PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End Sub
Mentre non sono riuscito a fare la parte del testo.
https://www.dropbox.com/scl/fi/s36s9r0k5owk81dlkjwdt/Ore_estratto_forum.xlsm?dl=0&rlkey=8zgnl6zlm76yrdvoxqekyn1ro
Grazie per l'aiuto.
Gene