2016-04-04 21 views
-1

私はTextBoxとListBoxを持っています。Excelの検索文字列を複数の単語でセルに

は、私は、文字列A = そして私を「日が輝いている」を持っている:私は、テキストボックスに書かれた特定の複数の単語(キーワード)を含む範囲内の文字列を検索し、リストボックスたとえば

でそれを表示したいです範囲を調べ、テキストボックスに「sun shinning」と書くときに、これらの特定の単語を含むセル値を見つけて表示したい。 私の最後の文字列を調べて、 "sun"という単語を小文字で書きます。

私はコード

Sub AAA() 

    Dim ws As Worksheet 
    Set ws = Worksheets("BBB") 
    Dim LastRow As Long 
    Dim i As Long 


     ZZZ.Clear 
     LastRow = ws.Range("D" & Rows.Count).End(xlUp).Row 
     With ZZZ 
      .ColumnCount = 3 
      .ColumnWidths = "100;400" 

      For i = 2 To LastRow 
       ' For x = 0 To UBound(z) 
        If ws.Range("E" & i) Like AAA 

.Value & "*" Then 

          .AddItem ws.Range("D" & i) 
          .column(1, ZZZ.ListCount - 1) = ws.Range("E" & i) 
          '.column(2, ZZZ.ListCount - 1) = ws.Range("E" & I) 

        End If 
       ' Next x 
      Next i 

     End With 

End Sub 

しかし、私は、私はエラーメッセージが表示されます各単語で文やループを分割する責任第二のループを追加しようとするたびに書きました。

これを行うためにコードを単純に変更する方法がありますか?

+1

これはC#関連ではありません - これを削除してください、それは純粋にvbaです。それはまたあなたがあなたが得るどんなエラーのようなあなたの質問をより明確にすることができる場合、人々を助けるでしょう。 – BugFinder

答えて

1

テキストボックスAAAに入力された複数の単語が常にスペースで入力されていると仮定すると、この手順は機能します(試して、を試しました)。

この手順では、Split関数を使用して、AAAテキストボックス内の単語を配列にロードした後、各セルの配列をループします。私はこれを入力すると

Sub AAA() 

    Dim ws As Worksheet 
    Set ws = Worksheets("BBB") 
    Dim LastRow As Long 
    Dim i As Long 


     ZZZ.Clear 
     LastRow = ws.Range("D" & Rows.Count).End(xlUp).Row 

     With ZZZ 

      .ColumnCount = 3 
      .ColumnWidths = "100;400" 

      For i = 2 To LastRow 

       Dim sWords() As String, x As Integer 

       sWords = Split(AAA.Value, " ") 

       For x = 0 To UBound(sWords) 

        If ws.Range("E" & i) Like "*" & sWords(x) & "*" Then 

         .AddItem ws.Range("D" & i) 
         .Column(1, Sheet1.ZZZ.ListCount - 1) = ws.Range("E" & i) 

        End If 

       Next x 

      Next i 

     End With 

    End Sub 

は、私はそれが配列一度さらに高速ループになると全範囲内の各単語のいずれかの一致を探すことが考えを持っていたが、私はあなたにそれを任せます。

+0

不幸にも私はエラーを得ました。引数はスプリット(AAA.value、 "")に沿ってオプションではありません - 理由はわかりません。修正するのは簡単だと思いますが、解決策を見つけることができません。 – wiecman

+0

@wiecman - > 'AAA'テキストボックスをワークシートに適格にする必要があるかもしれません(たとえば、vbaオブジェクト名...' Sheet1'など)。私はこのコードをテストし、オブジェクトを修飾したときに機能しました。 –

+0

私はTextBoxを持っているUserFormを使用し、オブジェクトとしてUserForm名を設定します。残念なことに、結果は同じです - 同じエラーです。テストしたファイルがありますか?それを私と共有することはできますか? – wiecman

関連する問題