【问题标题】:If not...Else skip如果不是...否则跳过
【发布时间】:2013-05-02 20:18:33
【问题描述】:

我发现了一个非常接近我的问题,但由于答案是针对该问题的,所以我无法将其与我的完全联系起来。

我正在使用 if not 函数来填充其中已经包含值的列,如果条件存在并且如果条件不存在,我希望它覆盖这些值,如果条件不存在,我希望它保持原来的值。

换句话说,我希望函数的“else”部分说skip或类似的东西......我尝试了“null”“skip”和其他一些但没有运气。

下面是我的代码的一部分,以防有必要忽略我的代码中的问题,这不是最终产品,只是在您需要一些变量的情况下的基本想法。提前谢谢你!:

Sub ReportCompareAlta() ' ' ReportCompareAlta 宏 ' 添加 D 列为“ALTA”的实例

Dim varSheetA As Variant
Dim varSheetB As Variant
Dim varSheetC As Variant
Dim StrValue As Variant
Dim strRangeToCheck As String
Dim iRow As Long
Dim iCol As Long
Dim WbkA As Workbook
Dim WbkB As Workbook
Dim WbkC As Workbook
Dim counter As Long

Set WbkA = Workbooks.Open(Filename:="G:\Reporting\AH_MISSE_FEB2013.xls")
Set WbkB = Workbooks.Open(Filename:="G:\Reporting\AH_MISSE_MAR2013.xls")
Set WbkC = Workbooks.Open(Filename:="G:\Reporting\ReportCompare.xls")
Set varSheetA = WbkA.Worksheets("LocalesMallContratos")
Set varSheetB = WbkB.Worksheets("LocalesMallContratos")
Set varSheetC = WbkC.Worksheets("Sheet1")


strRangeToCheck = "A1:IV65536"

Debug.Print Now
varSheetA = WbkC.Worksheets("Sheet2").Range(strRangeToCheck) 'may be confusing code here
varSheetB = WbkC.Worksheets("Sheet3").Range(strRangeToCheck) 'may be confusing code here
Debug.Print Now

counter = 0

For iRow = LBound(varSheetA, 1) To UBound(varSheetA, 1)        
        If varSheetB(iRow, "B") = varSheetA(iRow, "B") & varSheetB(iRow, "B") <> "GERENCIA" & varSheetB(iRow, "B").Value <> "" & varSheetB(iRow, "D") = "ALTA" Then
            StrValue = ""
            varSheetB.Range("iRow:B").Select 
            Selection = StrValue
            ActiveSheet = varSheetC
            Range("A1").Select
            Selection.Offset(counter, 0).Value = StrValue
            counter = counter - 1

        Else
            "SKIP"
        End If         
Next iRow

结束子

【问题讨论】:

    标签: vba if-statement foreach skip


    【解决方案1】:

    只需删除 Else:

        If varSheetB(iRow, "B") = varSheetA(iRow, "B") & varSheetB(iRow, "B") <> "GERENCIA" & varSheetB(iRow, "B").Value <> "" & varSheetB(iRow, "D") = "ALTA" Then
            StrValue = ""
            varSheetB.Range("iRow:B").Select 
            Selection = StrValue
            ActiveSheet = varSheetC
            Range("A1").Select
            Selection.Offset(counter, 0).Value = StrValue
            counter = counter - 1
    
        End If     
    

    【讨论】:

    • 感谢@nullptr 的帮助
    【解决方案2】:

    如上所述,您可以省略 Else 部分。

    如果你想真正看到“跳过”,你可以这样做:

    Else
       Debug.Print "SKIP"
    End If
    

    这将在即时窗口中显示“跳过”(Ctrl + G)

    【讨论】:

      猜你喜欢
      • 2015-12-02
      • 1970-01-01
      • 2019-10-13
      • 2014-12-12
      • 1970-01-01
      • 2022-12-12
      • 1970-01-01
      • 2020-06-14
      • 2011-12-25
      相关资源
      最近更新 更多