小编Jos*_*eld的帖子

Excel VBA循环遍历一串数字,直到找到一个字母

我在一个单元格中有一个字符串,让我们说"Client Ref:F123456PassPlus".字符串可能在数字前没有字母,数字中可能有符号,字母和数字之间可能有空格.我只需要将数字作为变量提取.我有代码来做,但它不知道何时停止循环字符串.它应该在有数字或符号以外的东西时停止,而是继续进行.

IsNumber = 1
ref = ""
If branch = "" Then
    e = b
Else
    e = b + 1
End If
f = 1
While IsNumber = 1
    For intpos = 1 To 15
        ref = Mid(x, e, f)
        f = f + 1
        Select Case Asc(ref)
            Case 45 To 57
                IsNumber = 1
            Case Else
                IsNumber = 0
                Exit For
        End Select
    Next
    IsNumber = 0
Wend
Run Code Online (Sandbox Code Playgroud)

之前已经定义了任何没有定义的变量字母,e告诉代码从哪里开始复制,x是包含字符串的单元格.现在,一切正常,它从数字开始并复制它们并将它们构建成一个越来越大的字符串,但它只会在intpos达到15时停止.

string excel vba excel-vba

7
推荐指数
2
解决办法
3925
查看次数

使用 Excel VBA 获取发件人的 SMTP 电子邮件地址

我使用以下代码提取主题、接收日期和发件人姓名:

Set InboxSelect = GetObject("", "Outlook.Application").GetNamespace("MAPI").PickFolder
i = 0: EmailCount = 0
EmailCount = InboxSelect.Items.Count
While i < EmailCount
    i = i + 1
    blastRow = Cells(Rows.Count, 1).End(xlUp).Offset(1).Row
    LastRow = Sheets("Body").Cells(Rows.Count, 1).End(xlUp).Offset(1).Row
    With InboxSelect.Items(i)
        MsgBox (SenderEmailAddress)
        'If .senderemailaddress = "*@somethingSpecific.co.uk" Then
            'EmailCount = EmailCount + 1
            Sheets("Import Data").Range("A" & blastRow).Formula = .SenderName
            Sheets("Import Data").Range("B" & blastRow).Formula = Format(.ReceivedTime, "dd/mm/yyyy")
            Sheets("Import Data").Range("C" & blastRow).Formula = .Subject
            Sheets("Body").Range("A" & LastRow).Formula = .Body
        'End If
    End With
Wend
Run Code Online (Sandbox Code Playgroud)

我现在想要实现的是一个 if 语句,它会说“如果发件人的电子邮件地址是 'anything@somethingSpecific.co.uk',则执行该代码。我已经尝试过 SenderEmailAddress,但在消息中测试时它返回空白盒子。 …

email excel outlook vba

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

excel ×2

vba ×2

email ×1

excel-vba ×1

outlook ×1

string ×1