Excel VBA связывание сквозь клетки и замена их ценностей
-
30-09-2019 - |
Вопрос
Я пытаюсь построить макрос, который циклы через столбец клеток и заменяет двухбуквенный код страны в этой клетке с именем этой страны. Однако я получаю объект не найденную ошибку, когда я пытаюсь запустить макрос.
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 (не уверен, если это может произойти)