許せない心理テスト

エクセルの表から任意の文字列をカウントしたいのですが、一部セルでなくテキストボックスにて表が作成されている部分があります。
このテキストボックス内の文字列を検索する方法はあるのでしょうか?
客先指定のフォームのため作り直すことができないのですが、何かよい方法をご存知でしたらぜひご教示ください。

A 回答 (4件)

横から失礼。


>このテキストボックス内の文字列を検索する方法はあるのでしょうか?
意味合いとしては
>テキストに書かれた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
    • good
    • 1

すみません。



>Dim TextValue As Integer 'テキストVALUE保持用

ですが、「As String」でお願いします^^;
    • good
    • 1

#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


テストはしていませんが、こんな感じで出来るかと思います。
エラーが出た場合、意味合いが違う場合は補足お願いします。
    • good
    • 0

ちょっと理解できないので以下の質問への補足をお願いします。



>表から任意の文字列をカウントしたいのですが
・カウントとはどういうカウントですか?アドレスを取得ですか?文字数のカウントですか?それともその他のカウントですか?

>このテキストボックス内の文字列を検索する方法はあるのでしょうか?
・テキストに書かれたVALUE値をテキスト内で検索ということですか?テキストに書かれたVALUE値を引数に、エクセルファイル内で検索、ということですか?それとも他の意味ですか?

>客先指定のフォームのため作り直すことができないのですが、
・ユーザーフォームを利用していますか?コントロールボックスからの利用ですか?VBAは使用可能ですか?

以上、補足お願いします。

この回答への補足

説明が足りず申し訳ありません。
趣旨から申しますと、一枚のエクセルシート内に、任意の文字列が何個表示されているかを知りたいのです。

>カウントとはどういうカウントですか?アドレスを取得ですか?文字数のカウントですか?それともその他のカウントですか?

任意の文字列が含まれるテキストボックスの数をカウントしたいということです。
エクセル関数でいうとCOUNTIFです。

>テキストに書かれたVALUE値をテキスト内で検索ということですか?テキストに書かれたVALUE値を引数に、エクセルファイル内で検索、ということですか?それとも他の意味ですか?

テキストに書かれたVALUE値を引数に、エクセルファイル内で検索ということです。
現在、同じ文字列AAでも、セルに入力されているものと、テキストボックスに入力されたものとが混在しており、例えばAA、AB、ACという文字列を含んだ、セルの数のみCOUNTIFにて数量が把握できている状況です。

>ユーザーフォームを利用していますか?コントロールボックスからの利用ですか?VBAは使用可能ですか?

ユーザーフォーム、コントロールボックスともに利用しておりません。
VBAは使用可能です。

以上、補足でした。

補足日時:2009/06/17 14:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報