Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Andrea,
Ho scaricato il tuo file e vedo suboto il problema!
Nella colonna AE del foglioSORGENTE & COMPILAZIONE DATI, la tua formula non è quella incata da te, ossia:
ecco la formula:
=IF(AA2=2,W2,IF(AA2=1,X2,"VUOTA"))
ma invece vedo la formula:
=IF(AA2=2;W2;IF(AA2=1;X2;""))
A questo priposito vedo la mia risposta precedente nella quale avevo detto:
Con questa formula il codice dovrebbe restituire l'ultima riga effettiva della colonna AE e il codice dovrebbe funzionare nel modo previsto, Avrei previsto un eventuale problema se la formula fosse stata del genere: =IF(AA2=2,W2,IF(AA2=1,X2,""))
!!!
Vedo che difatti la tua formula è precisamente quella che avevo previsto come problematico!
Tu vuoi restituire il contenuto della ultima cella della colonna AE che contenga testo visibile e, pertanto, la mia funzione LastRow non è appropriata poichè questa funzione restituisce l'ultima cella popolata e una cella che contiene una formula - qualunque formula - è sempre popolata!
Quindi, per risolvere il tuo problema, sostituisci la mia funzione LastRow con la seguente funzione:
'=========>>
Public Function LastEffectiveRangeRow(aRng As Range)
Dim arrIn As Variant
Dim iRow As Long, i As Long
arrIn = aRng.Columns(1).Value
iRow = aRng.Row
For i = 1 To UBound(arrIn)
If arrIn(i, 1) = vbNullString Then
With aRng
LastEffectiveRangeRow = i - 1
End With
Exit Function
End If
Next i
End Function
'<<=========
Inoltre, nella procedura Make_Outlook_Mail_With_File_Link, sostituisci
With SH
LRow = LastRow(SH, .Columns(sColonnaCorpo))
Set RngCorpo = .Columns(sColonnaCorpo).Cells(LRow + 1)
End With
con:
With SH
LRow = LastEffectiveRangeRow(.Columns(sColonnaCorpo))
Set RngCorpo = .Columns(sColonnaCorpo).Cells(LRow)
End With
===
Regards,
Norman