0
我已經創建了一個宏經由電子郵件自動發送一個excel工作表的一部分,以一些接收者。代碼功能齊全,工作效率很高。宏發送(如果條件是遵守僅行)與選定的範圍郵件
然而,我想要實現到其上的微小變化:宏實際上是濾波的範圍(列),它複製濾波之後存在,然後糊劑然後在另一片的行。
之後,它發出的複製粘貼範圍有些收件人。
我想要改變的是,告訴宏只發送複製粘貼的行中有值,而不僅僅是0.
所以,如果一行(每行有8列與數據)只有0在它的所有列中,然後不發送這一個。
我將在下面提供的代碼。添加If條件應該很容易,但我已經嘗試並失敗了。可能有人知道如何在代碼中添加If條件。
Sub MAIL()
Dim ToArray As String
Dim CCArray As String
Dim Subject As String
Dim Content As String
Dim lastrow1 As Integer
Dim lastrow2 As Integer
Application.ScreenUpdating = False
For I = 1 To 20
Sheets.Add.Name = "WS1"
Sheets("Report").Activate
ToArray = "[email protected]"
'ToArray = ThisWorkbook.Sheets("Report").Cells((I + 2), 28).Value
CCArray = ThisWorkbook.Sheets("Report").Cells((I + 2), 29).Value
Subject = ThisWorkbook.Sheets("Report").Cells((I + 2), 30).Value
Content = ThisWorkbook.Sheets("Report").Cells((I + 2), 31).Value
ThisWorkbook.Sheets("Report").Range("I24:U24").AutoFilter Field:=2, Criteria1:=ThisWorkbook.Sheets("Report").Cells((I + 2), 27).Value
lastrow1 = ThisWorkbook.Sheets("Report").Cells(ThisWorkbook.Sheets("Report").Rows.Count, "U").End(xlUp).Row
ThisWorkbook.Sheets("Report").Range("K24:U" & lastrow1).SpecialCells(xlCellTypeVisible).Copy ThisWorkbook.Sheets("WS1").Cells(1, 1)
lastrow2 = ThisWorkbook.Sheets("WS1").Cells(Sheets("WS1").Rows.Count, "A").End(xlUp).Row
If lastrow2 >= 2 Then
Sheets("WS1").Columns("A:M").AutoFit
Sheets("WS1").Activate
Sheets("WS1").Range("A1:M" & lastrow2).Select
ActiveWorkbook.EnvelopeVisible = True
With Sheets("Report").MailEnvelope
.Introduction = Content
.Item.To = ToArray
.Item.CC = CCArray
.Item.Subject = Subject
.Item.Send
End With
Application.ScreenUpdating = True
Application.DisplayAlerts = False
End If
Sheets("WS1").Delete
Next I
End Sub
謝謝你的答案..可惜的是,它劇照膏這裏的一切是0行。但是,我不知道它必須提到它,但範圍中的前兩列有一些類型的垂直頭文件,所以沒有值..值從第三行開始......這很重要嗎? –
好吧,這是有點難以找到一個解決方案適合你,如果我們不能自行測試;我可以建議的是逐步執行腳本以更好地瞭解它如何運行(以及發生了什麼)。它可以給你一些線索。 – SMFSW
@PericlesFaliagas你設法得到想要的結果嗎?或者您是否在逐步執行的過程中發現事情開始出現問題? – SMFSW