[リストへもどる]
一括表示

投稿時間:2002/09/13(Fri) 02:43
投稿者名:PM
Eメール:
URL :
タイトル:
MSFlexGridで検索
はじめて質問させて頂きます。

初心者ながらMSFlexGridを使用してデータを表示させています。
その中で検索をしたいのですが、例えばText1.textBoxに指定した
文字列とMSFlexGridにある値が一致したら、その行を選択・反転表示
するといった様な事はできませせんか?

色々と探してみたのですが分かりません。
アドバイス等を頂けたらと思っています。
よろしくお願いします。

投稿時間:2002/09/13(Fri) 09:22
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: MSFlexGridで検索
各、行内のセルのデータをひとつにして(つないだりして)Instr 関数で
検索すればいいかと思います。
尚、データを連結する方法は色々ありますので、調べて見て下さい。

投稿時間:2002/09/13(Fri) 14:12
投稿者名:PM
Eメール:
URL :
タイトル:
Re^2: MSFlexGridで検索
> 尚、データを連結する方法は色々ありますので、調べて見て下さい。

朝から色々と探しているのですが、これだと言うのが無く分かりません。
ちょっとしたサンプルでも頂けたらと思っています。
よろしくお願いします。

投稿時間:2002/09/13(Fri) 15:18
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: MSFlexGridで検索
十分に検証していませんので、参考程度にして下さい。

Private Sub Command1_Click()
    Dim i      As Long
    Dim Co     As Long
    Dim myDate As String
    With MSFlexGrid1
        .Visible = False
        For i = .FixedRows To .Rows - .FixedRows
            .Row = i
            .Col = .FixedCols
            .ColSel = .Cols - .FixedCols
            myDate = .Clip
            If InStr(myDate, "探し物") Then
                For Co = .FixedCols To .Cols - .FixedCols
                    .Row = i
                    .Col = Co
                    .CellBackColor = QBColor(11)
                Next Co
            End If
        Next i
        .Row = .FixedRows
        .Col = .FixedCols
        .Visible = True
    End With
End Sub

投稿時間:2002/09/13(Fri) 17:46
投稿者名:PM
Eメール:
URL :
タイトル:
Re^4: MSFlexGridで検索
花ちゃんさん、ありがとうございました。
検索の方は出来ることが出来ました。
出来た時は本当に感激しました。感謝しています。

さて、質問ついでにもう一つあるのですが、
花ちゃんさんにお教え頂いた方法ではセルの色は
変わるのですが、カーソルがそのセルに移動しません。

出来ればカーソルも一緒に移動してほしいのですが
可能でしょうか?

投稿時間:2002/09/13(Fri) 18:29
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: MSFlexGridで検索
> 変わるのですが、カーソルがそのセルに移動しません。

最初に何をどうしたいかをはっきりさせておいて下さい。
それによってやる事が変ってきます。
どのセルかを特定するならセルを一つずつ調べる必要があります。

>
> 出来ればカーソルも一緒に移動してほしいのですが
> 可能でしょうか?

そのようにすれば可能です。
但し、複数見つかった時は、どのように処理するつもりですか?

投稿時間:2002/09/13(Fri) 19:35
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^6: MSFlexGridで検索
これを試して見て下さい。

Private Sub Command1_Click()
    Dim Ro     As Long
    Dim Co     As Long
    Dim Ret    As Long
    With MSFlexGrid1
        For Ro = .FixedRows To .Rows - .FixedRows
            For Co = .FixedCols To .Cols - .FixedCols
                If Text1.Text = .TextMatrix(Ro, Co) Then
                    .Col = Co
                    .Row = Ro
                    Ret = MsgBox("これですか", vbYesNo)
                    If Ret = vbYes Then
                        Exit Sub
                    End If
                End If
            Next Co
        Next Ro
    End With
End Sub

投稿時間:2002/09/13(Fri) 20:55
投稿者名:PM
Eメール:
URL :
タイトル:
Re^7: MSFlexGridで検索
こんばんは
花ちゃんさん、思いとおりに出来ることが出来ました。

本当に感謝しております。ありがとうございました。
しかしながら、まだまだ初心者なもので、また機会が
ありましたら質問させて頂きます。

投稿時間:2002/09/15(Sun) 15:16
投稿者名:PM
Eメール:
URL :
タイトル:
Re^6: MSFlexGridで検索
こんにちは、VB初心者のPMです。
またまた質問させて頂きます。

> 但し、複数見つかった時は、どのように処理するつもりですか?

作業を進めて行く内に、そのような場合がある事が分かりました。
その為、以下のような処理のようになるようにしたいと思います。

MSFlexGrid1に
AAA  BBB  CCC
DDD  EEE  FFF
GGG  HHH  CCC

CCCを検索したらMSFlexGrid2に
AAA  BBB  CCC
GGG  HHH  CCC

カーソル位置をMSFlexGrid2に移動

と表示するようにしたいです。
どうか御指導のほど、よろしくお願いします。

投稿時間:2002/09/15(Sun) 16:06
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^7: MSFlexGridで検索
自分で設定を変更して色々試して見て下さい。
でないと、身につきませんよ!

投稿時間:2002/09/15(Sun) 17:31
投稿者名:PM
Eメール:
URL :
タイトル:
Re^8: MSFlexGridで検索
> 自分で設定を変更して色々試して見て下さい。
> でないと、身につきませんよ!

そのとおりだと思います。
しかしながら昨日から色々と試してはいるのです。
もう少し頑張ってみますね。

投稿時間:2002/09/15(Sun) 18:31
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^8: MSFlexGridで検索
ヒントだけ
.Col = Co
.Row = Ro
この部分の値を変更して見てください

後は、ここの MSFlexGrid関係 の その他の小技集(その1) の中の

カレントセルの取得設定他行・列管理   関係を見て下さい。

投稿時間:2002/09/18(Wed) 13:06
投稿者名:PM
Eメール:
URL :
タイトル:
Re^9: MSFlexGridで検索
こんにちは、PMです。

ここ3日間ほど、この問題に挑戦しているのですが
まだ解決していません。
どうか御指導の程よろしくお願いします。

投稿時間:2002/09/18(Wed) 17:22
投稿者名:ゆう(U)
Eメール:
URL :
タイトル:
MSFlexGridで検索
手順は
1.検索結果表示用のMSFlexGridの初期化
※ここはお好みで設定してください

2.データ行の先頭から最後まで繰り返す
※For Ro = .FixedRows To .Rows - 1
   対象のセルが検索対象なら
※  For Co = .FixedCols To .Cols - 1
※    If Text1.Text = .TextMatrix(Ro, Co) Then
    対象の行の内容を検索結果へ追加する
※ここで下の2点でデータのコピーをします
    列のFor Nextを抜ける
※複数の列が対象になっている場合、1列3列と対象になると
 複数の同じデータが追加されるので、列のForを抜けた方が
 良いです

3.対象のデータが存在するなら
  フォーカスを検索結果のグリッドへ移動する
※基本的なメソッドです、ヘルプで調べてね


でOKですね・・・


行のデータをそのまま追加するには、
「AddItem メソッド」が便利です。

追加内容の取得には・・・
「Clip プロパティ」かな?
「TextMatrix プロパティ」でもOK

投稿時間:2002/09/19(Thu) 18:01
投稿者名:PM
Eメール:
URL :
タイトル:
MSFlexGridで検
こんにちは、ここ数日間はこの問題のみを挑戦しているPMです。
ゆう(U)さん、そして花ちゃんさん、アドバイスありがとうございます。

ゆう(U)さんのコードを参照して挑戦しているのですが・・・
> ※    If Text1.Text = .TextMatrix(Ro, Co) Then
>     対象の行の内容を検索結果へ追加する

「対象の行の内容を検索結果へ追加する」ここの部分が
うまく出来ません。再度アドバイスをよろしくお願いします。

投稿時間:2002/09/18(Wed) 17:21
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^7: MSFlexGridで検索
> CCCを検索したらMSFlexGrid2に
> カーソル位置をMSFlexGrid2に移動

Text1 から Text2 にフォーカス移動するのと同じです。