Excel VBA Looping attraverso le cellule e sostituendo i loro valori
-
30-09-2019 - |
Domanda
Sto cercando di costruire una macro che cicli attraverso una colonna di celle e sostituisce un codice a due lettere in quella cella con il nome di quel paese. Tuttavia ottengo un errore oggetto non trovato quando si tenta di eseguire 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
Soluzione
La proprietà Text è in sola lettura - non è possibile impostarlo. Assegnare alla proprietà Value e dovrebbe funzionare (ad esempio curCell.Value = "Japan"
)
Altri suggerimenti
Sono sicuri di avere un buon motivo per l'utilizzo di una macro per questo, ma si consiglia di esaminare le funzioni di foglio di RICERCA o VLOOKUP come un modo per fare qualcosa di simile senza scrivere una macro.
Si dovrebbe essere in grado di entrare nel debugger cliccando a sinistra del testo macro nell'editor e mettendo un punto rosso sulla linea
For counter = 2 To 20
Poi si può fare un passo attraverso la macro fino ad arrivare a l'errore.
In alternativa è possibile aggiungere la gestione degli errori alla macro
On Error Goto Failed
nella parte superiore e prima della fine sub add
Failed:
'handle error here
"Oggetto non trovato" è probabile che dalla chiamata curCell.Text (curCell è nullo, nulla, o non valida, così chiamando .Text su di esso sta fallendo) oi ActiveSheet.Cells chiamata (non so se questo può accadere)