Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4643 / 13644 ツリー ←次へ | 前へ→

【55435】追加−現在はこんな方法で行っています みけ 08/5/4(日) 9:13 質問[未読]
【55437】Re:追加−現在はこんな方法で行っています kanabun 08/5/4(日) 10:50 回答[未読]
【55441】Re:追加−現在はこんな方法で行っています kanabun 08/5/4(日) 12:36 回答[未読]
【55438】Re:追加−現在はこんな方法で行っています Hirofumi 08/5/4(日) 11:04 発言[未読]
【55440】Re:追加−現在はこんな方法で行っています Hirofumi 08/5/4(日) 12:20 回答[未読]

【55435】追加−現在はこんな方法で行っています
質問  みけ  - 08/5/4(日) 9:13 -

引用なし
パスワード
   現在は、ラベルを複数配置して一つのラベルに問い(フレーム)3つの内でyesにチッェクが入っている問いの番号を表示させるよう下記のような式をyesのオプションボタン(CheckBox_Click())に書いてます。
 入力後の確認のためにyesのものを確認できればと考えているのですが問いの数が多くなるとラベルの数も増えてなんか煩雑になるのでもっといい方法がないかと思っています。よろしくお願いします。


If Form編集.CheckBox1.Value = True And Form編集.CheckBox2.Value = False And Form編集.CheckBox3.Value = False Then
Form編集.Label1 = "1,"
ElseIf Form編集.CheckBox1Value = False And Form編集.CheckBox2.Value = True And Form編集.CheckBox3.Value = False Then
Form編集.Label1 = "2,"
ElseIf Form編集.CheckBox1Value = False And Form編集.CheckBox2.Value = False And Form編集.CheckBox3.Value = True Then
Form編集.Label1 = "3,"
ElseIf Form編集.CheckBox1Value = True And Form編集.CheckBox2.Value = True And Form編集.CheckBox3.Value = False Then
Form編集.Label1 = "1,2,"
ElseIf Form編集.CheckBox1Value = False And Form編集.CheckBox2.Value = True And Form編集.CheckBox3.Value = True Then
Form編集.Label1 = "2,3,"
ElseIf Form編集.CheckBox1Value = True And Form編集.CheckBox2.Value = False And Form編集.CheckBox3.Value = True Then
Form編集.Label1 = "1,3,"
ElseIf Form編集.CheckBox1Value = True And Form編集.CheckBox2.Value = True And Form編集.CheckBox3.Value = True Then
Form編集.Label1 = "1,2,3,"
Else: Form編集.Label1 = Empty
End If

【55437】Re:追加−現在はこんな方法で行っています
回答  kanabun  - 08/5/4(日) 10:50 -

引用なし
パスワード
   ▼みけ さん:

その部分は こんなふうでどうですか?

 Dim i As Long
 Dim ss As String, s As String
 
 For i = 1 To 3
  If Me.Controls("CheckBox" & i).Value Then
   If Len(ss) Then s = "," Else s = ""
   ss = ss & s & i
  End If
 Next
 Label1.Caption = ss

【55438】Re:追加−現在はこんな方法で行っています
発言  Hirofumi  - 08/5/4(日) 11:04 -

引用なし
パスワード
   >現在は、ラベルを複数配置して一つのラベルに問い(フレーム)3つの内でyesにチッェクが入っている問いの番号を表示させるよう下記のような式をyesのオプションボタン(CheckBox_Click())に書いてます。
> 入力後の確認のためにyesのものを確認できればと考えているのですが問いの数が多くなるとラベルの数も増えてなんか煩雑になるのでもっといい方法がないかと思っています。よろしくお願いします。

OptionButtonとCheckBoxは全く違うコントーロールですが?
どちらのコントロールなのですか?
また、UserFormにどの様な配置がされて居るのですか?

最初の質問時には、フレームにYes、NoのOptionButtonが配置され
それが3問分ある様な書き方でしたが、
Upされているコードは、1つのフレームにCheckBoxが3個配置されて居るようです

【55440】Re:追加−現在はこんな方法で行っています
回答  Hirofumi  - 08/5/4(日) 12:20 -

引用なし
パスワード
   ★1、Frame1にCheckBox1〜3を配し、値がTrueの物の番号をFrame1内のLabelに表示
 及び、Frame2にCheckBox4〜6を配し、値がTrueの物の番号をFrame2内のLabelに表示場合

 先ず、UserFormのデザイン画面で、各CheckBoxのTagプロパティにTrueの時に、
 表示する番号を設定して置きます

Option Explicit

Private Sub CheckBox1_Click()

  SelectedNum CheckBox1
  
End Sub

Private Sub CheckBox2_Click()

  SelectedNum CheckBox2
  
End Sub

Private Sub CheckBox3_Click()

  SelectedNum CheckBox3
  
End Sub

Private Sub CheckBox4_Click()

  SelectedNum CheckBox4
  
End Sub

Private Sub CheckBox5_Click()

  SelectedNum CheckBox5
  
End Sub

Private Sub CheckBox6_Click()

  SelectedNum CheckBox6
  
End Sub

Private Sub SelectedNum(cntChek As MSForms.CheckBox)

  Dim i As Long
  Dim strResult As String
  Dim lngLabel As Long
  
  With cntChek.Parent
    For i = 0 To .Controls.Count - 1
      If TypeName(.Controls(i)) = "CheckBox" Then
        If .Controls(i).Value Then
          If strResult <> "" Then
            strResult = strResult & ","
          End If
          strResult = strResult & .Controls(i).Tag
        End If
      Else
        If TypeName(.Controls(i)) = "Label" Then
          lngLabel = i
        End If
      End If
    Next i
    .Controls(lngLabel).Caption = strResult
  End With
        
End Sub

Private Sub UserForm_Click()

End Sub

★2、FuserFormにFrameを配し、その中にOptionButtonのYes、Noの2つを配します
 3問なので、Frame1にOptionButton1〜2、Frame2にOptionButton3〜4、Frame3にOptionButton5〜6
 を配し、OptionButtonの奇数番をYesとします。
 デザイン時に、
 各OptionButtonのYesのTagプロパティに&H000000FF&を
 NoのTagプロパティに&H80000012&を設定して置きます
 
 UserForm実行時に、OptionButtonをクリックすると、Yesなら其のButtonのFrameのCaptionが赤に
 Noなら黒に変わり、ButtonのFrameのTagにYes、Noが入ります

Option Explicit

Private Sub OptionButton1_Click()

  GetAnswer OptionButton1
  
End Sub

Private Sub OptionButton2_Click()

  GetAnswer OptionButton2
  
End Sub

Private Sub OptionButton3_Click()

  GetAnswer OptionButton3
  
End Sub

Private Sub OptionButton4_Click()

  GetAnswer OptionButton4
  
End Sub

Private Sub OptionButton5_Click()

  GetAnswer OptionButton5
  
End Sub

Private Sub OptionButton6_Click()

  GetAnswer OptionButton6
  
End Sub

Private Sub GetAnswer(cntOption As MSForms.OptionButton)

  With cntOption
    .Parent.ForeColor = Val(.Tag)
    .Parent.Tag = .Caption
  End With
  
End Sub

【55441】Re:追加−現在はこんな方法で行っています
回答  kanabun  - 08/5/4(日) 12:36 -

引用なし
パスワード
   マルチポストだったのか。。。

4643 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free