2010-11-09 215 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