Excel VBA 質問スレッド No.42 (未解決)

ExcelVBAのクイズソフトを作成しようとしているのですが

投稿者 : っかs     投稿日時 : 2017/12/10(Sun) 15:39:37     OS : Windows Vista     EXCEL : Excel 2007
ExcelVBAを使ってクイズソフトを作成しようとしているのですが、userform2のボタンを押すとラベルにuserform1のいくつかあるcheckboxがチェックされているかどうかで、
ラベルにセルに入ってる文章をランダムで一つ表示させるプログラムを見よう見まねで作成しようとしているのですが、checkboxが一つだけチェックされているときはうまく動作するのですが、2つや3つチェックされると上手く動作しないのですが、何処が悪いのでしょうか?
2つチェックされたときのプログラムを載せます。

Private Sub CommandButton10_Click()

Dim z As String

If UserForm1.CheckBox4.Value And UserForm1.CheckBox5.Value Then
With Worksheets("Sheet2").Range("A2:A41")
z = Application.RandBetween(A1, .Count)
UserForm2.Label6.Caption = .Cells(i).Value
If z = ("1:26") Then
Label7.Caption = "危険物に関する法令"
Else: z = ("27:40")
Label7.Caption = "基礎的な物理及び基礎的な化学"
End If
End With
End If

補足
チェックボックス4と5をチェックしているときになぜか、A1からA26までのセルの文章は問題なく表示するのですが、A27からA40までのセルの表示が一切おこらないんです。

[返信 1] Re : ExcelVBAのクイズソフトを作成しようとしているのですが
投稿者 : 管理人     投稿日時 : 2017/12/11(Mon) 20:44:12
プログラムを見て気になった点を確認させてください。

> z = Application.RandBetween(A1, .Count)
A1は何でしょうか?1の誤りでしょうか?それとも変数?
RandBetweenからの返却値は整数値ですので、zはinteger型の方がいいのではないでしょうか?

> UserForm2.Label6.Caption = .Cells(i).Value
変数iはどこにも宣言されてないようですが、どんな値がはいってくるのでしょうか?

> If z = ("1:26") Then
変数zにはランダムで取得した1~40の値が変数zに入るようですが、
このIf文の判定は何がしたいのでしょうか?
もしzが1~26の範囲と判定したいのであれば、
zをinteger型で宣言して If 1 <= z And z <= 26 Then としてください。

スポンサード リンク
 
 
当掲示板について
返信入力フォーム
お 名 前  :
内  容   :
ステータス  : この質問を解決済みにする

認証コード  :
        キャプチャ画像


( 処理日時 : 2019-05-22 10:02:34 )

Page
Top