首页 > 解决方案 > VBA中循环内的if语句 - excel

问题描述

我正在尝试在 VBA for Excel 的循环中编写一个带有简单 IF 语句的宏。老实说,我不知道我在做什么。我让 IF 语句工作,然后尝试在它周围添加一个循环 - 但是循环不起作用。

基本上我想编写一个宏来检查单元格 F11,然后将 IF 语句的结果添加到 G11,然后下降到下一行,检查 F12,将结果添加到 G12 等,直到最后。下面是代码。如果有人可以帮助我,那就太好了!

Sub Country()    
    Dim cell As Range    
    For Each cell In ActiveSheet.Range("G11:G100")    
        If ActiveCell.Offset(0, -1) = "AUBNE" Then
            ActiveCell.FormulaR1C1 = "AUSTRALIA"    
        ElseIf ActiveCell.Offset(0, -1) = "CNTAO" Then
            ActiveCell.FormulaR1C1 = "CHINA"    
        Else: ActiveCell.FormulaR1C1 = "NA"    
        End If    
    Next cell    
End Sub

标签: excelvba

解决方案


如果您的测试语句要更长,您也可以使用Select Case. 在这种情况下,它可能会更简洁一些,特别是如果多个值要返回同一个国家/地区。

此外,myCell(或其他任何东西)而不是cell. 避免声明接近预定义对象的自己的变量是明智的。以后可能会导致混乱/错误。


Option Explicit

Sub Country()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim myCell As Range

Application.ScreenUpdating = False
    For Each myCell In ws.Range("G11:G100")
        Select Case myCell.Offset(, -1).Value
            Case "AUBNE"
                myCell = "AUSTRALIA"
            Case "CNTAO"
                myCell = "CHINA"
            Case Else
                myCell = "NA"
        End Select
    Next myCell
Application.ScreenUpdating = True

End Sub

推荐阅读