[[20190124173114]] 『ユーザーフォームのラベルの数を数える』(数くん) ページの最後に飛ぶ

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

 

『ユーザーフォームのラベルの数を数える』(数くん)

ユーザーフォームにラベルで問題を出しテキストボックスに答えを入力させ隣にラベルで"正解"又は"×"と表示させています。
1×2=(ラベル1) 2(テキストボックス1) 正解(ラベル2) ラベル2には
If textbox1.value="2" then

 lavel2.caption="正解" 
elseif textbox1.value= <>"2" then  
 lavel2.caption="×"
Endif
として、問題が5つあり正解数をラベル11に表記させたいのですがどうしたらいいでしょうか?よろしくお願石ます。

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


    Label11.Caption = IIf(Label2.Caption = "正解", 1, 0) + _
                      IIf(Label4.Caption = "正解", 1, 0) + _
                      IIf(Label6.Caption = "正解", 1, 0) + _
                      IIf(Label8.Caption = "正解", 1, 0) + _
                      IIf(Label10.Caption = "正解", 1, 0)
(???) 2019/01/24(木) 18:18

 Dim i As Long, cnt as Long

 For i = 2 to 10 Step 2
     If Controls("Label" & i).Caption = "正解" Then Cnt = Cnt + 1
 Next
 Label11.Caption = Cnt

(hatena) 2019/01/24(木) 19:50


???さん hatenaさん
ありがとうございます。思った通りにできました。
(数くん) 2019/01/24(木) 22:57

先日はありがとうございました。Userformを増やして正解数を加算していきたいのですが以下のようにしましたが加算されません。どうすればいいのでしょうか?
For i = 6 To 10

     If UserForm1.Controls("Label" & i).Caption = "正解" Then
     cnt = cnt + 1
     ElseIf UserForm2.Controls("Label" & i).Caption = "正解" Then
     Count = Count + 1

  End If
 Next i

 Label11.Caption = cnt + Count & "0"
 Label12.Caption = "点GET!"

 Range("A4").Value = cnt + Count & "0"
 Range("B4").Value = UserForm1.Label12.Caption
(数くん) 2019/01/31(木) 13:03

UserForm1とUserForm2のどちらか一方だけ加算するわけではないので、ElseIf じゃ駄目でしょう。 両方カウントする場合だってあるのだし、それぞれカウントしないとですよ。
(???) 2019/01/31(木) 13:12

???さんありがとうございます。修正しました。
Userformを開くたびに正解数がリセットされると気づきました。問題を解いたら正解数は維持しておく場合どうすればいいでしょうか?よろしくお願いします。
(数くん) 2019/01/31(木) 13:19

変数を、標準モジュールに Public 指定で宣言してください。 プロジェクト内の共通変数として扱えるようになりますよ。
(???) 2019/01/31(木) 13:22

あ、共通にして消えなくなるのは良いのですが、逆に全問終わった後でも変数内が消えないので、次の開始時に0を代入してやる必要があります。
(???) 2019/01/31(木) 13:24

問題文 正解かどうか のデータはシートに格納して、
正解の集計もシートの式で行うようにする。
複数の回答者がいるなら、回答者名をシートに格納する。

問題文はユーザーフォームを開くときにシートから読み込んでラベルに表示させる。
回答者名、回答をユーザーフォームで入力したら、それをシートに書き込む。

というような設計に自分ならするかな。

問題が変更されたり追加されてもシートに入力するだけですむ。
回答履歴も格納しておけば、前回の回答と比較してどれぐらい正解数が増えたか確認できる。
などいろいろ拡張もしやすいですしね。

(hatena) 2019/01/31(木) 15:16


???さん
知識があまりないので、Public 指定で宣言 プロジェクト内の共通変数 といったことがわかりません。
hatenaさん
シートからの反映やってみます。問題文や答えなどのシートを作りたいと思います。
(プログラミング学習) 2019/01/31(木) 15:45

元の知識なんて関係ありません。 今回調べて納得すれば良いだけ。

Public というキーワードを教えているのだから、ヘルプで検索してください。 解説も書いてあります。 具体的には、「Public ステートメント」から「使用例」を見れば判るでしょう。 今回の例ならば、Public cnt As Long とか。
(???) 2019/01/31(木) 16:14


コメント返信:

[ 一覧(最新更新順) ]


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