質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1287閲覧

ExcelVBAの質問なんですが

koarakko

総合スコア22

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2017/12/10 05:51

編集2017/12/10 09:43
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 End Sub ```ExcelVBAを使ってクイズソフトを作成しようとしているのですが、userform2のボタンを押すとラベルにuserform1のいくつかあるcheckboxがチェックされているかどうかで、 ラベルにセルに入ってる文章をランダムで一つ表示させるプログラムを見よう見まねで作成しようとしているのですが、checkboxが一つだけチェックされているときはうまく動作するのですが、2つや3つチェックされると上手く動作しないのですが、何処が悪いのでしょうか? 2つチェックされたときのプログラムを載せます。 チェックボックス4と5をチェックしているときになぜか、A1からA26までのセルの文章は問題なく表示するのですが、A27からA40までのセルの表示が一切おこらないんです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

編集してください。

ソースコードが読みづらいです。

編集時に出てくる "</>" のボタンを押して、出てきたやつの中にソースコードを記述してください。


[追記1]

ソースコードを記述するときは、"</>"を押してその中に書いてください。

ここまではできていますが、

インデントが無いため読みづらい。

また、Sub に対する終了 ( End Sub ) もありません。

質問時に書くのを忘れたのか、ソースコード自体がそれなのかが判断できないです。

次に、問題となっている"なぜかA27からA40までのセルの表示が起こらない" はたぶん、

If文のElseの使い方が間違っているからだと思います。

質問にある状態では、

VBA

1If z = ("1:26") Then 2Label7.Caption = "法令" 3Else: z = ("27:40") 4Label7.Caption = "化学" 5End If

となっています。

Elseの部分を見ると z = ("27... となっていますね。これ、条件式じゃなくて、代入になっているかも。

If文で条件が複数ある場合 ( 同時に満たすやつじゃない方 ) だと

VBA

1If 条件1 Then 2 ' 条件1を満たしている場合 3ElseIf 条件2 Then 4 ' 条件2を満たしている場合 5ElseIf 条件3 Then 6 ' 条件3を満たしている場合 7Else 8 ' 上記のどれにも引っかからなかった場合 9End If

になっていたと思います。

質問にあるやつを考えると、

VBA

1If z = ("1:26") Then 2Label7.Caption = "法令" 3Else: z = ("27:40") 4Label7.Caption = "化学" 5End If

でしたよね。

VBA

1If z = ("1:26") Then 2Label7.Caption = "法令" 3Else: 4z = ("27:40") ' Zに代入 5Label7.Caption = "化学" 'Label7のCaptionに代入 6End If

の意味になるので、これが原因?


[ 返信1 ]

私が言いたかったものは「構文ミス」です。

C言語とかだとコンパイルエラーになるレベルじゃないですが、

履き違えている感じ。

もう一度入門系のサイトか書籍をお読みください。

で、ご自分が質問したものと比較してください。

質問者さんのは

VBA

1If z = ("1:26") Then 2Label7.Caption = "法令" 3Else: z = ("27:40") 4Label7.Caption = "化学" 5End If

となっていますよね?

Else以降を見てください。

Else: z = ("27:40")

となっていますね。

これって、コンパイラ(?) からすると

Else: z = ("27:40")

っていう風に2種類の文になっています。

たぶん質問者さんは z が ("27:40") のとき...っていう感じだと思っているはずですが、

実際には

「それ以外なら z に ("27:40")を代入する」っていうことになっているためだと思います。

C言語で書くと

C

1if( a == 100 ){ 2 3}else{ 4 z = 20 // ここが問題のエリア 5}

C

1if( a == 100 ){ 2 3}else if( z == 20 ){ 4 // ここが問題のエリア? 5}

は まるっきり違います。

投稿2017/12/10 06:05

編集2017/12/28 02:35
BeatStar

総合スコア4958

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koarakko

2017/12/10 07:18

申し訳ないです 編集しました
koarakko

2017/12/10 09:44

ありがとうございますm(_ _)m 一応If文のなかにいれてるつもりだったんですが、できてなかったですかね。
BeatStar

2017/12/28 02:25

解決できました? ( 10日以上前なので。 ) もし解決できていないなら再度、私が最初に回答したやつ ( 本体 ) をお読みください。 ( 修正しますから。 )
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問