セルがこれらの値と等しいかどうかをチェックするために、いくつかの可能なエントリに対してセル値をチェックするUDFを開発する必要があります。ご覧のとおり、私はこのチェックを行う方法について考えています。しかし、私のために明確でない複数のオプションの項目を受け入れることができるように関数をコーディングする。例えば、私はEXCEL {CONCATENATE(text1、[text2、... text_n])}でCONCATENATEのような動的なものを探しています。 5オプションの引数を有するこのような機能のための私のコードは次の通りである:VBA/Excelのユーザー定義関数に複数のオプション引数を持たせる方法
Function IfAmong(TextToCheck As String, Text1 As String, Optional Text2 As String, _
Optional Text3 As String, Optional Text4 As String, Optional Text5 As String,_
Optional text6 As String) As Boolean
Dim dd As New Scripting.Dictionary
dd.CompareMode = TextCompare
dd.Add Text1, dd.Count
If Text2 <> "" Then dd.Add Text2, dd.Count
If Text3 <> "" Then dd.Add Text3, dd.Count
If Text4 <> "" Then dd.Add Text4, dd.Count
If Text5 <> "" Then dd.Add Text5, dd.Count
If text6 <> "" Then dd.Add text6, dd.Count
IfAmong = dd.Exists(TextToCheck)
dd.RemoveAll
End Function
私は(CONCATENATEように述べたように)ユーザが所望する任意のエントリの数が相対したいです。可能であれば、ループを介して自動的にエントリのチェックを行います。テキストを配列として追加しようとしましたが、動作しませんでした!
for i =2 to Ubound(text(i))
if text(i) <>"" then..........
next
私はそれもできませんでした。
おかげに関して、 M
ありがとう、良い点。私は配列関数のための同様のルーチンを持っていたので、ここでそれを再適用していました。あなたのコードはより良く効率的です。高く評価。 –
次のiのdimとiは必須ではなく、次に私はエラーを引き起こすことに注意してください。コードを編集しましたが、適用前にピアレビューが必要です。 –
あなたは間違いなしです。私は 'For i = LBound(Text)to UBound(Text)'を使い、 'For Each Loop'に変更したときにそれらのビットを変更するのを忘れてしまいました。良い点 – Tom