- 締切済み
エクセルのテキストボックス内は検索できないのでしょうか?
エクセルの表から任意の文字列をカウントしたいのですが、一部セルでなくテキストボックスにて表が作成されている部分があります。 このテキストボックス内の文字列を検索する方法はあるのでしょうか? 客先指定のフォームのため作り直すことができないのですが、何かよい方法をご存知でしたらぜひご教示ください。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- end-u
- ベストアンサー率79% (496/625)
横から失礼。 >このテキストボックス内の文字列を検索する方法はあるのでしょうか? 意味合いとしては >テキストに書かれたVALUE値を引数に、エクセルファイル内で検索ということです。 ではないような? アクティブなシートに配置されたシェイプのテキストボックスを対象に、 ある文字列を検索するサンプルなら以下。 Sub test() Dim tb As TextBox Dim st As String Dim n As Long st = InputBox("TextBox内で検索する文字を入力" & vbLf _ & "(部分一致は * 付加)") If st = "" Then Exit Sub For Each tb In ActiveSheet.TextBoxes If tb.Text Like st Then n = n + 1 End If Next MsgBox n End Sub アクティブなBookの全シートが対象なら Dim ws As Worksheet 'と変数を一個追加して For Each ws In ActiveWorkbook.Worksheets For Each tb In ws.TextBoxes If tb.Text Like st Then n = n + 1 End If Next Next
- sykt1217
- ベストアンサー率34% (277/798)
すみません。 >Dim TextValue As Integer 'テキストVALUE保持用 ですが、「As String」でお願いします^^;
- sykt1217
- ベストアンサー率34% (277/798)
#1です。 補足ありがとうございます。 >ユーザーフォーム、コントロールボックスともに利用しておりません。 とのことですが、そうしますと何からテキストボックスを出しているのでしょう?リンクでしょうか? まぁとりあえずテキストボックスということはオブジェクト名かオブジェクトIDがあると思うので、それを使い形になるかと思います。 また、検索とのことですので、「正規表現」ということになりますかね。 正規表現の代表的なものとして「Findメソッド」・「Like演算子」などが挙げられます。 Sub test() Dim count As Integer 'カウント用 Dim i As Integer '列ループ用 Dim j As Integer '行ループ用 Dim TextValue As Integer 'テキストVALUE保持用 With Worksheets("Sheet1") TextValue = onjectname.Value 'オブジェクト名.VALUEでテキストボックスの値を取得 count = 0 'カウント初期化 For i = 1 To 8 'A~H For j = 1 To 8 '1~8 If .Cells(j, i).Value Like TextValue Then '.Cells(j, i)の値が変数「TextValue」の値ならば count = count + 1 'カウントに+1 End If Next j Next i MsgBox TextValue & "は" & count & "個あります。" End With End Sub テストはしていませんが、こんな感じで出来るかと思います。 エラーが出た場合、意味合いが違う場合は補足お願いします。
- sykt1217
- ベストアンサー率34% (277/798)
ちょっと理解できないので以下の質問への補足をお願いします。 >表から任意の文字列をカウントしたいのですが ・カウントとはどういうカウントですか?アドレスを取得ですか?文字数のカウントですか?それともその他のカウントですか? >このテキストボックス内の文字列を検索する方法はあるのでしょうか? ・テキストに書かれたVALUE値をテキスト内で検索ということですか?テキストに書かれたVALUE値を引数に、エクセルファイル内で検索、ということですか?それとも他の意味ですか? >客先指定のフォームのため作り直すことができないのですが、 ・ユーザーフォームを利用していますか?コントロールボックスからの利用ですか?VBAは使用可能ですか? 以上、補足お願いします。
補足
説明が足りず申し訳ありません。 趣旨から申しますと、一枚のエクセルシート内に、任意の文字列が何個表示されているかを知りたいのです。 >カウントとはどういうカウントですか?アドレスを取得ですか?文字数のカウントですか?それともその他のカウントですか? 任意の文字列が含まれるテキストボックスの数をカウントしたいということです。 エクセル関数でいうとCOUNTIFです。 >テキストに書かれたVALUE値をテキスト内で検索ということですか?テキストに書かれたVALUE値を引数に、エクセルファイル内で検索、ということですか?それとも他の意味ですか? テキストに書かれたVALUE値を引数に、エクセルファイル内で検索ということです。 現在、同じ文字列AAでも、セルに入力されているものと、テキストボックスに入力されたものとが混在しており、例えばAA、AB、ACという文字列を含んだ、セルの数のみCOUNTIFにて数量が把握できている状況です。 >ユーザーフォームを利用していますか?コントロールボックスからの利用ですか?VBAは使用可能ですか? ユーザーフォーム、コントロールボックスともに利用しておりません。 VBAは使用可能です。 以上、補足でした。