Visual Basic 2010を使ってカレンダー・スケジュール作成のための効率的なプログラム書き方

このQ&Aのポイント
  • Visual Basic 2010を使用してカレンダー・スケジュールを作成する方法を解説します。
  • コンボボックスの選択によってテキストボックスへの値の表示を行い、日付の概念を追加する方法についても紹介します。
  • DateTimePickerやDateAndTime.day関数を活用しながら、効率的なプログラムを作成する手法を解説します。
回答を見る
  • ベストアンサー

If,Forを使ってカレンダー・スケジュールを作成

visual basic 2010を使用しています。 「コンボボックス1でAが選択されている場合、コンボボックス2のアイテムをテキストボックス1へ、コンボボックス1がBの場合はテキストボックス2へ……」 というコードを書きました。 If CombBox1.Text = "A" Then TextBox.Text = ComboBox2.Text ElseIf ComboBox.Text = "B" Then TextBox2.Text = ........................... ............................. これに追加して日付の概念を入れるにはどうすればいいでしょうか。 「日付が今日で、なおかつコンボボックス1でAが選択されている場合、コンボボックス2のアイテムをテキストボックス1(今日のAのテキストボックス)へ」 ということです。 「日付が1日後だった場合~」 「日付が2日後だった場合~」 と、1週間後まで繰り返したいです。 ・DateTimePicker ・Dim a As Integer = DateAndTime.day(Now) この二つはフォーム、コードに設置しています。 これらとif,for、もしくはその他の関数を使って効率の良いプログラムの書き方を教えて頂けないでしょうか。 分かりやすいように、手書きで申し訳ないですが、画像も載せておきます。 以上、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

No.1です。 テキストボックスのコントロール名をNo.1の回答のようにしたとして、 前回の質問事項を参考に ・コンボボックス1の値は、A、B、C・・・となっている。 ・コンボボックス1の値がAの時はコンボボックス2の値を、 Cの時はコンボボックス4の値をテキストボックスに入れる とするとしたら、 Dim d As DateTime = Date.Parse(DateTimePicker1.Value.ToString("yyyy/MM/dd")) Dim i As Integer = DateDiff(DateInterval.Day, Date.Parse(Now.ToString("yyyy/MM/dd")), d) If i < 0 OrElse i > 7 Then MsgBox("日付の指定に間違いがありますので終了") Exit Sub End If CType(Me.Controls("TextBox" + i.ToString + "_" + ComboBox1.SelectedIndex.ToString), TextBox).Text = _ CType(Me.Controls("ComboBox" + (ComboBox1.SelectedIndex + 2).ToString), ComboBox).Text こんな感じになりましたね。 ⇒実際には詳細が不明なので的外れかも知れませんけど。

その他の回答 (1)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

それは画像の交差する部分がテキストボックスを並べているのなら、 その規則性が重要な気はしますけどね。 例えるならテキストボックスのコントロール名を TextBox0_0 TextBox0_1 TextBox0_2 ・・・ TextBox1_0 TextBox1_1 TextBox1_2 ・・・ ・・・ とするとコンボボックスの選択した値のインデックスと 日付(何日後か)によってTextBox の後の数字を 与えてやれば書き込むテキストボックスを決める事が 出来そうな気はしますけど。。。。 でも実は未検証ですけどね。

関連するQ&A

  • Visual Basicで困っています

    Visual Basic 2010でテキストボックスとコンボボックスを複数設置し コンボボックスの選択の組み合わせによって消すテキストボックスを決めたいと思っています。 初心者で下記のようなコードしか思いつかないのですが、これを簡略化できませんか? 例) コンボボックス1で一番目の項目を選択して、コンボボックス2で一番目の項目を選択した場合は テキストボックス1のテキストを消す コンボボックス1で一番上の項目を選択して、コンボボックス2で二番目の項目を選択した場合は テキストボックス2のテキストを消す みたいな感じです。 コード If ComboBox1.SelectedIndex = 0 And ComboBox2.SelectedIndex = 1 Then TextBox1.Clear() ElseIf ComboBox1.SelectedIndex = 0 And ComboBox2.SelectedIndex = 2 Then TextBox2.Clear() ElseIf ComboBox1.SelectedIndex = 0 And ComboBox2.SelectedIndex = 3 Then TextBox3.Clear()     ElseIf ComboBox1.SelectedIndex = 0 And ComboBox2.SelectedIndex = 4 Then TextBox4.Clear() End If わかりづらい文章で申し訳ないですが、わかる方、回答をお願いします。

  • テキストボックスの表示について

    visual basic2010を使用しています。 コンボボックスAの選択が1~4だった時、コンボボックスB、C、Dの選択された結果を、ボタンクリックを経てテキストボックスに表示させるにはどうすればいいでしょうか? If ComboBox1.Text = "1" Then TextBox1.Text = (ComboBox2.Text) TextBox1.Text = (ComboBox3.Text) TextBox1.Text = (ComboBox4.Text) ElseIf ComboBox1.Text = "2" Then TextBox2.Text = (ComboBox2.Text) TextBox2.Text = (ComboBox3.Text) TextBox2.Text = (ComboBox4.Text) ElseIf ComboBox1.Text = "3" Then TextBox3.Text = (ComboBox2.Text) TextBox3.Text = (ComboBox3.Text) TextBox3.Text = (ComboBox4.Text) Else TextBox4.Text = (ComboBox2.Text) TextBox4.Text = (ComboBox3.Text) TextBox4.Text = (ComboBox4.Text) End If 実行した結果、ComboBox4のみの結果がテキストボックスに表示されてしまいました。 '変数を使った場合 If ComboBox2.Text = "1" Then Dim st As String st = (ComboBox3.Text),(ComboBox4.Text),(ComboBox5.Text) textbox1.Text = st ElseIf ~~~~~~~~~~^ こちらは「ステートメントの終わりを指定してください」と出て動作しませんでした。 以上、宜しくお願い致します。

  • DateTimePickerをIf文で

    Visual basic 2010を使用しています。 「 Datetimrpickerの選択が今日ならComboBox1の選択をTextbox1へ表示」 というプログラムを書きたいのですが、datetimepickerの扱い方がわからず、うまくいきません。 たとえばComboBoxなら、「ComboBox.items.item(0)」で一番上、 つまり今日の日付を取得できるのですが、「datetimepicker.items.item(0)」だとdatetimepicker のメンバーではないというエラーが出て実行できません。 以上、宜しくお願い致します。

  • エクセル VBA if構文

    毎度お世話になります。 下記プログラミングですが、 シャーペンまたはボールペンがコンボボックス1で 選択された場合はコンボボックス2で10束または50束の選択肢となり 消しゴムまたはシャー芯がコンボボックス2で 選択された場合はコンボボックス2で100コまたは1000コの選択肢としたいのですが 他の方法がありますでしょうか。 宜しくお願い致します。 If Me.ComboBox1.Value = "シャーペン" Or Me.ComboBox1.Value = "ボールペン" Then ComboBox2.Style = fmStyleDropDownCombo ComboBox2.RowSource = "" ComboBox2.Clear ComboBox2.AddItem "10束" ComboBox2.AddItem "50束" ComboBox2.ListIndex = -1 End If If Me.ComboBox1.Value = "消しゴム" Or Me.ComboBox1.Value = "シャー芯" Then ComboBox2.Style = fmStyleDropDownCombo ComboBox2.RowSource = "" ComboBox2.Clear ComboBox2.AddItem "100コ" ComboBox2.AddItem "1000コ" ComboBox2.ListIndex = -1 End If

  • コンボボックスの文字によるif文の作成

    エクセルVBAで聞きたい事があります。 コンボボックスで選択された文字により動作を変えたいのですが どのような表現にすればいいでしょうか? ちなみに今下のような文章をうっているのですがうまく機動してません。 Sub sf(a As Integer, b As Integer) If "ComboBox" & a = "はい" Then★ ' ' Range("E1").select←ここの内容は関係ないです。   ElseIf "ComboBox" & a = "いいえ" Then★ ' ' Range("E3").select←ここの内容は関係ないです。  End If ★部をどのようにすればうまく実行できるのでしょうか。

  • テキストボックスのデフォルト設定とコンボボックスの更新について

    テキストボックスのデフォルト設定とコンボボックスの更新について エクセルのVBAで、ユーザーフォームを使用しています。 ユーザーフォームの中にはコンボボックスとテキストボックスとボタンがあります。 コンボボックスには「ABCDEFGHIJKLM」と合計13のリストがあります。 ユーザーフォーム起動時に、コンボボックスには最初のリスト(A)が表示 されていて、「次へ」ボタンと「戻る」ボタンの2つを用意しています。 (1)ユーザーフォーム起動時にテキストボックスに「0」を入れる方法を教えていただけないでしょうか。 コンボボックスで「A」が選択された状態で「次へ」ボタンをおしたら「B」が選ばれる。 「D」が選択された状態で「次へ」ボタンをおしたら「E」が選ばれる。 「M」が選択された状態で「次へ」ボタンをおしたら「A」が選択される。(リストの最初に戻る。) というのは、次のVBAで上手くいきました。 If Combobox1.ListIndex < Combobox1.ListCount - 1 Then Combobox1.Text = Combobox1.List(Combobox1.ListIndex + 1) Else Combobox1.Text = Combobox1.List(0) End If (2)しかし「E」が選択された状態で「戻る」ボタンをおしたら「D」が選ばれる。 「G」が選択された状態で「戻る」ボタンをおしたら「F」が選ばれる。 「A」が選択された状態で「戻る」ボタンをおしたら「M」が選ばれる。(リストの最後に戻る。) といった内容のマクロがうまく組めません。 教えていただけると助かります。

  • VBAで条件が2つある場合の転記について

    現在Book1.xlsmでユーザーフォームを作成しています。 ここにComboBox7(日付)、ComboBox8(項目)、TextBox11(数値)を配置しています。コンボボックス やテキストボックスに入力があるとBook1.xlsmのSheet1にそれぞれComboBox7はA2、ComboBox8はB1、TextBox11はB2に入力されるようになっています。 ここで、B2の数値を別なブックBook2.xlsxのSheet2に転記したいと考えております。 Book2.xlsxのSheet2では、A列に日付、B1~AZ1に項目が入っています。 Book1.xlsmのSheet1のA2と同じ日付、B1と同じ項目が交差するところにB2の数値を転記したい場合はどのようにしたら良いのか教えていただけませんでしょうか?

  • EXCEL VBA ユーザーフォーム内のテキストボックスを一括処理する方法について

    EXCEL VBAのユーザーフォームについて質問があります。 ユーザーフォームを作り、その中にコンボボックスを1個、テキストボックスを100個設置する。 コンボボックスの値が1のときはテキストボックス1~テキストボックス50までのEnabledをFalseに設定し、 コンボボックスの値が2のときはテキストボックス1~テキストボックス100までのEnabled をFalseに設定する。 このとき、TextBox1.Enabled = False、TextBox2.Enabled = False・・・と一つ一つ書いていくのではなく、 セルを処理するときと同様に、テキストボックスの番号を変数にして処理することは可能でしょうか。 Private Sub ComboBox1_Change()  Dim i As Integer   If ComboBox1.Value = 1 Then   For i = 1 To 50   TextBox(i).Enabled = False   Next i   ElseIf ComboBox1.Value = 2 Then   For i = 1 To 100   TextBox(i).Enabled = False   Next i   End If End Sub というような処理をイメージしているのですが、うまくいきません。どうぞよろしくお願いいたします。

  • Excel VBAでコンボボックスで選択

    コンボボックスで選択したいと思っていますがうまくいきません。 教えてください。 Private Sub userform_initialize()  With ComboBox2   .Font.Size = 12   .AddItem "A"   .AddItem "B"   .AddItem "C"  End With If ComboBox2 = "A" Then  With ComboBox3   .Font.Size = 12  .AddItem "a-1"  .AddItem "a-2"  End With ElseIf ComboBox2 = "B" Then With ComboBox3   .Font.Size = 12  .AddItem "b-1" .AddItem "b-2" End With Else: ComboBox2 = "C" With ComboBox3 .Font.Size = 12 .AddItem "c-1" .AddItem "c-2" End With End If End Sub コンボボックス2で"A"を選んだら、コンボボックス3には"a-1とa-2"の選択したい のですが、"c-1,c-2"しかでません。よろしくお願いします。

  • If文で≠の方法は?

    Visual Basic 2003 を使っています。 If文で、 If (A = Me.TextBox1.Text) And ・・・ Then・・・ のように、「=」はできるのですが、「=でないとき」はどうすればいいのでしょうか? AはTextbox1と一致・Bはtextbox2と一致しない・cはtextbox3と一致の場合は○○、 AはTextbox1と一致・BはTextbox2と一致・CはTextbox3と一致しない場合は■■・・・のような条件式を作りたいんです。 調べてはみたのですが、見当たらなくて・・・。 分かる方がいらしたら、教えてください! (もし無理な場合もそう教えていただけると嬉しいです。他の方法を考えるか、諦めます。)