Ciao!
Scusa ma dimenticavo...riesci ad integrarmelo nella mia macro già esistente?
...
Infine, se possibile, nell'oggetto è possibile scrivere del testo libero oltre al numero che viene inserito in automatico?
Grazie ancora in anticipo!
Modifica le parti evidenziate. Il testo aggiuntivo è inserito prima del numero, altrimenti inverti l'ordine.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim olApp As Object
Dim wk As Workbook
Dim SH As Worksheet
Dim Rng As Range, Rng2 As Range, rCell As Range
Dim sSubject As String, sBody As String
Dim lRiga As Long
On Error GoTo XIT
'--- personalizza oggetto e testo della email
sSubject = "Testo aggiuntivo da aggiungere all'oggetto"
sBody = "Corpo del messaggio"
Application.EnableEvents = False
If Target.Column = 18 Then
Select Case UCase(Target.Value)
Case Is = ""
Exit Sub
Case "SI"
Set wk = Workbooks.Open("Y:\Giro librerie\2 - INSTALL RPR - PRO\NEW ITER" _
& "Comunicazioni a Utenti - Installazione PATCH.xlsm")
Set SH = wk.Worksheets("COMUNICAZIONE")
With SH
lRiga = .Range("A" & .Rows.Count).End(xlUp).Row + 1
.Range("A" & lRiga).Value = Me.Range("C" & Target.Row).Value
lRiga = .Range("B" & .Rows.Count).End(xlUp).Row + 1
.Range("B" & lRiga).Value = Me.Range("A" & Target.Row).Value
lRiga = .Range("C" & .Rows.Count).End(xlUp).Row + 1
.Range("C" & lRiga).Value = Me.Range("B" & Target.Row).Value
End With
End Select
ElseIf Target.Column = 1 Then
Target.Offset(0, 5).Value = Date
Target.Offset(0, 8).Value = "NON INSTALLATO"
'--- spedisce email se numero
If Application.IsNumber**(Target.Value) Then**
On Error Resume Next
Set olApp = GetObject(, "Outlook.Application")
If Err.Number <> 0 Then
Set olApp = CreateObject("Outlook.Application")
End If
With olApp.CreateItem(0)
.To = "******@domain.com"
.Subject = sSubject & CStr(Target.Value)
.body = sBody
.Send
End With
Set olApp = Nothing
End If
On Error GoTo XIT
'-----------------------------
ElseIf Target.Column = 9 Then
If Not Intersect(Target, Me.Range("I5:I81")) Is Nothing Then
If Not Target.Count > 1 Then
' for each
Select Case UCase(Target.Value)
Case Is = "INSTALLATO"
Target.Offset(0, 4).Value = Target.Offset(0, -2).Value
Target.Offset(0, 5).Value = "Da Testare"
Case Is = "NON INSTALLATO"
Case Else
End Select
End If
End If
End If
Set Rng = Application.Union(Me.Range("J5:J81"), Me.Range("P5:P81"))
On Error Resume Next
Set Rng2 = Intersect(Target, Rng)
On Error GoTo XIT
If Not Rng2 Is Nothing Then
For Each rCell In Rng2.Cells
With rCell
If UCase(.Value) = "SOLARI" Then
.Offset(0, 1).Value = "//"
Else
.Offset(0, 1).Value = vbNullString
End If
End With
Next rCell
End If
XIT:
Application.EnableEvents = True
End Sub
Nota:
Modificato il controllo numericità segnalato da Norman.