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

投稿時間:2003/02/08(Sat) 15:40
投稿者名:ハイライト
URL :
タイトル:
フレキシブルグリッドでの計算
会社のシフトを管理するためにVBを使っています。時間帯別の人数表を作成したいのですが、動的変数
を使うのかなぁとは思うのですが、試してみましたがうまくできませんでした。
例えば、10〜18のシフトの人はグリッド上の10:00、11:00,12:00,・・・17:00の欄にそれぞれ「1
」とカウントされるという具合です。どなたかご存知でしたらお教え願います。

投稿時間:2003/02/08(Sat) 16:08
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: フレキシブルグリッドでの計算
Dim Matrix(10, 12) As Integer

のようなセルの数と同じ配列変数を使って下さい。

#もう少し詳しい状況を書いて頂かないとどこが解らないのか、どうしたいのかも
見えてきません。この回答も想像で書いているので外しているかも知れません。

又、今後も、MSFlexGridを使用されるのならここのMSFlexGrid関係に書いてある事
(過去ログ、主要プロパティ一覧表、各サンプル)には目を通しておいて下さい。

投稿時間:2003/02/10(Mon) 11:54
投稿者名:ハイライト
URL :
タイトル:
Re^2: フレキシブルグリッドでの計算
行数は決まっていなく、変動するのですが、その場合はどうするのでしょうか?

投稿時間:2003/02/10(Mon) 13:01
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: フレキシブルグリッドでの計算
> 行数は決まっていなく、変動するのですが、その場合はどうするのでしょうか?

前回も書きましたが、何をどうしたいのかを他の人に解るように書かないと
適切な回答ができないかと思います。
例えば、最初の質問なら1行に表示できます。

変数の宣言の仕方なら、ここのVB簡易リファレンスやヘルプで調べてみましょう。

投稿時間:2003/02/10(Mon) 14:27
投稿者名:ハイライト
URL :
タイトル:
Re^4: フレキシブルグリッドでの計算
    月    火    水    木    金    土    日
7:00    0    1    0    1    0    0    0
8:00    0    1    0    1    0    0    0
9:00    0    1    0    1    0    0    0
10:00    0    1    0    1    0    0    0
11:00    0    1    0    1    0    0    0
12:00    0    1    0    1    0    0    0
13:00    0    2    0    1    0    0    0
14:00    0    2    0    1    0    0    0
15:00    0    2    0    1    0    0    0
16:00    0    2    0    1    0    0    0
17:00    0    2    0    1    0    0    0
18:00    0    3    0    1    0    0    0
19:00    0    3    0    1    0    0    0
20:00    0    3    0    1    0    0    0
21:00    0    3    0    1    0    0    0
22:00    0    3    0    1    0    0    0
23:00    0    3    0    1    0    0    0
0:00    0    3    0    1    0    0    0
1:00    0    3    0    1    0    0    0
2:00    0    3    0    1    0    0    0
3:00    0    3    0    1    0    0    0
合計    0    46    0    21    0    0    0

という感じで、7:00〜18:00(1人)、13:00〜18:00(1人)(ともに火曜日)シフトの人は上記のようにカウントされます。

投稿時間:2003/02/10(Mon) 15:18
投稿者名:A221
Eメール:
URL :
タイトル:
Re^5: フレキシブルグリッドでの計算
> という感じで、7:00〜18:00(1人)、13:00〜18:00(1人)(ともに火曜日)
>シフトの人は上記のようにカウントされます。

18:00以降のカウントが不思議な数になっていますが?
19:00〜3:00のシフトが3人いるんでしょうか?
#よその会社のシフトにけちをつけているわけではありません。

表と最後の1文でわかるはずもありません。
人に説明できる文章を書けばおのずからプログラムでやるべき点が見えてくると
#私は#考えます。

基本的なインターフェイス(入力)についても書かれていませんし。
#例えばテキスト2つ並んでいて時間の開始終了を入力してクリックしたら足すとか、
#例えば開始時間と定時が決まっているのでボタンはシフトごととか。

もう少し説明的なモノを提示していただかないとなんともいえません。

投稿時間:2003/02/10(Mon) 15:37
投稿者名:ハイライト
URL :
タイトル:
Re^6: フレキシブルグリッドでの計算
説明不足でした。申し訳ありません。
図でいくと、数字はの時間に在籍する人数になります。一方のフレキシブルグリッドに「10〜18」と入力すると、図のフレキシブルグリッドの10:00、11:00、12:00・・・17:00に「1」とカウントされる感じです。
これが人数に応じて加算されていくというものです。よろしくお願いいたします。

投稿時間:2003/02/10(Mon) 16:18
投稿者名:Lantern
Eメール:
URL :
タイトル:
Re^7: フレキシブルグリッドでの計算
'シフトの人数を格納する2次元配列
Private bShift() As Integer

'グリッドの行列は前の書き込みを見る限り可変とは思えないので
'グリッドの初期化なりで配列を初期化したらいいと思います
'時間,曜日で22×7の2次元配列
Private Sub InitGrid()
    ReDim bShift(21, 6) As Integer
End Sub

'bCol:曜日
'bBgn:開始時間
'bEnd:終了時間
Private Sub test1(ByVal bCol As Integer, ByVal bBgn As Integer, ByVal bEnd As Integer)
    Dim i As Integer
    
    '開始〜終了の人数をカウントアップ
    '合計人数を計算
    For i% = bBgn% To bEnd%
        bShift(i%, bCol%) = bShift(i%, bCol%) + 1
        bShift(21, bCol%) = bShift(21, bCol%) + 1
    Next i%
End Sub

#こんな感じだと思いますが
#もしこのコードでコメントで説明がなければ
#見ても何やってるかわかんないでしょ^^;
#質問も同じだと思いますよ

投稿時間:2003/02/10(Mon) 16:51
投稿者名:Lantern
Eメール:
URL :
タイトル:
Re^8: フレキシブルグリッドでの計算
行削除するんでしたね^^;

2次元配列を2つ用意して
行削除したときにbShift配列をスワップ
するなりしたらいいと思いますよ。