特定の国がOECDのメンバーであるかどうかを確認する簡単なUDFを作成しています。国の名前すべてのOECD諸国を含む列の最初のセルを含むVBA for ExcelでUDFに無効な名前が入力されています
入力を含む
Excelのセル:私は2つの入力を持っています。
機能は、ループを介してCandidate
とcountries
の列のセルの内容を比較します。候補者名がいずれのOECD諸国とも一致しない場合、最終的にはOECD以外の国として分類される。
Function OECD(Candidate, Countries)
Dim Candidate As String
Dim Countries As String
OECDCountry = Countries 'Variable that changes at every iteration, I compare the name of the candidate to this
For i = 1 To 34
If Candidate.Value = OECDCountry Then
OECD = 2
Else: OECDCountry = Countries.Offset(i, 0)
Next i
'If the column next to the candidate name, where I am running this function, is still empty, record the country as non-OECD
If Candidate.Offset(0, 1) <> 2 Then OECD = 1
End Function
しかし、私は機能を使用しようとすると、第2の入力を選択しながら、私は次のエラーメッセージが表示されます:
あなたが入力した名前
私のコードは次のようです有効じゃない。この理由は含めることができます。
-The名が文字または-The名はExcelと
-The名前の競合が内蔵されたスペースやその他の無効な文字が含まれてい
アンダースコアで始まっていません名前またはワークブック内の別のオブジェクトの名前
なぜこのエラーメッセージが表示され、修正できますか?
のようにセルの数式でワークシートから呼び出します。変数に '候補 'と' Countries'をあなたの関数に引数として渡すように要求し、関数自体に同じ名前の変数を宣言します。それらは同一の名前であってはならない可能性があります。また、 'Candidate.Value'を' Dim Candidate As String'にしようとしましたが、String変数に.Valueプロパティがありません(ただし、渡された引数がセル参照として渡された場合でも可能です)。 – tigeravatar
2番目のパラメータ 'Countries As Range'の使用を検討すると、** UDF **コードがより簡単になります –
そして、' OECDCountry'を 'String'と宣言する必要があります。また、UDFを「揮発性」として宣言して、すべての国の列を変更することでUDFを再呼び出しできるようにする必要があります。そして、あなたはUDFを必要とせずにすべてを行うために 'VLOOKUP'を使うことを考えましたか? – YowE3K