对于每一个 – 编译错误,而不是
我得到下一个没有错误信息 – 我错过了什么? “下一个细胞”上的错误
此代码的目的是在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
变化:
- 我在第一个
For...Each
循环的末尾删除了.Cells
,如上面注释中所build议的。 - 第二个
For...Each
都没有意义。 因此,我删除了它。 - 现在,在偏移单元格中的每个查找“To”电子邮件地址
strTo
被连接起来。 分开这些电子邮件地址a,
被添加。 你可以把它改成一个;
如果这是你所需要的。 -
Offset
量大部分是不正确的(基于提供的样本数据并已经调整)。 - 最后(也是最重要的),
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