[英]Excel 2010 - Macro to Detect Specific Interior Color of a Cell and Produce a Result
我用一個調用宏的命令按鈕創建了一個Excel電子表格。 宏通過Microsoft Outlook生成一封新電子郵件,其中提供了數據列表,特別是內部顏色為RGB(255、255、204)的A5至A500單元格中的數據。
但是,我沒有得到准確的結果。 宏不是專門從指定內部顏色的單元格捕獲數據,而是從備用顏色的單元格中也提供數據。 這可能是我的邏輯錯誤。
這是我目前正在使用的代碼:
Private Sub btnReport_Click()
'Create Email Message
Dim r As Range
Dim m As String
Set r = ActiveSheet.Range("A5:A500")
m = "Hello,<br><br>Here is some information:<br><br>" & _
"<table border=""1"" style=""width:98.7%"" align=""left"" ><tr style=""vertical-align:top;""><td style=""width:9.3%"" nowrap>" & _
"<b>Column 1</b></td><td style=""width:10%"" nowrap><b>Column 2</b></td><td style=""width:10%"" nowrap><b>Column 3</b></td></tr>"
For Each r In r.Cells
If r.Interior.Color = RGB(255, 255, 204) Then
m = m & "<tr><td>" & ActiveSheet.Range("D" & r) & "</td><td>" & ActiveSheet.Range("L" & r) & "</td><td>" & _
ActiveSheet.Range("M" & r) & "</td></tr>"
End If
Next
'Open Email
Dim olApp As Object
Dim olMail As Object
Dim name As String
Set olApp = CreateObject("Outlook.Application")
Set olMail = olApp.CreateItem(olMailItem)
With olMail
.To = "Dee Wolf"
.Subject = "This is a subject line"
.HTMLBody = m
.Display
End With
Set olMail = Nothing
Set olApp = Nothing
End Sub
為什么要兩次出於兩個目的使用r變量,為什么要使用(“ D”&r)建立范圍。 r是一個對象(特別是一個單元格)。 我假設您想從D和M中獲取數據,但是在同一行上?
如果是這樣,則應如下所示。
昏暗的單元格作為范圍
For Each aCell In r.Cells
If r.Interior.Color = RGB(255, 255, 204) Then
m = m & "<tr><td>" & ActiveSheet.Range("D" & aCell.Row) & "</td><td>" & ActiveSheet.Range("L" & aCell.Row) & "</td><td>" & _
ActiveSheet.Range("M" & aCell.Row) & "</td></tr>"
End If
Next
您當然可以走捷徑,並且在使用Range(“ D”&r)建立范圍時實際上正在使用r.Value。 也就是說,這是為Range(“ D”&r.Value)拍攝的...因此,如果“ r”引用其中帶有數字的單元格(例如599),那么您要引用單元格“ D599”,這是您的代碼的作用?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.