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
È stato utile?

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)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top