Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


16889 / 76732 ←次へ | 前へ→

【65306】Re:ListBoxにNullが入ってしまう。
お礼  きしやん E-MAIL  - 10/5/7(金) 9:18 -

引用なし
パスワード
   ▼kanabun さん:
>▼きしやん さん:
>
>>>Private Sub CommandButton2_Click()
>>>  if ListBox1.ListIndex < 0 Then
>>>    Msgbox "Listから 時刻を選択してください"
>>>    Exit Sub
>>>  end if
>>> stjikoku = ListBox1.VALUE
>>>
>>>のように直してみては どうですか?
>
>ListBoxにNullがはいってしまう原因と対処法については
>お分かりになりましたでしょうか?
>
>
>>Call CommandButton2_Clickの項は説明不足でしたが、
>>まだ作成途中ですが条件分岐を考えておりまして、select caseも
>>考えていますが、構文が複雑になるかと思い、subルーチン的な
>>ものが出来ればと考えております。
>>このような場合kanabun さんの方法で可能でしょうか
>
>え〜っと、UserFormの各論のまえに 概論をひとつ。
>
>ユーザーフォームというのは、いわば高機能な「複合InputBox」
>なので、UserForm のなかで個々のデータ入力を 一回一回
>InputBoxで個別に実行するのは、入力したデータの表示がすぐ消えて
>しまうので、ユーザーにとって決して入力しやすいインターフェース
>ではないと思います。
>
>UserFormを 複合InputBoxとして利用するなら、複数入力項目別に
>TextBoxやComboBoxを置いておいて、ユーザーに自由に(相互の値を
>確認させながら)入力させ、全部入力が終わった時点で、
>[OK]ボタンを押すようにするのがいいでしょう。
>
>そのような「複合InputBoxとしての UserForm」のイメージを
>参考までに、以下に紹介します。
>
>新しいUserFormに LabelとTextBoxとComboBox をそれぞれ4つづつ、
>以下のLayoutの感じで配置します
>
>┏━━━━━━━━━━━━━━━━━━━━━━━┓
>┃ [Label1] 【TextBox1 】   【ComboBox1】   ┃
>┃ [Label2] 【TextBox2 】   【ComboBox2】   ┃
>┃ [Label3] 【TextBox3 】   【ComboBox3】   ┃
>┃ [Label4] 【TextBox4 】   【ComboBox4】   ┃
>┃                       ┃
>┃    【CommandButton1】【CommandButton2】 ┃
>┃                       ┃
>┗━━━━━━━━━━━━━━━━━━━━━━━┛
>
>Option Explicit
>
>'★モジュールレベル変数は必要最小限にとどめる!
>Private Grade As String
>Private Hizuke As Date, Hizuke1 As Date
>
>'▼UserForm 初期化時
>' LabelのCation設定、ComboBoxリスト設定など
>Private Sub UserForm_Initialize()
>  Dim c As Range
>  Dim i As Long
>  Dim SrcList
>  With Worksheets("sheet4")
>    Hizuke = .Range("c4").Value  '★Valueプロパティを省略しない!
>    Hizuke1 = .Range("c5").Value
>     'ComboBox用 時刻リスト _
>        ◆「Sheet4」の[B2]以降にあると仮定 ◆要 変更
>     ' 時刻データを "h:mm"フォーマットした文字列の配列に入れる
>    SrcList = Application.Text( _
>      .Range("B2", .Range("B1").End(xlDown)), "h:mm")
>  End With
>  Me.Caption = Hizuke & "〜" & Hizuke1 & "のキャンペーンは " _
>         & Grade & "です"
>  Label1.Caption = "生産量"
>  Label2.Caption = "No.1サイロの在庫量"
>  Label3.Caption = "No.2サイロの在庫量"
>  Label4.Caption = "No.17サイロの在庫量"
>  For i = 1 To 4
>    With Controls("ComboBox" & i)
>      .RowSource = ""
>      .List = SrcList
>    End With
>  Next
>  CommandButton1.Caption = "転記1"
>  CommandButton2.Caption = "転記2(時刻)"
>  
>End Sub
>
>'Initialize後の画面はこんなふうになるはずです
>┏━━━━━━━━━━━━━━━━━━━━━━━━┓
>┃ 生産量     【     】 【    】   ┃
>┃ No.1サイロの在庫量 【     】 【    】   ┃
>┃ No.2サイロの在庫量 【     】 【    】   ┃
>┃ No.17サイロの在庫量【     】 【    】   ┃
>┃                        ┃
>┃         [  転記1 ]  [転記2(時刻)] ┃
>┃                        ┃
>┗━━━━━━━━━━━━━━━━━━━━━━━━┛
>
>'▼4つのTextBoxの値を入力後 量をセルに転記する
>Private Sub CommandButton1_Click()
> Dim i As Long
> Dim msg As String
> Dim grade1 As String
> Dim grade2 As String
> 
>  'TextBox 入力チェック
>  For i = 1 To 4
>    msg = Controls("TextBox" & i).Text
>    If Len(msg) = 0 Then
>      MsgBox Controls("Label" & i).Caption & " が未入力です"
>      Exit Sub
>    End If
>  Next
>  'シートに代入
>  Worksheets("sheet6").Range("c5").Value = CLng(TextBox1.Text)
>  With Worksheets("Sheet3")
>    .Select
>    .Range("d4").Value = CLng(TextBox2.Text)
>    .Range("d13").Value = CLng(TextBox3.Text)
>    .Range("d22").Value = CLng(TextBox4.Text)
>  End With
>
>  grade1 = "TH-700BJ"
>  grade2 = Worksheets("sheet1").Range("t18").Value
>  If StrComp(grade1, grade2, vbTextCompare) = 0 Then
>    msg = "つぎに投入時刻を各ComboBox より選択してから" _
>       & "入力2ボタン を押してください"
>    MsgBox msg, vbInformation, "入力1 完了しました"
>  End If
>End Sub
>
>'▼4つのComboBoxの「投入時刻」をシートに転記する
>Private Sub CommandButton2_Click()
> Dim i As Long
> Dim c As Range
> Set c = Worksheets("sheet3").Range("d9")
> For i = 1 To 4
>   With Controls("ComboBox" & i)
>     If .ListIndex < 0 Then
>       MsgBox Controls("Label" & i).Caption _
>         & "の投入時刻が未選択です", vbCritical
>     Else
>       c.Item(i).Value = .Value
>     End If
>   End With
> Next
>End Sub
>
>補足
>通常のInputBoxのように [OK]ボタンはひとつで済むかも知れませんが。

kanabun さん:
丁寧な説明ありがとうございました。
kanabunさんの説明の通り、ユーザーフォームは高機能な「複合InputBox」
という考えで、再考し作成しなおしてみたいと思います。
ありがとうございました。

1 hits

【65273】ListBoxにNullが入ってしまう。 きしやん 10/5/4(火) 17:44 質問
【65274】Re:ListBoxにNullが入ってしまう。 かみちゃん 10/5/4(火) 18:19 発言
【65275】Re:ListBoxにNullが入ってしまう。 きしやん 10/5/4(火) 18:52 お礼
【65276】Re:ListBoxにNullが入ってしまう。 かみちゃん 10/5/4(火) 18:57 発言
【65283】Re:ListBoxにNullが入ってしまう。 きしやん 10/5/5(水) 10:15 お礼
【65284】Re:ListBoxにNullが入ってしまう。 かみちゃん 10/5/5(水) 10:30 発言
【65285】Re:ListBoxにNullが入ってしまう。 きしやん 10/5/5(水) 10:55 お礼
【65286】Re:ListBoxにNullが入ってしまう。 かみちゃん 10/5/5(水) 11:02 発言
【65288】Re:ListBoxにNullが入ってしまう。 かみちゃん 10/5/5(水) 11:24 発言
【65290】Re:ListBoxにNullが入ってしまう。 きしやん 10/5/5(水) 15:03 お礼
【65291】Re:ListBoxにNullが入ってしまう。 かみちゃん 10/5/5(水) 15:15 発言
【65292】Re:ListBoxにNullが入ってしまう。 きしやん 10/5/5(水) 15:38 お礼
【65287】Re:ListBoxにNullが入ってしまう。 kanabun 10/5/5(水) 11:14 発言
【65289】Re:ListBoxにNullが入ってしまう。 きしやん 10/5/5(水) 14:34 お礼
【65296】Re:ListBoxにNullが入ってしまう。 kanabun 10/5/5(水) 21:06 発言
【65306】Re:ListBoxにNullが入ってしまう。 きしやん 10/5/7(金) 9:18 お礼

16889 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free