牛、豚、鶏、どれか一つ食べられなくなるとしたら?

いつもすみません フォームでタブオーダを使用した際に
チェックボックスとテキストボックスを設定した場合
3行目のチェックボックスにレを入力した際、テキストボックスに
ONと表示されたいのですが、どうすればできるのでしょうか?

A 回答 (2件)

>フォームでチェックボックス名は一つでデータの分だけ表示する方法


『チェックボックス名は一つ』ということは、コントロール配列だと思いますが、VBAにはその機能はありません。
VBAでVBのコントロール配列のような機能を作ったり、コレクションを定義して一括で処理もできますが、複雑になるので質問の内容をExcel2000VBAの標準的な機能で対応してみました。

まず、ユーザーフォーム1にListBox1とTextBox1を配置します。
下記コードをユーザーフォーム1のコードウインドウに貼り付けます。
(fmMultiSelectExtended → fmMultiSelectSingle にすると、複数選択できなくなります。)
質問にある複数のチェックボックスをリストボックス内のリストとして考えています。
データが何件あってもリストボックス内で表示できるので、ある意味楽かもしれません。
こんな意味の質問でした? ご参考に。


Private Sub ListBox1_Change()
  'インデックスは0から始まるので3番目は『2』
  '選択されていればSelectedがTRUE
  If ListBox1.Selected(2) = True Then
    TextBox1.Text = "ON"
  Else
    TextBox1.Text = ""
  End If
End Sub

Private Sub UserForm_Initialize()
  Dim myList As Variant 'ListBox1のリスト定義用配列
  'myListは例です
  myList = Array("東京", "神田", "秋葉原", "御徒町", "上野", "鶯谷", "日暮里", "西日暮里")
  With ListBox1
    .List = myList             'リストボックスの内容を登録
    .ListStyle = fmListStyleOption     'リストにチェックボックスを表示する
    .MultiSelect = fmMultiSelectExtended  '複数選択可にする
    '色などの設定を変更
    .BackColor = UserForm1.BackColor    '背景色をフォームの色にする
    .BorderColor = UserForm1.BorderColor  '境界線をフォームの色にする
    .BorderStyle = fmBorderStyleNone    '境界線を引かない
    .SpecialEffect = fmSpecialEffectFlat  'フラットにする
  End With
End Sub
    • good
    • 0

『3行目のチェックボックスに』というのはよくわかりませんが、


ユーザーフォームにCheckBox1とTextBox1があって、CheckBox1をクリックすると、テキストボックスの表示が変わる例です。CheckBox1_Click→CheckBox1_Change としても同じ結果が得られるでしょう。タブオーダーは余り関係ない?

Private Sub CheckBox1_Click()
  If CheckBox1.Value = True Then
    TextBox1 = "ON"
  Else
    TextBox1 = "OFF" '質問にはないが、OFFを表示する例
  End If
End Sub

この回答への補足

回答ありがとうございました。
質問が少し変だったかもしれませんね。
すみません。
フォームでチェックボックス名は一つでデータの分だけ表示する
方法があると思いますがその時、チェックボックスが何行目に
レ(チェック)を入れたかたを知りたいのです。
確か、何かの関数できくと変数が返って来たと思います。
その関数を忘れてしまいました。
よろしくお願いします。

補足日時:2001/12/21 23:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!