【问题标题】:VBA Excel cut/paste multiple emails into another worksheetVBA Excel将多封电子邮件剪切/粘贴到另一个工作表中
【发布时间】:2018-10-18 22:56:49
【问题描述】:

我正在尝试通过循环将特定数据从一张纸移动到另一张纸。我需要宏来查看电子邮件,然后剪切这些行的所有数据并将它们粘贴到下一个选项卡中。我有以下代码,但我的 .Value = "@" 无法识别。如果我这样做 .Value = "" 那么它会识别所有空白单元格。请帮忙,我知道这可能非常简单。

Private Sub CommandButton1_Click()
a = Worksheets("Master").Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To a

    If Worksheets("Master").Cells(i, 12).Value = "@" Then
        Worksheets("Master").Rows(i).Cut
        Worksheets("Email").Activate
        b = Worksheets("Email").Cells(Rows.Count, 1).End(xlUp).Row
        Worksheets("Email").Cells(b + 1, 1).Select
        ActiveSheet.Paste
        Worksheets("Master").Activate

    End If

Next

Application.CutCopyMode = False

ThisWorkbook.Worksheets("Master").Cells(1,1).Select


End Sub

【问题讨论】:

  • 你试过用like代替=吗?

标签: excel vba


【解决方案1】:

好吧,所以这不起作用的原因是因为您在询问 Cells(i,12) 的值是否等于 @,但我假设您在询问它是否包含字符 @987654323 @。您执行此操作的方法是使用like 而不是= 并将通配符(*)添加到您正在比较的字符串中。所以通配符的作用是他们说任何东西都可以在指定字符的另一边,它会算作匹配。例如,@* 将匹配以@ 开头的任何内容,*@ 将匹配以@ 结尾的任何内容。通过组合它们,您将得到 *@*,它与包含 @ 的任何内容相匹配。

还需要注意的是,您可以通过直接处理对象而不是激活对象来将其中的大部分内容合并为一行。

您还应该养成使用Option Explicit 的习惯,并让您的变量变暗以防止您使用未初始化的变量,这有助于防止较长代码段中的错误。

我在末尾添加了一些代码,用于删除主工作表已用范围内的所有空白单元格。这将使所有内容都向上移动,因此除非您关心的所有内容都在块中且中间没有空单元格,否则我会将其注释掉。但是,如果您选择使用它,它确实有助于压缩主列表。

Option Explicit

Private Sub CommandButton1_Click()

Dim A as Long
Dim i as Long

A = Worksheets("Master").Cells(Rows.Count, 1).End(xlUp).Row
Application.CutCopyMode = False

For i = 2 To A

    If Worksheets("Master").Cells(i, 12).Value Like "*@*" Then
        Worksheets("Master").Rows(i).Copy Destination:= Worksheets("Email").Cells(Worksheets("Email").Cells(Rows.Count, 1).End(xlUp).Row + 1, 1)
        Worksheets("Master").Rows(i).Clear
    End If

Next

Worksheets("Master").UsedRange.SpecialCells(xlCelltypeBlanks).Delete shift:=xlShiftUp

Application.CutCopyMode = True
End Sub

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多