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