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

投稿時間:2003/01/18(Sat) 21:19
投稿者名:ノッポ
Eメール:
URL :
タイトル:
TextMatrixについて
こんばんは。
現在、MSFlexGridを使用していますがTextMatrixを使って文字列の
検索を行っています。
しかし1つの条件文字列は検索させることができるのですが2つの
条件を検索させることができません。

例えば、"あ"、"う"を検索しヒットしたらMSFlexGridに表示すると
いったようにしたいのです。

ちなみに今は下のようにコードを記載してます
  If "あ" = .TextMatrix(Row, 1) Then
  ……
  End If

どなたかお教えください。よろしくお願いします。

投稿時間:2003/01/18(Sat) 21:30
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: TextMatrixについて
ヘルプで Instr And Or を調べて下さい。

又、ご覧になっていなければ、ここの MSFlexGrid関係の MSFlexGrid のセル内を検索する を
見て下さい。

投稿時間:2003/01/18(Sat) 21:41
投稿者名:ノッポ
Eメール:
URL :
タイトル:
Re^2: TextMatrixについて
> ヘルプで Instr And Or を調べて下さい。

花ちゃんさん、早急のご返事ありがとうございます。
当方のVBにはヘルプがありません。

If "あ" Or "う" = .TextMatrix(Row, 1) Then
で試してみましたが、型が一致しません。が表示されます。
Andでも一緒でした。

投稿時間:2003/01/18(Sat) 21:55
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: TextMatrixについて
> 当方のVBにはヘルプがありません。

VBのバージョンは?

> If "あ" Or "う" = .TextMatrix(Row, 1) Then

If "あ"  = .TextMatrix(Row, 1) Or "う" = .TextMatrix(Row, 1) Then

ならどうですか?

投稿時間:2003/01/18(Sat) 22:04
投稿者名:ノッポ
Eメール:
URL :
タイトル:
Re^4: TextMatrixについて
> VBのバージョンは?
6.0です。

> If "あ"  = .TextMatrix(Row, 1) Or "う" = .TextMatrix(Row, 1) Then
> ならどうですか?

やってみましたが、「インデックスが有効範囲にありません」が表示されます。
いや〜 難しいもんですね。

投稿時間:2003/01/18(Sat) 22:20
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: TextMatrixについて
> やってみましたが、「インデックスが有効範囲にありません」が表示されます。

If "あ"  = .TextMatrix(Row, 1) Or "う" = .TextMatrix(Row, 1) Then

Row の値はいくつになっていますか?
全体のプログラムを投稿して見て下さい。

投稿時間:2003/01/18(Sat) 23:54
投稿者名:ノッポ
Eメール:
URL :
タイトル:
Re^6: TextMatrixについて
> Row の値はいくつになっていますか?
> 全体のプログラムを投稿して見て下さい。

    No = 0
    With Form1.MSFlexGrid1
        For Row = .FixedRows To .Rows - 1
                If "あ" = .TextMatrix(Row, 4) Then
                    .Row = Row
                    .Col = 1
                    kana01(1) = .Text
                    .Col = 2
                    kana01(2) = .Text
                    .Col = 3
                    kana01(3) = .Text
                    .Col = 4
                    kana01(4) = .Text
                    .Col = 5
                    kana01(5) = .Text
                    .Col = 6
                    kana01(6) = .Text
                    .Col = 7
                    kana01(7) = .Text
                        With Form1.MSFlexGrid1
                            .Visible = False
                            .Rows = No + 2
                            .Row = No + 1
                                For k = 1 To 7
                                    .Col = k
                                    .Text = kana01(k)
                                Next k
                            .Col = 4
                            .Sort = 5
                            No = No + 1
                            総数.Caption = "登録数 " & No & "名"
                            .RowHeight(No) = 250
                            .Visible = True
                            .Row = 1
                        End With
                End If
      Next Row
    End With

こんな感じですが、分かりますか?

投稿時間:2003/01/19(Sun) 10:34
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^7: TextMatrixについて
>         For Row = .FixedRows To .Rows - 1
ここの Row は他の変数名(Ro 等)を使用して下さい。

>                         With Form1.MSFlexGrid1
>                             .Visible = False
>                             .Rows = No + 2
>                             .Row = No + 1

.Rows = No + 2
この部分は何をしたいのかよく解りませんが

.Rows = .Rows + No + 2 このようにしないと行が削除されエラーとなります。

投稿時間:2003/01/20(Mon) 14:26
投稿者名:ノッポ
Eメール:
URL :
タイトル:
Re^8: TextMatrixについて
> .Rows = No + 2
> この部分は何をしたいのかよく解りませんが

返事が遅くなってすいません。
何がしたいのか書いていないので分からないですよね。
MSFlexGridでcol=1に管理番号、col=2に氏名を、col=3にフリガナの
頭文字を格納してあります。50音順の各コマンドボタンで例えば
"あいうえお"というコマンドボタンを押したらMSFlexGridにあ〜おの
氏名だけを表示するといったものを作りたいのです。
仕事でどうしても必要なものなのでお教えください。

投稿時間:2003/01/20(Mon) 16:22
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
TextMatrix
データ件数や速度等の問題があるかと思うのですが、MSFlexGrid コントロールを
2個用意し、全データ表示用と検索結果表示用を使い分けるのが一番簡単かと
思います。(片方を非表示)

データ件数が少ないのなら元のデータを配列に読み込んでおいて検索結果を
MSFlexGrid コントロールに表示する方法もありますが

今のコードでは、一度目は検索表示できても、2度目以降は元のデータが
ないので検索できませんよね

投稿時間:2003/01/20(Mon) 17:52
投稿者名:ノッポ
Eメール:
URL :
タイトル:
TextMatrix
> データ件数や速度等の問題があるかと思うのですが、MSFlexGrid コントロールを
> 2個用意し、全データ表示用と検索結果表示用を使い分けるのが一番簡単かと
> 思います。(片方を非表示)

上の方法でうまくいきました。
花ちゃんさん、ありがとうございました。

質問ついでにもう一つお教えください。
検索してTextMatrixで指定文字が引っ掛かんなかった場合はMSFlexGridに
何も表示しないといったようにできればしたいのです。
今の場合ですと、検索結果表示用に前の検索結果が残ってしまうのです。
どのようにコードを修正・追加すれば良いのでしょうか?

投稿時間:2003/01/20(Mon) 18:09
投稿者名:nobu
Eメール:
URL :
タイトル:
TextMatrix
> 検索してTextMatrixで指定文字が引っ掛かんなかった場合はMSFlexGridに
> 何も表示しないといったようにできればしたいのです。
> 今の場合ですと、検索結果表示用に前の検索結果が残ってしまうのです。
> どのようにコードを修正・追加すれば良いのでしょうか?

検索を開始する前に検索結果表示エリアをクリアすれば良いのではありませんか?
他の処理でもそうですが変数や表示エリアの初期化は大事な事です。
例えば加算結果を求めて表示しているような場合に計算開始前に答えを初期化しないと
計算を実行の度に答えが増えて行ってしまいます。

投稿時間:2003/01/20(Mon) 19:01
投稿者名:ノッポ
Eメール:
URL :
タイトル:
TextMatrix

> 検索を開始する前に検索結果表示エリアをクリアすれば良いのではありませんか?

そうですよね。よく考えれば分かることですよね。
すいませんでした。今後は気をつけます。
nobuさん、そして花ちゃんさん、ありがとうございました。