对于每一个 – 编译错误,而不是

我得到下一个没有错误信息 – 我错过了什么? “下一个细胞”上的错误

在这里输入图像描述

此代码的目的是在Gmail电子邮件中确定From,To。 标准基于excel工作簿中的表格。

Sub SetsEmailAddress() Dim aCell As Range Dim aCell_1 As Long Dim strFrom As String Dim strTo As String Dim MyString As String For Each aCell In Sheets("Contact_Rev").Range("A2:A5").Cells If (aCell.Offset(1, 0).Value) = Sheets("Contact_Rev").Range("P2").Cells Then If aCell.Offset(1, 2).Value = "From" Then strFrom = aCell.Offset(1, 3).Value End If Select Case aCell.Offset(1, 2).Value Case "Val" strTo = (aCell.Offset(1, 3).Value) Case "Invoice" If IsNumeric(aCell.Offset(1, 3).Value) Then For aCell_1 = 1 To aCell.Offset(1, 3).Value strTo = "" strTo = strTo & "" & (aCell.Offset(1, 3).Value) & strTo & "'" Next aCell_1 End If End Select End If Next aCell end sub 

尝试与.cells,并没有给下标错误。

这里是你的代码有一些变化:

 Option Explicit Sub SetsEmailAddress() Dim aCell As Range Dim aCell_1 As Long Dim strFrom As String Dim strTo As String Dim MyString As String Dim bolFound As Boolean Dim ws As Worksheet bolFound = False For Each ws In ThisWorkbook.Worksheets If ws.Name = "Contact rev" Then bolFound = True Next ws If bolFound = False Then MsgBox "Couldn't find the required sheet." & Chr(10) & "Aborting..." End If With ThisWorkbook.Worksheets("Contact rev") For Each aCell In .Range("A2:A9") If aCell.Offset(0, 1).Value2 = .Range("M2").Value2 Then If aCell.Offset(0, 2).Value2 = "From" Then strFrom = aCell.Offset(0, 3).Value2 End If Select Case aCell.Offset(0, 2).Value2 Case "Val" strTo = "'" & aCell.Offset(0, 3).Value2 & "'" Case "Invoice" strTo = strTo & ",'" & aCell.Offset(0, 3).Value2 & "'" End Select End If Next aCell End With End Sub 

变化:

  1. 我在第一个For...Each循环的末尾删除了.Cells ,如上面注释中所build议的。
  2. 第二个For...Each都没有意义。 因此,我删除了它。
  3. 现在,在偏移单元格中的每个查找“To”电子邮件地址strTo被连接起来。 分开这些电子邮件地址a ,被添加。 你可以把它改成一个; 如果这是你所需要的。
  4. Offset量大部分是不正确的(基于提供的样本数据并已经调整)。
  5. 最后(也是最重要的), sub在使用之前现在search表单Contact_Rev 。 事实certificate(在提供的示例文件中)没有该名称的表单。 工作表名称为“ Contact rev (不带下划线)。 因此,没有find工作表,代码无法工作。

你错过了,“结束,如果”结束 – 试试这个:

 Sub SetsEmailAddress() Dim aCell As Range Dim aCell_1 As Range Dim strFrom As String Dim strTo As String Dim MyString As String For Each aCell In Sheets("Contact_Rev").Range("A2:A5").Cells If (aCell.Offset(1, 0).Value) = Sheets("Contact_Rev").Range("P2").Cells Then If aCell.Offset(1, 2).Value = "From" Then strFrom = aCell.Offset(1, 3).Value End If Select Case aCell.Offset(1, 2).Value Case "Val" strTo = (aCell.Offset(1, 3).Value) Case "Invoice" For Each aCell_1 In aCell.Offset(1, 3).Value strTo = "" strTo = strTo & "" & (aCell.Offset(1, 3).Value) & strTo & "'" Next aCell_1 End Select End If Next aCell End Sub