Excel VBAはセルをループし、それらの値を置き換えます
-
30-09-2019 - |
質問
私は、セルの列を循環し、そのセル内の2文字の国コードをその国の名前に置き換えるマクロを構築しようとしています。ただし、マクロを実行しようとすると、オブジェクトが見つかりません。
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
解決
テキストプロパティは読み取り専用です - 設定できません。値プロパティに割り当てると機能するはずです(例: curCell.Value = "Japan"
)
他のヒント
これにマクロを使用する大きな理由があると確信していますが、マクロを書くことなくこのようなことをする方法として、ルックアップまたはvlookupワークシート機能を調べたいと思うかもしれません。
エディターのマクロテキストの左側にクリックして、ラインに赤い点を置くことでデバッガーを入力できるはずです
For counter = 2 To 20
次に、エラーに到達するまでマクロを踏み出すことができます。
または、マクロにエラー処理を追加することもできます
On Error Goto Failed
上部と最後のサブ追加
Failed:
'handle error here
「Object Not Found」はCurcell.Text Call(Curcellがnull、Noth、または無効なので、.textを呼び出すことが失敗します)またはActiveSheet.cells呼び出し(これが起こるかどうかはわかりません)
所属していません StackOverflow