循环遍历单元格,使用 VBA 将符合条件的单元格添加到 list/string?
Cycle through cells, adding those that fit criteria to a list/string using VBA?
我是 VBA 的新手(在 java 方面只受过一点培训),并且碰壁了。
最终目标是循环遍历一系列包含名称的单元格,将相邻单元格的值与常量进行比较。如果满足条件,则应将原始单元格添加到列表中,该列表将由负责起草电子邮件的另一个公式摄取。这将每天重复,并且与每个名称一致的值将发生变化。
我已经想出如何使用一个变量在范围内循环,该变量将每个名称添加到电子邮件草稿的 "TO" 行,但不知道如何向循环添加条件,所以它只添加所需的。 基本上,我认为我唯一需要帮助的是 "sTo" 变量。 谢谢!
Sub Draft_Email()
Dim emailRng As Range, cl As Range
Dim adjCellRng As Range, cmp As Range
Dim sTo As String
Dim day As String
Dim EmailBody As String
Dim i As Integer
Dim k As String
k = 85
day = Format(Date, "dddd mmmm d")
EmailBody = "Blah Blah"
Set emailRng = Worksheets("Briefing Order").Range("D4:D31,G4:G31,J4:J31,M4:M31")
For Each cl In emailRng
**cmp = cl.Offset(0, -1)**
If cmp >= k Then
sTo = sTo & ";" & cl.Value & "WindTemp-DG@wnco.com"
End If
Next cl
sTo = Mid(sTo, 2)
'..Draft Email where .BCC = sTo
End Sub
Set emailRng = Worksheets("Briefing Order").Range("D4:D31,G4:G31,J4:J31,M4:M31")
Set adjCellRng = Worksheets("Briefing Order").Range("E4:E31,H4:H31,K4:K31,L4:L31")
'something like the following...
For i = 1 to emailRng.size 'whatever the limit variable is
cl = emailRng(i)
cmp = adjCellRng(i)
if cmp==k then
sTo = sTo & ";" & cl.Value & "Department@work.com"
end if
Next
sTo = Mid(sTo, 2)
我会用
更改 jdl 代码
Set emailRng = Worksheets("Brifing Order").Range("D4:D31,G4:G31,J4:J31,M4,M31")
'something like the following...
For each c1 in emailRng.cells
cmp = c1.offset(0,1)
if cmp==k then
sTo = sTo & ";" & cl.Value & "Department@work.com"
end if
Next
sTo = Mid(sTo, 2)
我是 VBA 的新手(在 java 方面只受过一点培训),并且碰壁了。
最终目标是循环遍历一系列包含名称的单元格,将相邻单元格的值与常量进行比较。如果满足条件,则应将原始单元格添加到列表中,该列表将由负责起草电子邮件的另一个公式摄取。这将每天重复,并且与每个名称一致的值将发生变化。
我已经想出如何使用一个变量在范围内循环,该变量将每个名称添加到电子邮件草稿的 "TO" 行,但不知道如何向循环添加条件,所以它只添加所需的。 基本上,我认为我唯一需要帮助的是 "sTo" 变量。 谢谢!
Sub Draft_Email()
Dim emailRng As Range, cl As Range
Dim adjCellRng As Range, cmp As Range
Dim sTo As String
Dim day As String
Dim EmailBody As String
Dim i As Integer
Dim k As String
k = 85
day = Format(Date, "dddd mmmm d")
EmailBody = "Blah Blah"
Set emailRng = Worksheets("Briefing Order").Range("D4:D31,G4:G31,J4:J31,M4:M31")
For Each cl In emailRng
**cmp = cl.Offset(0, -1)**
If cmp >= k Then
sTo = sTo & ";" & cl.Value & "WindTemp-DG@wnco.com"
End If
Next cl
sTo = Mid(sTo, 2)
'..Draft Email where .BCC = sTo
End Sub
Set emailRng = Worksheets("Briefing Order").Range("D4:D31,G4:G31,J4:J31,M4:M31")
Set adjCellRng = Worksheets("Briefing Order").Range("E4:E31,H4:H31,K4:K31,L4:L31")
'something like the following...
For i = 1 to emailRng.size 'whatever the limit variable is
cl = emailRng(i)
cmp = adjCellRng(i)
if cmp==k then
sTo = sTo & ";" & cl.Value & "Department@work.com"
end if
Next
sTo = Mid(sTo, 2)
我会用
更改 jdl 代码Set emailRng = Worksheets("Brifing Order").Range("D4:D31,G4:G31,J4:J31,M4,M31")
'something like the following...
For each c1 in emailRng.cells
cmp = c1.offset(0,1)
if cmp==k then
sTo = sTo & ";" & cl.Value & "Department@work.com"
end if
Next
sTo = Mid(sTo, 2)