Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 输出阵列';s值发送到邮件';身体_Vba_Excel_Loops - Fatal编程技术网

Vba 输出阵列';s值发送到邮件';身体

Vba 输出阵列';s值发送到邮件';身体,vba,excel,loops,Vba,Excel,Loops,我正在努力使用VBA逻辑来构建一个名称数量未定义的邮件正文。电子邮件正文中应列出“姓名”表“D”列中的姓名 这应该从“D”列的第2行开始,将名称放入一个数组中 位于邮件正文中: "Names : " Do While j <= i "Name " & cellValue(j) j = j + 1 Loop “名称:” 当jn认为正确时,您必须使用ReDim语句为数组变量重新分配存储空间 试试这个: Dim i As Integer Dim j As Integer

我正在努力使用VBA逻辑来构建一个名称数量未定义的邮件正文。电子邮件正文中应列出“姓名”表“D”列中的姓名

这应该从“D”列的第2行开始,将名称放入一个数组中

位于邮件正文中:

"Names : "
Do While j <= i
    "Name " & cellValue(j)
    j = j + 1
Loop
“名称:”
当jn认为正确时,您必须使用
ReDim
语句为数组变量重新分配存储空间

试试这个:

Dim i As Integer
Dim j As Integer
Dim cellValue()
Dim x : x = 0

i = 2
j = 2

Do Until IsEmpty(Cells(i,4))
    ReDim Preserve cellValue(x)
    cellValue(x) = Cells(i, 4).Value
    x = x + 1
    i = i + 1
Loop
在您的电子邮件正文中:

For j = LBound(cellValue) To UBound(cellValue)
    "Name " & cellValue(j)
Next  

有关ReDim的更多信息,请查看和链接。

我将为您省去搜索的麻烦

Dim i As Integer
Dim j As Integer
Dim cellValue() As String

i = 2
j = 2

Do Until IsEmpty(Cells(i,4))
    ReDim Preserve cellValue(i)
    cellValue(i) = Cells(i, 4).Value
    i = i + 1
Loop
然后在电子邮件正文中:

sBody = "Names : "
Do While j <= i
    sBody = sBody & vbNewLine & "Name " & cellValue(j)
    j = j + 1
Loop

'assume you already have this, but for illustration purposes
Set oApp = CreateObject("Outlook.Application")
Set oMail = oApp.CreateItem(olMailItem)

With oMail
   .To = 'whomever
   .Body = sBody
End With
sBody=“名称:”

当你有一些问题的时候就去做。我建议搜索有关使用
ReDim
构建阵列的其他问题。此外,当试图将您的姓名插入电子邮件正文时,您没有使用此字符串执行任何操作。每次这样做时,我都需要为电子邮件正文连接一个长字符串。而且,如果该字符串中没有任何返回字符,您将在同一行中获得所有名称,而不是在列表中。显示更多代码也会有所帮助…:-)
sBody = "Names : "
Do While j <= i
    sBody = sBody & vbNewLine & "Name " & cellValue(j)
    j = j + 1
Loop

'assume you already have this, but for illustration purposes
Set oApp = CreateObject("Outlook.Application")
Set oMail = oApp.CreateItem(olMailItem)

With oMail
   .To = 'whomever
   .Body = sBody
End With