tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
Findメソッドを使っての選択範囲内の文字の出現回数を数える(VB6.0 基本編) ( No.26 )  [親スレッドへ]
日時: 2013/05/23 09:41
名前: VBレスキュー(花ちゃん)

***********************************************************************************
* カテゴリー:[エクセル][][] *
* キーワード:Excel VBA,出現回数,検索,書き換え,Find メソッド,入力済みセル範囲 *
***********************************************************************************
サポート技術情報に掲載されていたサンプルを紹介していたのですが、テストしてみると
うまく動作しないし、Cell や Selection を使っているので、VB から使用するには間違った
使用をされかねないので、Excel の機能の Find メソッドを使って作ってみました。
ついでに書き換えもできるようにしております。

http://www.hanatyan.sakura.ne.jp/vb6/excel02.htm
VBからExcelを起動・終了する(基本操作部分) のコードを使ってExcelを起動・終了して下さい。

上記のコードに下記コードを追加してして試して見て下さい。

Private Sub Command3_Click()
    Dim c As Excel.Range
    Dim firstAddress As String
    Dim nextAddress As String
    Dim n As Long
    '検索範囲をxlSheet の入力済みセル範囲とする
    With xlSheet.Range(xlSheet.UsedRange.Address)
        'lookin:=xlValues 検索対象を[値]に設定
        Set c = .Find(Text1.Text, lookin:=xlValues)
        If Not c Is Nothing Then
            '見つかった場合、セルのアドレスを取得
            firstAddress = c.Address
            Do
                '見つかった件数をカウントする
                n = n + 1:       c.Value = "見っけ " & c.Address '見つかったセルの値を書き換える場合
                '見つかったセルの次のセルから再検索
                Set c = .FindNext(c)
                If Not c Is Nothing Then
                   nextAddress = c.Address
                Else
                    nextAddress = ""
                End If
            Loop While Not c Is Nothing And nextAddress <> firstAddress
        End If
    End With
    Label1.Caption = n & " 個見つかりました。"
End Sub

コードを変更された場合は、タスクマネージャにExcelのプロセスが残っていない事を確認して下さい。

※ 今後のサンプルは、上記同様にして試して下さい。

上記実行結果の図
http://www.hanatyan.sakura.ne.jp/bbs_gif/excelfind.gif



 [スレッド一覧へ] [親スレッドへ]