[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/06/11(Sat) 01:12
投稿者名:大崎西
Eメール:
URL :
タイトル:
msflexgridの非表示列のセル移動
初めて書き込みします。よろしくお願いします。
vb初心者ですが、msflexgridでデータ入力について調べています。
こちらのサンプル(hhttp://www.bcap.co.jp/hanafusa/VBHLP/MSFlexNO1.htm
で試しております。
Enterで右にアクティブセルを移動したいのですが、
ある列を非表示(colwidth=0)にするとその列で一旦セルが消えてしまします。
colwidth=0でも自然に動作するようにしたいのですが、解決策がなかなかわかりません。

すいませんが、アドバイスをよろしくお願いします。
vb6です。

投稿時間:2005/06/11(Sat) 07:15
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: msflexgridの非表示列のセル移動
> colwidth=0でも自然に動作するようにしたいのですが、解決策がなかなかわかりません。
If 文を1行入れれば済む事では。
(下記のようなコードがあったと思うのですが)

   If  次のセルの幅が 0 Then
       'セルを2つ移動
        .Col = .Col + 2
        .SetFocus
   Else
        'セルを1つ移動
        .Col = .Col + 1
   End If

投稿時間:2005/06/11(Sat) 14:10
投稿者名:大崎西
Eメール:
URL :
タイトル:
Re^2: msflexgridの非表示列のセル移動
ありがとうございます。おかげさまでひとつ前に進むことができました。
しかし、今度は列幅0が連続した場合のセルの進め方でつまずいています。
「セルの幅が0でないとこまですすめる」みたいなコードはどのように表現すればいいのでしょうか?
よろしくお願いいたします。

投稿時間:2005/06/11(Sat) 16:08
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: msflexgridの非表示列のセル移動
> 「セルの幅が0でないとこまですすめる」みたいなコードはどのように表現すればいいのでしょう
か?
少しは自分で考えて、思いついた事を試して見れば、誰にでも解る範囲の事かと思います。

投稿時間:2005/06/11(Sat) 21:23
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re^3: msflexgridの非表示列のセル移動
列幅が0の列があらかじめ判っているなら、列の値で判断すればいいのでは?

Select Case .Col
Case 1 '列幅が0の列が1つの場合
   .Col = .Col + 2
Case 5 '列幅が0の列が2つ連続している場合
   .Col = .Col + 3
Case ,Cols - 1
   .Row = .Row + 1
   .Col = 0
Case Else
   .Col = .Col + 1
End Select
.SetFocus

また、ループでセルの幅が0でないとこまですすめるなら、こんな感じ。
Do
   If .Col = .Cols - 1 Then
      .Row = .Row + 1
      .Col = 0
      Exit Do
   End If
   .Col = Col + 1
Loop While .ColWidth(.Col) = 0

投稿時間:2005/06/12(Sun) 02:04
投稿者名:大崎西
Eメール:
URL :
タイトル:
Re^4: msflexgridの非表示列のセル移動
花ちゃんさん、LESIAさん、
ありがとうございます。おかげさまでなんとかいけそうです。
お騒がせいたしました。

投稿時間:2005/06/12(Sun) 07:00
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: msflexgridの非表示列のセル移動
ご自分で考えて欲しかったのですが、コードを投稿されたので、追記しておきますが
No.3519 で私が説明した処理を MSFlexGrid1_GotFocus イベント内に書き再度MSFlexGrid1_GotFocus
イベント を呼んでやればよいだけです、と言う事で、すでにNo.3519で回答済みとなります。
(その他色々な方法があります)

又、処理方法が思いつかない場合は、自分が手作業でする場合の事を考えて、その手順を
コードに書けばできるかと思います。
(この辺の事を考えるのは初心者もベテランもないかと思います)