問題:私は2つの列の名前を比較しています。プライマリ列の名前がセカンダリ列の名前と一致する場合は、一致する名前を文字列の配列に追加したいと思います。Dynamic Array VBAに文字列を追加
機能1:このブール関数は、一致があるかどうかを示すべきである:
Function Match(name As String, s As Worksheet, column As Integer) As Boolean
Dim i As Integer
i = 2
While s.Cells(i, column) <> ""
If s.Cells(i, column).Value = name Then
Match = True
End If
i = i + 1
Wend
Match = False
End Function
機能2:この関数は、文字列の動的配列に一致する名前を追加する必要があります。ここでは、私は配列 - 新しい提案に何か提案がありますか?
Function AddToArray(ys) As String()
Dim a() As String
Dim size As Integer
Dim i As Integer
Dim sh As Worksheet
Dim rw As Range
size = 0
ReDim Preserve a(size)
For Each rw In sh.Rows
If Match(sh.Cells(rw.Row, 1), s, column) = True Then
??
size = size + 1
End Function
まず、 'AddToArray'関数で' Match'関数を呼び出すと、 's'だが、ワークシートを変数名' sh'として宣言しています。これは何も初期化していません。宣言されておらず、初期化されていないパラメータ 'column'を使って呼び出すので、この文は機能しません。 – OpiesDad
もう1つ:「マッチ」機能が動作しません。書かれているように、 'While'ループを通過して自動的に' False'に設定されるので、常に 'False'を返します。このようにするには、関数の始まりに 'Match = False'ステートメントを置く必要があります。 – OpiesDad