• 締切済み

ユーザーフォーム(ListBox)からのランダム入力

現在シフト表を作成していて、以下の動作をするマクロを考えています。 素人のため、詳しい方がいればご教授頂けませんでしょうか。。。 ユーザーフォームには ・対象者:10名(複数選択) ・勤務形態:早番、遅番など(単一選択) ・日当たりの必要人数:1~5(単一選択) ・勤務割り当て開始ボタン 上記の3つのListBoxと1つのボタンがあります。 考えている要件は ・選択された対象者に対して、対象者の合計で割られた数だけ勤務形態が割り当てられ、勤務が均等になるようにします。 ・割り当て方は1か月分(31日)で、その中からランダムな日にちに選択された勤務形態が割り当てられます。 ・すでに勤務形態が入力されている項目についても考慮します。  (例えば、月5回必要な場合、3回すでに入力されていれば、残り2回分を割り当てる。) ・日当たりの必要人数については、1~5から選択し、一日当たりの同一勤務の人数を選べるようになっています。 尚、シフト表は縦:勤務者、横:月カレンダーになっています。 そもそも要件が多すぎてできるかも微妙かと思いますが、一部分でもわかる方がいれば、よろしくお願いします。

みんなの回答

回答No.1

はじめまして、通りすがりと申します。 上記仕様についてなのですがやろうとしていることが 見えません。もう少し仕様を整理してからご質問しては如何でしょうか? たとえば、ここです。 >ユーザーフォーム(ListBox)からのランダム入力  ランダムで入力という表現は、ランダムで自動で選択されることを  言っているのでしょうか?それとも人が自由に選べるからランダム  という表現にしているのか? > フォームの項目にて >・日当たりの必要人数:1~5(単一選択) 入力フォームに日当たりの必要人数とあるがその他項目内容は人につい ての属性であり、日当たりの必要人数は日毎の属性と思えます。 これは、最終的に作成する帳票からそう想像できますが、では何故 人の属性のフォームの中に、日当たりの必要人数設定項目があるのか? ->作成してくる段階で矛盾が生じてこないか? また、要件にて >選択された対象者に対して、対象者の合計で割られた数だけ勤務形態 >が割り当てられ、勤務が均等になるようにします。  意味不明です。 また、質問の内容も漠然としていて今自分がそれぞれの機能について どの機能について取り組んでおり、それについて現在どのように考え どう対策を講じているが、それによってどのうような問題に直面して いるのかが見えません。 回答者もどう答えたらいいか、解らないと思います。 多分、作成したいものが漠然としていて、どのように進めていけば よいのかが解らなくなっているものと推測します。 このような場合は、まず仕様をしっかりと作成する。 これは、画面イメージ、帳票イメージ、アクション、項目の整理 アクション毎にどのような動きをさせるのか? 誰が見ても理解できるように記述します。 それから、個々の機能について方式(プログラムの概要レベルでもい いので)を検討する。 次に検討した機能レベルから実際にコードに落としていく。 その中で、壁にぶつかったらその問題点を分類しご質問した方が 早く解決に結びつくと思います。 結構上記方法も大雑把ではありますが、今の段階よりは見えない ものが見えてくると思いますのでその段階で再度ご質問したほうが よいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • シフトについて

    私は、老人保健施設に今月から働いてる介護職員です。 先日、1月のシフト表を頂いたのですが今月は中旬くらいから早番勤務などをしてたのですが1月のシフト表をみると先月は5回以上あった早番が来月は1回もなくて自分の中では「早番業務をこなす能力がないからかな?と思いました。皆さんはどう思いますか?

  • 【WPF】【C#】【XAML】LISTBOX

    WPFのListBoxについて1から勉強をしているものです。 ・項目 削除(CheckBox),ID(TextBlock),カテゴリ(TextBlock),画像(BitmapImage)を一行とするリストを追加、編集、削除できる。 ・ID、カテゴリにそれぞれボタン機能を有し、押下することにより各項目に対してソート(昇順⇔降順)できる。 ・追加ボタン⇒追加画面を起動し各項目を入力しリストに行を追加する。 ・編集ボタン⇒選択中のリストに対して別で編集画面を表示させ選択中のリストの編集を行える。 ・削除のチェックがついている行を全て削除する。 このような仕様の画面を作っています。 現在、追加画面からの行の追加はできるようになりました。 しかし残り仕様を満たす解決策が分からず ネットで調べたところ単一項目のケースでの編集、削除、ソートはよく見かけるのですが。 今回の様にリストに複数項目がある状態からの編集、削除、ソートの事例が見つからず困っています。 ListBoxでやる必要ないのでは?と思われる方もいらっしゃると思いますが。 お聞きしたいことというのは、 ListBoxで選択行のテキストブロックの情報を取れるのかどうか。 ListBoxで削除(CheckBox)がついている行を特定できるのかどうか。 ListBoxで特定の項目に対するソートができるのかどうか。 以上の3点になります。 ■使用ツール Microsoft Visual Studio 2010 ■使用テンプレート WPFアプリケーション Visual C# その他、不足な情報等ございましたらなんなりと申しつけ下さい。 皆様のお知恵を参考にさせていただけたらと思っております。 よろしくお願いいたします。

  • ユーザーフォームで教えてください。

    ユーザーフォームで教えてください。 エクセルシートで、A列に1から100までナンバーがあり、 B列~E列までデータが入っている表があります。 テキストボックスにナンバーを入力(もしくはスピンボタン)して 「検索」のコマンドボタンを押すと、B列以降のデータが各テキストボックスに表示される。 という形にしたいのですが、やり方が分からず困っています。 これまでは表の外に最初の行と最後の行を表示させて、 それを変数として扱い、「前」、「次」のコマンドボタンで1ずつ増減させて 表示していたのですが、ナンバーから直接表示させたほうが効率が良いと思いました。 (データが少ないときはよかったのですが。) 希望としては、 例としてテキストボックス1に「50」と入力する。(またはスピンボタンで50を選択) コマンドボタン「検索」でナンバー50のB列~E列のデータをテキストボックス2~5へ表示。 コマンドボタン「前」「次」を配置し、「前」でナンバー49、「次」でナンバー51のデータを表示。 1もしくは100(最後のナンバー)のときに「前」「次」を押してもデータは表示せず、 メッセージで「これが最初(最後)です」と表示。 という感じです。 できればでいいのですが、 ナンバー50のデータが表示された状態で、 B列以降のデータを直してナンバー50の行に上書きする「修正」、 表示された行を削除して1行上にずらす「削除」の コマンドボタンがあると助かります。 長くなってしまいましたが、よろしくお願いします。

  • アルバイトのシフト表作成及びガントチャート作成

    大変すみませんが、現在、コンビニのアルバイトのシフト表をExcleで作成 しようとしておりますが、うまくいきません。 どなたか、以下のような形態で作成できる方式などをお教えいただけないでしょうか? シート1には (1)縦に氏名、横軸に、1ヶ月あたりの日にち(ただ、この日にちはA1セルに月を入力  したら、自動でその月の日にちになるようにしたい) (2)このシートにアルバイト者単位で、希望する時間帯を入力させます。   シート2には、シート1で入力した、ある日にちを選択すると、その日だけ入っている アルバイト者名および勤務時間帯を、ガントチャート形式で表示できるようにしたい。 意図は、その日のシフト人数が時間帯別で見たときに、足りえているかを把握したいため です。 このようなシフト表を教えていただけないでしょうか?

  • エクセルユーザーフォームのリストボックスで入力する方法

    (一回目は間違えて質問するを押してしまいました。すいません) エクセル2000で請求書の作り方を教えて下さい。 (1)シート「請求書」に下記請求書とフォームツールバーのボタンを挿入。     D      E     商品名   単価 13 14 15   (2)シート「商品」に下記を記述後,C5:D7の範囲を「単価表」と定義。      C         D      商品名       単価 5  プリンター     30000 6  ノートPC      200000  7  デスクトップPC   300000    (3)UserForm1のListBox1に、リスト項目を取り込む設定をする。 (4)標準モジュールに下記を記述してこのマクロをボタンに登録しておく。 Sub ダイアログを表示() UserForm1.Show vbModeless Range("D13").Select End Sub この状態で、(1)で挿入したボタンをクリックすると表示されるリストボックス項目をクリックすれば、D13に商品名とE13に単価を転送して、カーソルが下に自動移動するというもの。但し下記条件で。  1.コマンドボタンを使わず、リスト項目の選択でダイレクトに転送できる もの。 2.1回転送してカーソルが下に自動移動後に、引き続いて同じリスト項目をクリックしても転送できるもの。(他の項目を選択するなら転送できるのですが同じ項目の転送がどうしてもうまくいきません。) 長くなりましたがなるべく簡単な方法でよろしくお願いいたします。   

  • excel vba listboxについて

    EXCELのVBA LISTBOXに関することで質問です。 ワークシート1のA2-5セルに取引先名を入力してあります。 UF1という名前のユーザーフォームの中にリストボックスを作成し、ワークシート1のA2-5の取引先を表示するには、 Private Sub UserForm_Initialize() Dim torihiki As String torihiki = Worksheets(1).range("A2:A5") UF1.ListBox1.List() = torihiki End Sub と打ち込んでいます。 ちなみに、ユーザーフォームは以下のようにOKボタンで閉じるようにしました。 Private Sub CommandBottan1_Click() unload UF1 End Sub 質問したいのはここからですが、 上のユーザーフォーム内のリストボックスで選択された取引先をTRHKという変数に代入したい場合、どうしたらいいのでしょうか? 私の少ない知識を振り絞って以下のように考えてみたのですが、 TRHK = UF1.ListBox1.List() としても代入されていないようです。 List()ではないメソッドが必要なのだと思うのですが・・・・ .Selectedとかでしょうか? どなたか、ご教授願います! 宜しくお願い致します。

  • アクセスのフォーム画面で入力

    アクセス2002のフォームで文字を入力(選択)させてボタンを押すと 別の画面でその入力(選択)した文字が表示させるイベントプロシージャをつくりたいのですがPub sub~End sub内にどういう記述が必要なのでしょうか?

  • 入力フォームの作成について

    現在、入力フォームを作成しています。 テキストボックス「A」 ラジオボタン(またはチェックボックス)「1」「2」「3」 テキストボックス「B」 Aのテキストボックスに文字を入力し、ラジオボタン(またはチェックボックス)の2を選択した時のみにBにAの内容をコピーさせるにはどのように記述すればよろしいでしょうか。 JavaScript 関係の書籍を読みましたが、具体的に書いてあるものはなく、組み合わせが必要だとは思うのですが、うまくいきません。 webでも調べてみましたが、テキストボックスに入力するとラジオボタンがチェックされるというのは見つけましたが、この質問のことは見つけられませんでした。 逆に言えば、難しいということでしょうか・・・ 以上、よろしくお願いします。

  • ListBoxの選択した項目を削除したら、DBの同じデータの行も削除を

    ListBoxの選択した項目を削除したら、DBの同じデータの行も削除をしたいです。 環境:XP-Pro/VB2005/SQLServer2005 簡単なSchedule管理ソフトを作成しています。 画面には左側にMonthCalendar、開始時間を表示するDomainUpDown、件名、内容を入力するTextBoxと登録ボタンがあり、左側にListBox、その下に修正ボタン、削除ボタンが配置してあります。 登録ボタンを押すとListBoxに内容が表示されると同時にDBにデータが保存されます。 DBのテーブル:Shortは startdate(日付) DateTime start(開始時間) varchar(50) subject(件名) varchar(50) contents(内容) varchar(50) *日付と開始時間は複合主キー 今回は登録した項目を選択して削除ボタンをクリックしたら、DB内の同じ内容も削除するという動作です。 分からない部分はDBに接続してコネクションを定義した後のSQLステートメントです。 現在は、 connection.Open() Command.CommandText = "DELETE FROM Short WHERE start = '" & ListBox1.SelectedIndex &"'" Command.ExecuteNonQuery connection.Close() となっています。が削除されませんでした。 SQLステートメントで"ListBoxの選択している項目と同じ行"というようにWHERE句で定義したいのですが分かりません。 ご指導よろしくお願いいたします。

  • ListBox内の並び替えで実行エラー

    OSはXP、 Excelは2003を使用しています。 ユーザーフォーム内のListBox内で、コマンドボタンをクリックして行を上や下に並び替えたく、 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1041407835 を参考にして、下記の通りに組んだのですが、 下に並び替えるCommandButton2を実行時や、 上に並び替えるCommandButton1を「2回目」に実行時に 「実行時エラー -2147417848(80010108)  オートメーションエラーです。 起動されたオブジェクトはクライアントから切断されました。」 となってしまいます。 Private Sub CommandButton1_Click() Dim i As Variant Dim j As Integer Dim k As Integer Dim myBuf1 As Variant Dim myBuf2 As Variant ' 選択されている項目を1つ上げる。 i = Me.ListBox1.ListIndex If i > 0 Then For j = 1 To 7 myBuf1 = Me.ListBox1.List(i - 1, j) Me.ListBox1.List(i - 1, j) = Me.ListBox1.List(i, j) Me.ListBox1.List(i, j) = myBuf1 Me.ListBox1.Selected(i - 1) = True For k = 0 To 6 myBuf2 = Me.ListBox2.List(i - 1, k) Me.ListBox2.List(i - 1, k) = Me.ListBox2.List(i, k) Me.ListBox2.List(i, k) = myBuf2 Me.ListBox2.Selected(i - 1) = True Next k Next j End If End Sub Private Sub CommandButton2_Click() Dim i As Variant Dim j As Integer Dim k As Integer Dim myBuf1 As Variant Dim myBuf2 As Variant ' 選択されている項目を1つ下げる。 i = Me.ListBox1.ListIndex If i < Me.ListBox1.ListCount - 1 Then For j = 1 To 7 myBuf1 = Me.ListBox1.List(i + 1, j) Me.ListBox1.List(i + 1, j) = Me.ListBox1.List(i, j) Me.ListBox1.List(i, j) = myBuf1 Me.ListBox1.Selected(i + 1) = True For k = 0 To 6 myBuf2 = Me.ListBox2.List(i + 1, k) Me.ListBox2.List(i + 1, k) = Me.ListBox2.List(i, k) Me.ListBox2.List(i, k) = myBuf2 Me.ListBox2.Selected(i + 1) = True Next k Next j End If End Sub 説明不足や上記の記述にとんちんかんな間違いがありましたら、ごめんなさい。 どなたか解決方法を教えて頂けますようお願い致します。