Excel VBA循环遍历单元格并替换它们的值

时间:2010-11-09 23:04:02

标签: excel excel-vba excel-2010 vba

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

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 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

For counter = 2 To 20

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

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

On Error Goto Failed

在顶部和结束之前添加

Failed: 
'handle error here

“找不到对象”可能来自curCell.Text调用(curCell为null,没有或无效,因此调用它上面的.Text失败)或ActiveSheet.Cells调用(不确定是否会发生这种情况)< / p>