我已经创建了一个宏过滤器的基础上的电子邮件地址在列D,它过滤电子邮件一个接一个,复制所有可见的细胞,创建一个新的工作表的名称的电子邮件地址,并粘贴到新的工作表的细胞,它继续到下一个电子邮件地址,直到结束.但正在发生的是,它忽略/不阅读一些电子邮件地址,它创建新的工作表,它不会根据电子邮件地址命名(它将其命名为“sheeet 22”),并将其留空(没有粘贴数据)。但它适用于其余的电子邮件地址,只是有些不适用,我不知道为什么。我用蓝色为每个新创建的工作表上色。
Dim r As Double
Dim email As String
Dim sh As Worksheet
Dim OA As Object
Dim msg As Object
Dim lastrow As Double
Dim i As Double
Dim S_UserName As String
Dim sImgFront As String
Dim POV As String
Dim POF As String
Dim Vcost As Double
Dim Fcost As Double
ThisWorkbook.Sheets("InvoiceTracker").Select
Range("D2:D1000000").ClearFormats
Range("D2:D1000000").ClearHyperlinks
Range("D2:D1000000").ClearNotes
Set sh = ActiveSheet
sh.Range("A1:AE1").AutoFilter
r = 1
Do
r = r + 1
email = sh.Range("D" & r).Value
On Error Resume Next
If Sheets(email) Is Nothing Then
sh.Range("A1:AE1").AutoFilter Field:=4, Criteria1:=email
sh.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
Debug.Print email
Sheets.Add.Name = email
Sheets(email).Paste
ActiveSheet.Tab.Color = RGB(0, 112, 192)
sh.ShowAllData
End If
Loop While sh.Range("D" & r + 1).Value <> ""
有人能建议吗?
我试着做了以下事情:
- print-查看是否有该电子邮件地址的值,它就在那里。
- 我重写了电子邮件地址,这是不工作的不同的电子邮件地址,和不同的电子邮件地址是工作。
- 我已经删除了该电子邮件的前3个字母,它是工作,但一旦我再次输入整个电子邮件地址,它不工作。
1条答案
按热度按时间31moq8wy1#
您需要添加长度和字符的检查。最大值为31个字符,并且某些字符是非法的
下面是以前使用过的代码。
这是角色的功能