2010-11-09 26 views
1

J'essaye de construire une macro qui parcourt une colonne de cellules et remplace un code de pays de deux lettres dans cette cellule par le nom de ce pays. Cependant, je reçois un objet non trouvé erreur lorsque j'essaie d'exécuter la macro.Excel VBA Boucler les cellules et remplacer leurs valeurs

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

Quelle ligne obtenez-vous l'objet introuvable? Quand j'ai testé, curCell.Text a causé un problème, qui peut être corrigé en utilisant curCell.Value. Ce code est également sensible à la casse. – Fionnuala

+0

Oui, la mise en œuvre de cette modification résout le problème. Merci pour le conseil. –

Répondre

6

La propriété Text est en lecture seule - vous c ne le mets pas. Affectez à la propriété Value et cela devrait fonctionner (par exemple curCell.Value = "Japan")

+0

Merci qui a résolu mon problème. –

0

Vous devriez être en mesure d'entrer dans le débogueur en cliquant sur la gauche de votre texte macro dans l'éditeur et en plaçant un point rouge sur la ligne

For counter = 2 To 20 

Ensuite, vous pouvez parcourir votre macro jusqu'à ce que vous arrivez à l'erreur.

Sinon, vous pouvez ajouter à votre erreur de manipulation macro

On Error Goto Failed 

en haut et avant la fin ajouter sous

Failed: 
'handle error here 

« objet introuvable » est susceptible de l'appel curCell.Text (curCell est null, Nothing, ou invalide, donc l'appel .Text sur elle échoue) ou l'appel ActiveSheet.Cells (pas sûr si cela peut arriver)

2

Je suis sûr que vous avez une bonne raison d'utiliser une macro pour cela, mais vous voudrez peut-être regarder dans les fonctions de feuille de calcul LOOKUP ou VLOOKUP comme un moyen de faire quelque chose comme ça sans écrire de macro.

+0

Merci pour la suggestion, j'ai l'intention de réexécuter cette procédure sur plusieurs classeurs/feuilles de calcul afin que je voulais contourner copier et coller les cellules contenant des informations VLOOKUP. –