Excel VBA связывание сквозь клетки и замена их ценностей

StackOverflow https://stackoverflow.com/questions/4139629

Вопрос

Я пытаюсь построить макрос, который циклы через столбец клеток и заменяет двухбуквенный код страны в этой клетке с именем этой страны. Однако я получаю объект не найденную ошибку, когда я пытаюсь запустить макрос.

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
Это было полезно?

Решение

Свойство Text - только для чтения - вы не можете его установить. Назначьте свойство Value, и он должен работать (например, curCell.Value = "Japan")

Другие советы

Я уверен, что у вас есть большая причина использования макроса для этого, но вы можете захотеть посмотреть функции поиска или VLOWKUP, как способ сделать что-то подобное, не написав макрос.

Вы должны быть в состоянии войти в отладчик, нажав налево от вашего текста макроса в редакторе и поместив красную точку на линии

For counter = 2 To 20

Затем вы можете пройти через свой макрос, пока не дойдете до ошибки.

В качестве альтернативы вы можете добавить обработку ошибок в свой макрос

On Error Goto Failed

наверху и до конца поддавить

Failed: 
'handle error here

«Объект не найден», скорее всего из Curcell.text Call (Curcell - это нулевой, ничего, ничто или неверно, поэтому вызывает .text на нем не удается) или activeseShet.Cells Call (не уверен, если это может произойти)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top