我目前正在VBA中编写代码以自动执行一个进程,该进程发送一个电子邮件,其中包含一个表,该表包含Access数据库中查询生成的信息。我正在使用HTML来格式化该电子邮件中的表,我需要该表中行的颜色来交替颜色(奇数行:#ccffcc;偶数行:#ffffff),但我似乎无法弄明白。我试图使用子选择器,但我无法弄清楚要在这里工作。我没有太多与CSS或HTML相关的经验或知识,所以我很可能错误地使用了子选择器。
以下是我目前的情况:
Bodytext2 = "<html>" & _
"<body>" & _
"<TABLE BORDER=0 CELLpadding=0 style='font-family:Arial; font-size:12px'>" & _
"<TBODY>" & _
"<TH bgcolor='#dcdcdc'> Field1 </TH>" & _
"<TH bgcolor='#dcdcdc'> Field2 </TH>" & _
"<TH bgcolor='#dcdcdc'> Field3 </TH>"
'Creates the table
Set rst = mydb.OpenRecordset("Query In Access")
Do Until rst.EOF
Bodytext2 = Bodytext2 & _
"<TR ALIGN=CENTER VALIGN=MIDDLE>" & _
"<TD> " & rst![Field1] & _
"<TD> " & rst![Field2] & _
"<TD> " & rst![Field3]
rst.MoveNext
Loop
rst.Close
Bodytext2 = Bodytext2 & "</table>"
此代码生成包含正确信息的正确表。但是,我不知道在代码中添加哪些内容来更改表行的颜色,或者如何编写代码来执行此操作。到目前为止我的猜测是它会出现在“TR Align = center valign = middle”部分,但这只是我的猜测。
我在这里看了很多其他的答案,但我认为我在这个领域缺乏知识使我很难确定我真正需要什么以及它需要去哪里。所以,如果对你可以指导我的类似问题有有用的答案,我也会非常感激。
谢谢!
答案 0 :(得分:0)
在进入循环之前创建一个计数器变量,以便跟踪行号,如下所示:
i = 1
Do Until rst.EOF
If i Mod 2 = 0 Then
Bodytext2 = Bodytext2 & "<TR ALIGN=CENTER VALIGN=MIDDLE BGCOLOR='#ffffff'>"
Else
Bodytext2 = Bodytext2 & "<TR ALIGN=CENTER VALIGN=MIDDLE BGCOLOR='#ccffcc'>"
End If
Bodytext2 = Bodytext2 & _
"<TD> " & rst![Field1] & _
"<TD> " & rst![Field2] & _
"<TD> " & rst![Field3]
rst.MoveNext
i = i + 1
Loop
我对任何语法错误表示歉意。我的VBA有点生疏。