Excel VBA bucle a través de las células y la sustitución de sus valores
-
30-09-2019 - |
Pregunta
Estoy tratando de construir una macro que gira a través de una columna de celdas en lugar de Á código de dos letras del país en esa celda con el nombre de ese país. Sin embargo, me sale un error objeto no encontrado cuando trato de ejecutar la macro.
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
Solución
La propiedad de texto es de sólo lectura - no se puede establecer. Asignar a la propiedad Value y debería funcionar (por ejemplo curCell.Value = "Japan"
)
Otros consejos
Estoy seguro de que tiene una gran razón para usar una macro para esto, pero es posible que desee ver en las funciones de hoja de LOOKUP o BUSCARV como una manera de hacer algo como esto sin tener que escribir una macro.
debe ser capaz de entrar en el depurador, haga clic a la izquierda de su texto en el editor de macros y la colocación de un punto rojo en la línea
For counter = 2 To 20
A continuación, puede pasar a través de la macro hasta llegar al error.
Como alternativa se puede añadir el control de errores a la macro
On Error Goto Failed
en la parte superior y antes de la sub extremo add
Failed:
'handle error here
"Objeto no encontrado" es probablemente de la llamada curCell.Text (curcell es nulo, nada, o no es válida, así que llamar .Texto en él está fallando) o los ActiveSheet.Cells llamar (no sé si esto puede suceder)