Ora per evitare di avere dei "buchi" vedi sotto, sto arrabattando un codice che : mi trova la prima riga vuota e l'ultima piena dal basso, quindi "dovrebbe" prendere quest'ultima riga (C:H) e spostarla nella riga vuota sopra identificata. E qui mi sono perso.
Ecco il codice , che non dà errore, ma sicuramente ci sono capre e cavoli mescolati che non non si troveranno mai ( tipo long e range )
Un sentito grazie a chi vorrà insegnarmi come risolvere la cosa . Una volta tanto questo costrutto è farina del mio sacco, ecco perchè non funzia
- Codice: Seleziona tutto
Sub aggiungiR()
Dim sh As Worksheet
Dim nUp, mDn As Long
Dim Rng As Range
Dim WorkRng As Range
Set sh = Sheets("Scadenze")
'sh.Unprotect
Application.ScreenUpdating = False
On Error Resume Next
Set WorkRng = Range("C10:C28")
For Each Rng In WorkRng
If Rng.Value = "" Then
MsgBox "No Value, in " & Rng.Address
'ElseIf Rng.Value <> "" Then
GoTo xit
End If
Next
xit:
With sh
mDn = WorkRng.End(xlDown).Row + 1 ' trova il numero di riga della prima vuota
nUp = Cells(WorkRng.Rows.Count, 4).End(xlUp).Row ' trova il n.di riga - prima piena - partendo da sotto,da inizio tabella
If Rng.Address = mDn Then 'solo per conferma
.Rows(nUp).Address.entire.Row.Copy
.Rows(mDn).PasteSpecial xlPasteFormulas 'copia sotto una riga vuota con formule
ElseIf Rng.Address <> mDn Then
MsgBox " C'è qualcosa che non va !"
End If
End With
'sh.Protect
Application.ScreenUpdating = True
Set Rng = Nothing
End Sub
e qui l'immagine
http://www.filedropper.com/tabscad