1

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

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
4

3 回答 3

6

Text 属性是只读的 - 您无法设置它。分配给 Value 属性,它应该可以工作(例如curCell.Value = "Japan"

于 2010-11-10T02:20:14.307 回答
2

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

于 2010-11-10T03:00:04.287 回答
0

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

For counter = 2 To 20

然后你可以单步执行你的宏,直到你遇到错误。

或者,您可以向宏添加错误处理

On Error Goto Failed

在顶部和末尾子之前添加

Failed: 
'handle error here

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

于 2010-11-09T23:17:36.553 回答