• 締切済み

エクセル2000のタブオーダについて

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

みんなの回答

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.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

すると、全ての回答が全文表示されます。
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

『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

syusama
質問者

補足

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

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

関連するQ&A