[英]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.