【问题标题】:Macro Plug in宏插件
【发布时间】:2010-10-22 22:28:13
【问题描述】:

当前设置此宏,如果 G 列有“Last Term”和“Okay”或“Okay”和“Stay”,07a 将输入到 I 列的同一行中。我想修改此代码,以便如果 G 列包含“Last Term”并且 K 列包含“Okay”和“End”或“Okay”和“Stay”,以任何组合或任何顺序,可能在两者之间,之前,或在它们后面只要存在这两种不同的组合,那么 07a 将被输入到同一行的 I 列中。

子插件() 将 nRow 变暗 将 iRow 变暗

nRow = ActiveSheet.Cells(Rows.Count, "G").End(xlUp).Row

For iRow = 1 To nRow
    With Cells(iRow, "G")
        If .Text Like "Okay*" Or .Text Like "End*" Then
            Cells(iRow, "I") = "07a"
        If .Text Like "Okay*" Or .Text Like "Stay*" Then
            Cells(iRow, "I") = "07a"
        End If
    End With
Next iRow

结束子

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    试试下面的代码:

    Sub Plugin()
    Dim nRow As Long
    Dim iRow As Long
    Dim KUpperText As String
    
    nRow = ActiveSheet.Cells(Rows.Count, "G").End(xlUp).Row
    
    For iRow = 1 To nRow
        KUpperText = UCase(Cells(iRow, "K").Text)
        If UCase(Cells(iRow, "G").Text) Like UCase("Last Term*") Then
            If ((KUpperText Like "*END*" And KUpperText Like "*OKAY*") _
             Or (KUpperText Like "*STAY*" And KUpperText Like "*OKAY*")) Then
                Cells(iRow, "I") = "07a"
            End If
        End If
    Next iRow
    End Sub
    

    对于每个循环,我读取 K 列中的文本字符串。 例如,它被格式化为大写,以确保同时处理“End”和“END”。

    【讨论】:

    • 使用With语句时,测试或设置被引用对象的属性没有问题。这几乎就是 With 语句的目的
    • @barrowc 你说得对。我已经测试过添加“With”,它也有效。我已编辑我的答案以删除不正确的陈述。
    猜你喜欢
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多