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

このQ&Aに関連する最新のQ&A

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で質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcel VBA フォームのテキストボックス入力について

半角数字のみしか入力されないようにしたいのですがどのようにすればよろしいですか?
のちのち計算に使うので、文字が入るとエラーになってしまって困っています
よろしくお願いします

Aベストアンサー

テキストボックスのイベントで
数字以外の入力はエラーにすればよい。

Private Sub TextBox1_Change()
If Len(TextBox1.Value) > 0 Then
If IsNumeric(TextBox1.Value) Then
Exit Sub
Else
TextBox1.Value = "" '強制的に消す
MsgBox "数字のみの入力をお願いします。" '注意のメッセージを表示する。
End If

End If
End Sub

Qユーザーフォームのテキストボックスの書式設定について

ユーザーフォームのテキストボックスの書式設定について
TextBox1に金額、TextBox2に日付を入力し、Sheet1に転記するような
フォームを作っています。
TextBox1には、
Private Sub TextBox1_Change()
y = TextBox1.Text
TextBox1.Text = Format$(CLng(y), "#,##0")
End Sub
としています。
TextBox2には、書式をH○○.○.○という設定にしたいのですが、
どのようにしたらよいでしょうか。

Aベストアンサー

返事が遅くなりました。時間が経った場合に、補足側にコメントを付けられても気がつかないことがあります。

>Enterをいれず、マウスでTTextBox1からextBox2へと移動した場合はどうなるのでしょうか?TextBox2_Changeでしょうか?

もちろん、そういう設定もありますが、少し困った質問ですね。もともと、Enter を入れて、入力値を確定するという意味で、Enter を入れるという意味になるはずです。タブで次のテキストボックスに移動するというなら、以下のようになりますが、そうでない場合は、別の方法になります。[タブで移動する場合]と[マウスで移動する場合を含む]は、共有しません。

''//タブで移動する場合
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If KeyCode() <> 13 And KeyCode <> 9 Then Exit Sub
 If IsNumeric(TextBox1.Text) Then
  TextBox1.Text = Format(TextBox1.Text, "#,##0")
 End If
End Sub
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If KeyCode() <> 13 And KeyCode <> 9 Then Exit Sub
 If IsDate(TextBox2.Text) Then
  If Abs(Year(Date) - Year(CDate(TextBox2.Text))) < 20 Then '20年の差がある時は無視
   TextBox2.Text = Format(CDate(TextBox2.Text), "GEE.M.D")
  End If
 End If
End Sub


''//マウスだけで移動する場合を含む
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 Call ChangeFormat(TextBox1)
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 Call ChangeFormat(TextBox2)
End Sub

Sub ChangeFormat(objTxt As Object)
 If IsNumeric(objTxt.Text) Then
  objTxt.Text = Format(objTxt.Text, "#,##0")
 ElseIf IsDate(TextBox2.Text) Then
  If Abs(Year(Date) - Year(CDate(objTxt.Text))) < 20 Then '20年の差がある時は無視
   objTxt.Text = Format(CDate(objTxt.Text), "GEE.M.D")
  End If
 End If
End Sub

返事が遅くなりました。時間が経った場合に、補足側にコメントを付けられても気がつかないことがあります。

>Enterをいれず、マウスでTTextBox1からextBox2へと移動した場合はどうなるのでしょうか?TextBox2_Changeでしょうか?

もちろん、そういう設定もありますが、少し困った質問ですね。もともと、Enter を入れて、入力値を確定するという意味で、Enter を入れるという意味になるはずです。タブで次のテキストボックスに移動するというなら、以下のようになりますが、そうでない場合は、別の方法になります...続きを読む

Qフォームのテキストボックスが空白なら"*"を入力する

「フォームのテキストボックスが空白なら"*"を入力する」
としたいのですが
If Form.承認者テキスト.Value = "" Then Form.承認者テキト.Value = "*"
だと承認者テキストでも"*"が入力されません。

Form.承認者テキスト.Value = Null
としてもできません。どうすればいいのでしょうか?
よろしくお願いします。

Aベストアンサー

If IsNull(Form.承認者テキスト.Value) = True Then Form.承認者テキト.Value = "*"

としたらどうなりますか?

QExcelユーザーフォーム(テキストボックス)の文字入力について

何種類かあるテキストボックスを、番号入力なら半角入力とか英数入力、名前欄ならひらがな入力とかに設定は出来ませんか?

Aベストアンサー

プロパティにある「IME Mode」で変更できます。
ただし、このファイルを使う際にIMEを使用していないと有効になりません。

Modeは9種類あり、
0=コントロールしない
1=IMEをONにする
2=IMEをOFFにする
3=IMEを使用できないようにする
(Passwordなど半角英数字のみ入力時など)
4=全角ひらがな
5=全角カタカナ
6=半角カタカナ
7=全角英数字
8=半角英数字
になっています。

Qテキストボックスの内容でチェックボックスの既定値

下記質問の続きです。
http://oshiete.goo.ne.jp/qa/8186736.html
Accessで、
チェックボックスにチェックを入れることで
テキストボックスに文字を表示させています。

そのフォームをいったん閉じると、
テキストボックスには
前回チェックボックスで入力した文字が反映されているのですが
チェックボックスのチェックがすべて外れてしまっています。

フォームを開いたとき、
テキストボックスの内容によって、
配置したチェックボックスにチェックを入れたいです。

テキストボックスに
「A C」
と入っていたら
■A
□B
■C
□D
□E

としたいです。

(開いたあとは、また別の所にチェックを入れたり外したりします)

チェックボックスのプロパティ「既定値」のところに
IF([テキストボックス] like "*"&"A"&"*",ture,false)
などとしてみたのですがうまういきませんでした。

ご教授お願いいたします!

Aベストアンサー

AccessでのVBAはあまり経験がないのですが、form_loadのイベント時にテキストボックスの内容を
判定してチェックを付けるコードを付加すればいいのではないでしょうか?

checkbox1がAのチェックボックスだとして、

IF [テキストボックス] like "*"&"A"&"*" then
Me.checkbox1.value=ture
End If 

とか。


このカテゴリの人気Q&Aランキング

おすすめ情報