代码之家  ›  专栏  ›  技术社区  ›  Andrew Lauer Barinov

Excel VBA循环遍历单元格并替换其值

  •  1
  • Andrew Lauer Barinov  · 技术社区  · 15 年前

    我正在尝试构建一个宏,该宏循环遍历一列单元格,并将该单元格中的两个字母的国家代码替换为该国家的名称。但是,当我尝试运行宏时,会得到一个“找不到对象”错误。

    Sub ChangeCountryText()
    '
    ' ChangeCountryText Macro
    ' Changes country codes
    '
        For counter = 2 To 20
            Set curCell = ActiveSheet.Cells(counter, 1)
            Select Case curCell.Text
                Case "JP"
                    curCell.Text = "Japan"
                Case "FR"
                    curCell.Text = "France"
                Case "IT"
                    curCell.Text = "Italy"
                Case "US"
                    curCell.Text = "United States"
                Case "NL"
                    curCell.Text = "Netherlands"
                Case "CH"
                    curCell.Text = "Switzerland"
                Case "CA"
                    curCell.Text = "Canada"
                Case "CN"
                    curCell.Text = "China"
                Case "IN"
                    curCell.Text = "India"
                Case "SG"
                    curCell.Text = "Singapore"
            End Select
        Next counter
    
    End Sub
    
    3 回复  |  直到 15 年前
        1
  •  6
  •   sven    15 年前

    文本属性是只读的-您不能设置它。分配给Value属性,它应该可以工作(例如 curCell.Value = "Japan" )

        2
  •  2
  •   sven    15 年前

    我确信您有充分的理由为此使用宏,但您可能希望查看lookup或vlookup工作表函数,以便在不编写宏的情况下执行类似的操作。

        3
  •  0
  •   Michael Pryor    15 年前

    您应该能够通过在编辑器中单击宏文本左侧并在行上放置一个红点来进入调试器。

    For counter = 2 To 20
    

    然后您可以单步执行宏,直到出现错误。

    或者,可以将错误处理添加到宏中

    On Error Goto Failed
    

    在顶部和结尾之前添加

    Failed: 
    'handle error here
    

    “找不到对象”可能来自CurCell.Text调用(CurCell为空、Nothing或无效,因此调用.Text失败)或ActiveSheet.Cells调用(不确定是否会发生这种情况)

    推荐文章