2010-11-09 279 views
1

我正在尝试构建一个循环遍历单元格列的宏,并将该单元格中的两个字母国家代码替换为该国家/地区的名称。但是,当我尝试运行宏时,我得到一个对象未​​找到错误。Excel 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 
+1

你没有找到对象?当我测试时,curCell.Text引起了一个问题,可以通过使用curCell.Value来纠正。此代码也区分大小写。 – Fionnuala 2010-11-09 23:12:16

+0

是的,实施该更改可解决问题。感谢您的建议。 – 2010-11-11 18:55:06

回答

6

Text属性为只读 - 您c不要设置它。分配给值属性,它应该工作(例如curCell.Value = "Japan"

+0

谢谢你解决了我的问题。 – 2010-11-11 18:43:25

0

您应该能够通过点击在编辑器中的宏文本的左侧,放置一个红点就行了

For counter = 2 To 20 

那么您可以通过宏步,直到进入调试你会发现错误。

或者你可以在上面添加处理错误宏

On Error Goto Failed 

,并在年底前减少添加

Failed: 
'handle error here 

“未找到对象”是从curCell.Text通话可能( curCell为空,无效或无效,因此调用.Text失败)或ActiveSheet.Cells调用(不确定是否可能发生)

2

我相信你有一个伟大的理由为此使用宏,但你可能想看看LOOKUP或VLOOKUP工作表函数作为一种方式在不写宏的情况下做这样的事情。

+0

感谢您的建议,我打算在多个工作簿/工作表上重新运行此过程,所以我想绕过复制并粘贴包含VLOOKUP信息的单元格。 – 2010-11-11 18:53:41