Faire une concurence sans ambiguïté lors de la récupération de l'information pour le courrier électronique VBA

L'objective de ma macro est de vérifier les feuilles de travail individuelles pour une list de dates dans une gamme, puis envoyer un courriel énumérant ces dates à une adresse électronique située dans la fiche.

Le code actuel avec lequel je travaille concatène les dates de la feuille actuelle ainsi que les dates de la feuille précédente, au lieu des dates trouvées sur cette fiche. Je me moque de le faire uni-vocal, j'ai essayé de mettre "ws". avant chaque instruction aCell, mais obtenez une erreur de compilation. Toute suggestion très appréciée.

Sub Mail_Outlook() Dim ws As Worksheet Dim wsName As Variant Dim OutApp As Object Dim OutMail As Object Dim cell As Range Dim strbody As Ssortingng Dim ssortingng1 As Ssortingng Dim aCell As Range Dim i As Integer i = 0 For Each wsName In Array("sheet1", "sheet2", "sheet3") Set ws = Worksheets(wsName) 'resortingeve all missing dates For Each aCell In ws.Range("Aa1:Aa1000") If aCell.Value <> "" Then i = i + 1 If i <> 1 Then ssortingng1 = ssortingng1 & ", " & aCell.Value Else ssortingng1 = aCell.Value End If End If Next 'send email Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(0) strbody = "Good day " & ws.Range("E3").Cells & vbNewLine & vbNewLine & _ "" & vbNewLine & vbNewLine & _ "" & vbNewLine & vbNewLine & _ ssortingng1 & vbNewLine & vbNewLine & vbNewLine & vbNewLine & _ "(This is an automated message)" & vbNewLine & vbNewLine & _ "Best regards" & vbNewLine & vbNewLine & _ On Error Resume Next With OutMail .To = ws.Range("E5").Text .CC = "" .BCC = "" .Subject = "" .Body = strbody 'You can add a file like this '.Attachments.Add ("C:\test.txt") .Display 'or use .Send End With On Error GoTo 0 Set OutMail = Nothing Set OutApp = Nothing Next End Sub 

À partir des commentaires de l'OP:

Le code tel quel ne produit pas d'erreurs, mais par exemple, le deuxième courrier électronique contient la string pour la première feuille et la deuxième feuille plutôt que la deuxième feuille.

Cochez la string avant d'entrer dans la deuxième itération de la boucle.

 For Each wsName In Array("sheet1", "sheet2", "sheet3") Set ws = Worksheets(wsName) ssortingng1 = vbNullSsortingng 'reset ssortingng1 to a zero-length ssortingng for each ws 'resortingeve all missing dates For Each aCell In ws.Range("Aa1:Aa1000") 'all the rest of the concatenation code next aCell 'all the rest of the email code Next wsName