[[20210912224109]] 『For next を使ってTextbox と CheckBox連動』(Mike D) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『For next を使ってTextbox と CheckBox連動』(Mike D)

Textboxが9から16まであります。
Checkboxが1から4まであります。
Textboxが空白又は空白ではないときのCheckBoxを連動させたいです。
条件は
TextBox9が空白ならCheckBox1はFalse
TextBox10が空白ならCheckBox2はFalse

TextBox9が空白でないならCheckBox2はFalse
TextBox10が空白ならCheckBox1はTrue

TextBox9が空白ならCheckBox1はFalse
TextBox10が空白でないならCheckBox2はTrue

TextBox9が空白でないならCheckBox1はFalse
TextBox10が空白でないならCheckBox2はTrue



というふうにしたいです。

c = 1

    For j = 9 To 16

    If Me.Controls("textbox" & j).Value = "" And Me.Controls("textbox"& j + 1).Value <> "" Then 
    Me.Controls("checkbox" & c) = False

    ElseIf Me.Controls("textbox" & j).Value <> "" And Me.Controls("textbox" & j + 1).Value = "" Then
    Me.Controls("checkbox" & c) = True
    c = c + 1
    End If

    Next
といったふうにFor Nextを勉強中なのですがうまくいきません。何が違うのでしょうか?

< 使用 Excel:Office365、使用 OS:Windows10 >


 Dim t1 As Long, t2 As Long
 Dim c1 As Long, c2 As Long
 c1 = 1
 For t1 = 9 To 12 Step 2
    t2 = t1 + 1
    c2 = c1 + 1
    If Me.Controls("Textbox" & t1).Value = "" And _
       Me.Controls("Textbox" & t2).Value = "" Then
       Me.Controls("Checkbox" & c1) = False
       Me.Controls("Checkbox" & c2) = False
    End If
    If Me.Controls("Textbox" & t1).Value <> "" And _
       Me.Controls("Textbox" & t2).Value = "" Then
       Me.Controls("Checkbox" & c2) = False
       Me.Controls("Checkbox" & c1) = True
    End If
    If Me.Controls("Textbox" & t1).Value = "" And _
       Me.Controls("Textbox" & t2).Value <> "" Then
       Me.Controls("Checkbox" & c1) = False
       Me.Controls("Checkbox" & c2) = True
    End If
    If Me.Controls("Textbox" & t1).Value <> "" And _
       Me.Controls("Textbox" & t2).Value <> "" Then
       Me.Controls("Checkbox" & c1) = False
       Me.Controls("Checkbox" & c2) = True
    End If
    c1 = c1 + 2
 Next t1

 Textbox と Checkbox の相対関係が不明なので、
 TB11とTB12 に CB3とCB4 としたところで終わり。
(:-) 2021/09/13(月) 00:44

Textboxが8個、Checkboxが4個ですが
条件はTextboxとCheckboxが1対1のように見えます。
(条件を見直してください。また、Textbox同士のAnd関係があるならそれとわかるように書いてください。)
コードはTextbox2つとCheckbox1つが対応しているように見えます。
しかし条件部分(2つのTextboxの組み合わせ4つのうち2つしかわからない)に不備があります。
また、CheckboxのカウンタはCheckboxの値がTrueのときに加算されますかそれで合っていますか。
条件設定とコードに齟齬があり、またどちらの内容にも不備がありそうなため
どんなことを求めているのか推理することも難しい状態です。
(きまぐれおじさん) 2021/09/13(月) 00:48

 Dim buf1 As Boolean
 Dim buf2 As Boolean
 Dim tmp As Boolean

 Dim c As Long
 Dim i As Long
 Dim j As Long

 For i = 0 To 3
  c = i + 1     '1,2,3,4
  j = i * 2 + 1 '1,3,5,7
  buf1 = (Me.Controls("Textbox" & j + 8).Value = "")    '9,11,13,15が空白でTrue
  buf2 = (Me.Controls("Textbox" & j + 9).Value = "")    '10,12,14,16が空白でTrue
  Select Case True
   Case buf1 And buf2   'True-True
    GoTo Continue       'True-Trueの値は未定義のためスキップ
   Case buf1            'True-False
    tmp = False
   Case buf2            'False-True
    tmp = True
   Case Else            'False-False
    GoTo Continue       'False-Falseの値は未定義のためスキップ
  End Select
  Me.Controls("Checkbox" & c).Value = tmp   '1,2,3,4
Continue:
 Next i

ステップ実行で動作確認してみてください。
(めざめるパワー) 2021/09/13(月) 02:05


皆様ありがとうございます。
Textboxは16個でCheckboxは8個でした。失礼しました。
ご提示いただいたものでCheckbox1〜4のう動きはできました。大変に助かりました。

ご提示いただいたものでCheckbox8個のものを勉強したいと思います。
(Mike D) 2021/09/13(月) 10:11


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.