忙しい現代人の腰&肩のお悩み対策!

タイトルの通りです office2002ですが visual vasic editorに入力しています。
Sub quiz1()
MsgBox "[OK]ボタンを押すと、なぞなぞが始まります"
MsgBox "自分が動物だと言っているような飲み物は?"
MsgBox "サイダー"
MsgBox "話をすることの大好きな道具は?"
MsgBox "シャベル"
MsgBox "やぶれば、やぶるほど、ほめられるものは?"
MsgBox "記録"
End Sub
と入力しましたが メッセージボックスのタイトル部分が Microsoft Excelとなっていますが 例えば "問題1"とかに変えたいのですが 
どうすればいいのでしょうか お願いします

このQ&Aに関連する最新のQ&A

A 回答 (5件)

おもしろそうなので、寄せてもらいます。

Sheet2に、データをセットして、そこから問題と答えを呼び出します。Sheet2の1列目は、問題番号、2列目は問題、3列目は答えとして、2 行目から、データが入っているとします。

次のコードを、標準モジュールにコピペしてください。


Sub quiz()
Dim ans As Variant
Dim Question, Answer, H(3) As String
Dim i As Integer
Dim WS As Object
Set WS = Worksheets("Sheet2")
H(1) = "ぴんぽ~ん!"
H(2) = "当たり!"
H(3) = "残念"
MsgBox "[OK]ボタンを押すと、なぞなぞが始まります", , "クイズ"
i = 1
While WS.Cells(i + 1, 2) <> ""
Question = WS.Cells(i + 1, 2).Value
Answer = WS.Cells(i + 1, 3).Value
ans = InputBox(Question, "問題" & i)
If ans = Answer Then
MsgBox H(1), , H(2)
Else
MsgBox Answer & "でした。", vbCritical, H(3)
End If
i = i + 1
Wend
End Sub

この回答への補足

早速 やってみましたが残念!

ボタンを押すと、なぞなぞが始まります は出たのですが その後がでないのです

補足日時:2005/07/14 12:29
    • good
    • 0

No2です。



No4の補足を見ましたが、回答者:pascal3141 さんが書いたように、Sheet2の1列目は、問題番号、2列目は問題、3列目は答えとして、2 行目から、データが入えてありますか?

No3の補足をみましたが、ポップアップされるメッセージボックスの大きさは、文字数が増えれば自動的に大きくなりますよ。長い問題を入れてみて下さい。

改行したい場合はこんなふうにしてみてください。

MsgBox "[OK]ボタンを押すと、なぞなぞが始まります。♪♪♪♪" _
+ Chr(&HD) + Chr(&HA) + "" _
+ Chr(&HD) + Chr(&HA) + "質問の答えを入力欄に書き込んでOKボタンを押してみてください。" _
+ Chr(&HD) + Chr(&HA) + "" _
+ Chr(&HD) + Chr(&HA) + "では始まりま~す。", , "クイズ"
    • good
    • 0

面白そうなので参加します。



No2さんのをそのまま拝借して、点数を出すようにしました。

Sub quiz2()
Dim ans As Variant
Dim p As Integer, x As Single
p = 0
MsgBox "[OK]ボタンを押すと、なぞなぞが始まります", , "クイズ"
ans = InputBox("自分が動物だと言っているような飲み物は?", "問題1")
If ans = "サイダー" Then
MsgBox "ぴんぽ~ん!", , "当たり!"
p = p + 1
Else
MsgBox "サイダーでした。", vbCritical, "残念"
End If
ans = InputBox("話をすることの大好きな道具は?", "問題2")
If ans = "シャベル" Then
MsgBox "ぴんぽ~ん!", , "当たり!"
p = p + 1
Else
MsgBox "シャベルでした。", vbCritical, "残念"
End If
ans = InputBox("やぶれば、やぶるほど、ほめられるものは?", "問題3")
If ans = "記録" Then
MsgBox "ぴんぽ~ん!", , "当たり!"
p = p + 1
Else
MsgBox "記録でした。", vbCritical, "残念"
End If
x = 100 * p / 3
MsgBox "3問中、" & p & "問正解です。", , x & " POINT"
End Sub

この回答への補足

おもしろ~い!!ありがとうございます 
ついででは 申し訳ないのですが
皆さんに お聞きしたいのですが 
このダイアログボックスの大きさをもっとおおきくできますか?? おねがいします  

補足日時:2005/07/14 12:19
    • good
    • 0

なぞなぞならこんな感じでいかが?


回答を入力する方式にしてみました。

Sub quiz1()
MsgBox "[OK]ボタンを押すと、なぞなぞが始まります", , "クイズ"
ans = InputBox("自分が動物だと言っているような飲み物は?", "問題1")
If ans = "サイダー" Then
MsgBox "ぴんぽ~ん!", , "当たり!"
Else
MsgBox "サイダーでした。", vbCritical, "残念"
End If
ans = InputBox("話をすることの大好きな道具は?", "問題2")
If ans = "シャベル" Then
MsgBox "ぴんぽ~ん!", , "当たり!"
Else
MsgBox "シャベルでした。", vbCritical, "残念"
End If
ans = InputBox("やぶれば、やぶるほど、ほめられるものは?", "問題3")
If ans = "記録" Then
MsgBox "ぴんぽ~ん!", , "当たり!"
Else
MsgBox "記録でした。", vbCritical, "残念"
End If
End Sub
    • good
    • 0
この回答へのお礼

うれしい~!!感激です 想像していたとおりの物ができました ありがとうございます

お礼日時:2005/07/12 12:01

Visual Basic Editorの画面で、ヘルプからMsgBox関数の解説を見ると良いです。



この場合は、

MsgBox "[OK]ボタンを押すと、なぞなぞが始まります", , "問題1"

でOKです。
    • good
    • 0
この回答へのお礼

わ~!!できました ありがとうございます

お礼日時:2005/07/12 12:00

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q4択問題のプログラムでランダムに出題する処理で困っています

現在私は画像のような4択の問題を解答し最後に何問正解していたかを表示するプログラムを作成しています。

解答を選択して「次の問題」ボタンをクリックすれば次の問題に移行する・・・というような流れです。

データテーブルに「問題(Question)」「選択肢(Answer1~4)」「解答(SelectAnswr)」「正解(CorrectAnswer」「正解の解説(Explanation)*今質問中では使用させません」を格納しています。

最終的な目標はデータテーブルに問題を300問用意しその中からランダムに100問出題して最後に結果を表示するプログラムを作成することです。

今どうすればランダムに出題しつつ同じ問題が出題されないようにするプラグラムを組めばいいのか壁にぶつかっています。

下記が「次の問題」ボタンのプログラムです。


Private Sub NextQuestion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NextQuestion.Click

' i が -1 のとき(つまり、初回のクリック)
If i = -1 Then
'選択肢を選択可能にする
GroupBox1.Enabled = True

'NextQuestionのテキスト変換
NextQuestion.Text = "次の問題"
' i が -1以外のとき(つまり、回答後のクリック)
Else
'正誤確認
If Answer1.Checked = True Then
DataSet1.DataTable1(i).SelectAnswer = "ア"
ElseIf Answer2.Checked = True Then
DataSet1.DataTable1(i).SelectAnswer = "イ"
ElseIf Answer3.Checked = True Then
DataSet1.DataTable1(i).SelectAnswer = "ウ"
ElseIf Answer4.Checked = True Then
DataSet1.DataTable1(i).SelectAnswer = "エ"
End If

If DataSet1.DataTable1(i).SelectAnswer = DataSet1.DataTable1(i).CorrectAnswer Then
total = total + 1
End If

End If

i += 1 ' i をインクリメント(出題を次に進める)

' i が10になった = 回答が10問終わった
If i = 10 Then
MsgBox("あなたの正解数は10門中" & total & "問です!")
Me.Close()
Else
'問題の読み込み
Question.Text = DataSet1.DataTable1(i).Question
Answer1.Text = DataSet1.DataTable1(i).Answer1
Answer2.Text = DataSet1.DataTable1(i).Answer2
Answer3.Text = DataSet1.DataTable1(i).Answer3
Answer4.Text = DataSet1.DataTable1(i).Answer4

'ラジオボタンを初期位置に戻す
Answer1.Checked = True
End If


End Sub

*変数iはPublicで宣言しています。
*最終目標は100問出題なのですが今は10問で動くプログラムを作成しています。

わかるかたがいましたら知恵をかしてください。
お願いします。

現在私は画像のような4択の問題を解答し最後に何問正解していたかを表示するプログラムを作成しています。

解答を選択して「次の問題」ボタンをクリックすれば次の問題に移行する・・・というような流れです。

データテーブルに「問題(Question)」「選択肢(Answer1~4)」「解答(SelectAnswr)」「正解(CorrectAnswer」「正解の解説(Explanation)*今質問中では使用させません」を格納しています。

最終的な目標はデータテーブルに問題を300問用意しその中からランダムに100問出題して最後に結果を表...続きを読む

Aベストアンサー

まず「次の問題に進む時、問題の参照にiを使わず、乱数で求めた0~299の値を使う」と言うように変更しましょう。

そして「初期化時や無回答で次の問題に進んだ時の、解答(SelectAnswr)にセットする値を工夫する事で、未出題か出題済みか判定する」と言う処理をして、問題の重複を避けましょう。

ヒントだけ。

ヒントは以下の通り。

ヒント1.
「解答(SelectAnswr)」に入る値を「回答された"ア"~"エ"」「無回答でスキップした"S"」「まだ出題してない""」の3種類にする。
(無回答でのスキップが出来ない、つまり、選択肢のどれかを選ばないと「次の問題」ボタンが押せない、と言う処理の場合「無回答でスキップした"S"」は不要)

ヒント2.
最初の初期化時に「300件全部、解答(SelectAnswr)の値を""にして、すべて未出題」にする。

ヒント3.
出題時に問題を参照する時「DataSet1.DataTable1(i).ほげほげ」のように「(i)」で参照するのをやめる。
代わりに、乱数で「解答(SelectAnswr)の値が、まだ出題してない""になっている問題」を探す。
つまり「乱数で0~299の値を作り、解答(SelectAnswr)の値が""なら、その乱数が出題番号になり、解答(SelectAnswr)の値が""じゃないなら乱数の作り直し」をすればよい。

ヒント4.
変数の「i」は「最初は-1」「1題出題するごとに1を足す」「100題目が終わったら終了」の目的以外には使わない。
つまり「DataSet1.DataTable1(i).ほげほげ」っていう書き方を全部無くす。

ヒント5.
選択肢を選ばずに「次の問題」を押してしまった場合「解答(SelectAnswr)」の値が「まだ出題してない""」のまま次に進んでしまっては困るので、次に進む前に「解答(SelectAnswr)の値を"S"にする」と言う処理をして「出題済み」にする。
(無回答でのスキップが出来ない、つまり、選択肢のどれかを選ばないと「次の問題」ボタンが押せない、と言う処理の場合、この処理は不要)

ヒントは以上。

なお、この方法は「300問中100問」などのように、最後の100問目に近い時も未出題の問題が多い場合は問題ありませんが「すべての問題を出題する」などの場合、最後の問題に近くなると未出題の問題が減り「残りの問題が乱数にヒットせず、次の問題に進む際に時間がかかる」と言う欠点があるので注意して下さい。今回のように「300問中100問」であれば問題はありません。

まず「次の問題に進む時、問題の参照にiを使わず、乱数で求めた0~299の値を使う」と言うように変更しましょう。

そして「初期化時や無回答で次の問題に進んだ時の、解答(SelectAnswr)にセットする値を工夫する事で、未出題か出題済みか判定する」と言う処理をして、問題の重複を避けましょう。

ヒントだけ。

ヒントは以下の通り。

ヒント1.
「解答(SelectAnswr)」に入る値を「回答された"ア"~"エ"」「無回答でスキップした"S"」「まだ出題してない""」の3種類にする。
(無回答でのスキップが...続きを読む

Qクイズゲームのフォームについて

こんばんは。VB初心者です。
VB6.0を用いてのクイズゲームを作成することになりました。
フォームの内容は以下のようなものです。
・問題文(ラベルorテキストボックス)
・ヒントの動画(MCIコントロール)
・四択選択肢(オプションボタン)
・正解不正解(ピクチャボックス)
・解説(ラベルorテキストボックス)

これを20問作るのですが、フォームを20個作らずに各コントロールの中身だけを変化させていきたいのですが、どのようなプログラムになるのか検討がつきません。
そこで、大まかなプログラムの流れだけでもいいので教えて欲しいです。
また、クイズ作成において参考になるHPがあれば教えて下さい。宜しくお願いします。

Aベストアンサー

20個フォームをつくるなんてやめて~(笑)

クイズは問題数分の配列を用意すればいいです。問題文と答えは
DIM Aestion(20) As String
DIM Kotae(20) as integer

ついでに回答者の結果を格納する配列も用意しましょう。
DIM Kekka(20) As Integer

とりあえず処理の中心は上記3つの配列です。
コードの先頭において、どこでも参照できるようにした方が楽です。

問題文はファイルから読み込む方が汎用性があっていいですが、
初心者だと大変なので、とりあえずはForm_Loadに書いてしまいましょう。
20問は毎回固定になります。

慣れたらQuestionとKotaeの配列を100に増やすとかしてもいいです。
問題文は最初100題書いておいて、20題だけ出題することもできます。

選択肢はオプションボタンとありますが、これは要らない。
最初から4つのボタンを用意して、
それを押下させた方が操作性もいいしコードも楽になります。

何問目の問題かを制御するカウンターもコードの先頭に宣言しましょう。
Dim nanmonme As Integer

これら変数をコードの先頭におくと便利なのは、
VBがイベント駆動型で処理がイベントにまたがってしまうからです。

どこのSub にもFunctionにも属さないコードの先頭におけば
フォームを閉じるまで変数の値はずっと保持されています。

MCIコントロールは最後の最後。
とりあえず20問最後まで動くインタフェースを作ってからの話ですね。

20個フォームをつくるなんてやめて~(笑)

クイズは問題数分の配列を用意すればいいです。問題文と答えは
DIM Aestion(20) As String
DIM Kotae(20) as integer

ついでに回答者の結果を格納する配列も用意しましょう。
DIM Kekka(20) As Integer

とりあえず処理の中心は上記3つの配列です。
コードの先頭において、どこでも参照できるようにした方が楽です。

問題文はファイルから読み込む方が汎用性があっていいですが、
初心者だと大変なので、とりあえずはForm_Loadに書いてしまいましょ...続きを読む

Q▲特定のセルからランダムに抽出しテストを作成▲

いつもお世話になっております。
エクセルのVBAについて教えて頂きたく書き込みいたします。
日本語が意味不明であれば、より詳しく記載しますのでご教授願います。

1つのエクセルの中に4つのシートがあります。
【Top(sheet1)、問題(sheet2)、初級(sheet3)、中級(sheet4)、上級(sheet5)】

Topにはスタートボタンがあり、クリックすることにより問題シートへと移動し、別シートより問題を抽出したいです。

問題シート内のC3~C17に問題が、D3~D17に(問題に付随した)ヒントが
ランダムに抽出されるようにマクロを作成したいです。

また問題、ヒント、答えは初級、中級、上級、それぞれのシートに(20問ずつぐらい)記載をしています。
初級から10問、中級から3問、上級から2問と抽出をしたいです。
答えに回答を入力することにより正解であればセルが青く、間違えであればセルが赤くなるようにしたいです。

簡易ではありますが、エクセルの画像も添付させてもらいます。
恐れ入りますがご教授願います。

Aベストアンサー

こんばんは!
面白そうなのでトライしてみました。

Sheet6を作業用のSheetとして追加・使用するようにしていますので、
Book上にはお示しの5つのSheetが存在しているという前提です。
尚、各Sheetともお示しの配置通りとします。

ます「TOP」Sheetにコマンドボタンを挿入 → コマンドボタンのコードを↓にしてみてください。

Private Sub CommandButton1_Click()
Worksheets("問題").Select
Worksheets("問題").Range("E3:E17").Interior.ColorIndex = xlNone
Call Sample1
End Sub

次にAlt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に
↓のコードをコピー&ペーストしてください。

Sub Sample1() 'この行から
Dim i As Long, lastRow As Long, c As Range
Dim wS2 As Worksheet, wS3 As Worksheet, wS4 As Worksheet, wS5 As Worksheet, wS6 As Worksheet
Set wS2 = Worksheets("問題")
Set wS3 = Worksheets("初級")
Set wS4 = Worksheets("中級")
Set wS5 = Worksheets("上級")
Application.ScreenUpdating = False
If Worksheets.Count <> 6 Then
Worksheets.Add after:=Worksheets(Worksheets.Count)
End If
Set wS6 = Worksheets(Worksheets.Count)
wS6.Visible = xlSheetHidden
wS6.Range("A:C").Clear
wS2.Range("C3:E17").ClearContents
With wS3
lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
.Range("E:F").Insert
Range(.Cells(2, "E"), .Cells(lastRow, "E")).Formula = "=RAND()"
Range(.Cells(2, "F"), .Cells(lastRow, "F")).Formula = "=RANK(E2,E:E)"
For i = 1 To 10
Set c = .Range("F:F").Find(what:=i, LookIn:=xlValues, lookat:=xlWhole)
c.Offset(, -4).Resize(, 3).Copy
wS6.Activate
ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
Next i
.Range("E:F").Delete
End With
With wS4
.Range("E:F").Insert
lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
Range(.Cells(2, "E"), .Cells(lastRow, "E")).Formula = "=RAND()"
Range(.Cells(2, "F"), .Cells(lastRow, "F")).Formula = "=RANK(E2,E:E)"
For i = 1 To 3
Set c = .Range("F:F").Find(what:=i, LookIn:=xlValues, lookat:=xlWhole)
c.Offset(, -4).Resize(, 3).Copy
wS6.Activate
ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
Next i
.Range("E:F").Delete
End With
With wS5
.Range("E:F").Insert
lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
Range(.Cells(2, "E"), .Cells(lastRow, "E")).Formula = "=RAND()"
Range(.Cells(2, "F"), .Cells(lastRow, "F")).Formula = "=RANK(E2,E:E)"
For i = 1 To 2
Set c = .Range("F:F").Find(what:=i, LookIn:=xlValues, lookat:=xlWhole)
c.Offset(, -4).Resize(, 3).Copy
wS6.Activate
ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
Next i
.Range("E:F").Delete
End With
wS6.Range("A2:B16").Copy
wS2.Activate
ActiveSheet.Range("C3").Select
Selection.PasteSpecial Paste:=xlPasteValues
wS2.Columns.AutoFit
wS2.Range("E3").Select
Application.ScreenUpdating = True
End Sub 'この行まで

最後に「問題」SheetのSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペースト → Excel画面に戻り「TOP」Sheetのコマンドボタンをクリックし
「問題」SheetのE列に答えを入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
Dim c As Range
If Intersect(Target, Range("E3:E17")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Worksheets(6)
If Target <> "" Then
Set c = .Range("A:A").Find(what:=Target.Offset(, -2), LookIn:=xlValues, lookat:=xlWhole)
If Target = c.Offset(, 2) Then
Target.Interior.ColorIndex = 8 '←水色
Else
Target.Interior.ColorIndex = 3
End If
Else
Target.Interior.ColorIndex = xlNone
End If
End With
End Sub 'この行まで

※ 通常の青だと字が見えにくいので「水色」にしています。m(_ _)m

こんばんは!
面白そうなのでトライしてみました。

Sheet6を作業用のSheetとして追加・使用するようにしていますので、
Book上にはお示しの5つのSheetが存在しているという前提です。
尚、各Sheetともお示しの配置通りとします。

ます「TOP」Sheetにコマンドボタンを挿入 → コマンドボタンのコードを↓にしてみてください。

Private Sub CommandButton1_Click()
Worksheets("問題").Select
Worksheets("問題").Range("E3:E17").Interior.ColorIndex = xlNone
Call Sample1
End Sub

次にAlt+F11キ...続きを読む

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

QVB2008にて4択クイズ作成

質問させていただきます。
現在VB2008にて4択クイズを作成しています。
以下のサイトを参考に作成しているのですが、不明な点がありますのでご回答お願い致します。

http://www.microsoft.com/japan/msdn/student/challengeV2/chap2_vb/

上記のページでは、Web用?に開発されてるみたいで一部ないコントロールがあります。私はVB2008のwindowsアプリケーションフォームというテンプレートから開始しているのですが、これが問題なのでしょうか。
私の開発環境では「Literal」というコントロールが見当たりません。私が見落としているだけなのかも知れませんが。。

とりあえず、コントロールはURL先とほぼ同様にしています。テーブルの作成(テーブルの挿入の仕方も分かりませんでした)とLiteral、imageコントロールは省いています。
そして、プログラムの内容は最後の項の「さらに一歩進んだテクニック」のものをほとんどそのまま使っています。
以下にそのまま貼り付けます。

Public Class Form1
'正解のボタンを表す変数を定義
Dim Answer As Button
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
' 問題文を設定する
TextBox1.Text = "Web ブラウザと Web サーバーの間で Web ページなどをやり取りする際に用いられる通信プロトコルは?"
' 回答の選択肢を設定する
ButtonA.Text = "HTML"
ButtonB.Text = "HTTP"
ButtonC.Text = "XML"
ButtonD.Text = "URL"

' 正解のボタンを設定する
Answer = ButtonB

End Sub
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonA.Click, ButtonD.Click, ButtonC.Click, ButtonB.Click
' 押されたボタンが正解のボタンかどうか調べる
Dim senderButton As Button = CType(sender, Button)
' 正解のボタンを赤くする
Answer.BackColor = System.Drawing.Color.Red

End Sub

End Class

以上です。

上記のプログラムに追加したい項目を挙げます。

1.問題文を複数用意し、ランダムに出題する。(ランダムに出題するという機能は乱数を使えば実現できるのはなんとなく分かるのですが、実際のプログラムが分かりません。

2.用意した問題全てを解答したら終わり。

以上のような流れにしたいのですが、実際にはどのようにプログラミングすれば良いのでしょうか?部分でも良いのでご指摘お願い致します。

質問させていただきます。
現在VB2008にて4択クイズを作成しています。
以下のサイトを参考に作成しているのですが、不明な点がありますのでご回答お願い致します。

http://www.microsoft.com/japan/msdn/student/challengeV2/chap2_vb/

上記のページでは、Web用?に開発されてるみたいで一部ないコントロールがあります。私はVB2008のwindowsアプリケーションフォームというテンプレートから開始しているのですが、これが問題なのでしょうか。
私の開発環境では「Literal」というコントロールが見当...続きを読む

Aベストアンサー

参考にされているサイトは#1さんのおっしゃるとおり、Webページを作成するサンプルですので、リテラルコントロールのようにweb専用のコントロールはVBで使うことはできません。

literalコントロールはVBではlabelコントロールと類似しています。
違いとしてはスタイルシートに関するプロパティの有無です。
literalはWebページのデザインや基本設定を定義するスタイルシートに関するプロパティを持っていますが、labelにはないといったところです。

基本的には文字を表示したいというだけですのでほぼ同じものです。

サンプルを作ってみましたので掲載します。
フォームにLabelコントロールを追加してください。
内容がわからない場合はお礼欄に御質問ください。

Public Class Form1
'正解のボタンを表す変数を定義
Private Const QuestionCount As Integer = 5
Private Answer As Button
Private QuestionNum() As Integer
Private Question() As String = {"Web ブラウザと Web サーバーの間で Web ページなどをやり取りする際に用いられる通信プロトコルは?", _
"問2", "問3", "問4", "問5"}
Private AnswerValue() As String = {"HTML,HTTP,XML,URL,1", "答え1,答え2,答え3,答え4,3", _
"答え1,答え2,答え3,答え4,3", "答え1,答え2,答え3,答え4,3", _
"答え1,答え2,答え3,答え4,3"}
Private ButtonArray As New System.Collections.ArrayList
Private NowQuestionNum As Integer = 0
Private Point As Integer = 0

Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonA.Click, ButtonD.Click, ButtonC.Click, ButtonB.Click
' 押されたボタンが正解のボタンかどうか調べる
Dim senderButton As Button = DirectCast(sender, Button)
' 正解のボタンを赤くする
Answer.BackColor = System.Drawing.Color.Red
If senderButton.BackColor = System.Drawing.Color.Red Then
MessageBox.Show("正解!!")
Point += 1
Else
MessageBox.Show("はずれ")
End If
Answer.BackColor = System.Drawing.SystemColors.Control
If NowQuestionNum = QuestionCount - 1 Then
MessageBox.Show(Point & "門正解です、お疲れ様でした。")
End
End If
NowQuestionNum += 1
Call SetQuestion()
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
QuestionNum = GetRandoms(0, QuestionCount - 1)
'配列にボタンを格納
ButtonArray.Add(Me.ButtonA)
ButtonArray.Add(Me.ButtonB)
ButtonArray.Add(Me.ButtonC)
ButtonArray.Add(Me.ButtonD)

Call SetQuestion()
End Sub
Private Sub SetQuestion()
' 問題文を設定する
Label1.Text = "問" & StrConv(NowQuestionNum + 1, VbStrConv.Wide)
TextBox1.Text = Question(QuestionNum(NowQuestionNum))
Dim Answers() As String = AnswerValue(NowQuestionNum).Split(",")

' 回答の選択肢を設定する
For i As Integer = 0 To ButtonArray.Count - 1
ButtonArray(i).text = Answers(i)
Next
' 正解のボタンを設定する
Answer = ButtonArray(Answers(4))
End Sub
Public Function GetRandoms(ByVal L As Integer, ByVal U As Integer) As Integer()
'LからUの範囲の重複の無い乱配列を返す。
Dim M As Integer
Dim a() As Integer
Dim i As Integer
Dim N As Integer
Dim V As Integer

M = U - L
ReDim a(M)

For i = 0 To M
a(i) = i + 1
Next

Randomize()
For i = M To 2 Step -1
N = Int(Rnd() * i)
V = a(N)
a(N) = a(i)
a(i) = V
Next

For i = 0 To M
a(i) = a(i) + L - 1
Next

GetRandoms = a
End Function
End Class

参考にされているサイトは#1さんのおっしゃるとおり、Webページを作成するサンプルですので、リテラルコントロールのようにweb専用のコントロールはVBで使うことはできません。

literalコントロールはVBではlabelコントロールと類似しています。
違いとしてはスタイルシートに関するプロパティの有無です。
literalはWebページのデザインや基本設定を定義するスタイルシートに関するプロパティを持っていますが、labelにはないといったところです。

基本的には文字を表示したいというだけですのでほぼ同じ...続きを読む

Qエクセルなどで、ボタンを押すとじゃんけんの「グー」「チョキ」「パー」が

エクセルなどで、ボタンを押すとじゃんけんの「グー」「チョキ」「パー」が表示されるプログラムを作りたいのですが可能でしょうか。
できればグーなど手の形はイラストを使いたいです。当方パソコン初心者です。

Aベストアンサー

どこかのセルに以下の式を入力し、セルの書式設定のフォントタブでフォント名を「Windings」にしてサイズを「36」程度にしてください。

=CHOOSE(INT(RAND()*3)+1,"C","A","I")

F9キーを押せば、グー・チョキ・パーがランダムに表示されます。

QExcel VBA じゃんけん

じゃんけんのプログラミングを作っているのですが、今できているじゃんけんの
プログラムの追加機能として得点式のゲームにしたいと思っています。
ルールとしては、10回じゃんけんをしてポイントを0から
勝ったら 得点+1
引き分けたら 得点 +0
負けたら 得点 -1
というふうにして
最終的に合計点数が0より大きければ勝ち0より小さければ負け
というようなものにしたのですが
どうすればよいですか?
ついでに完成したじゃんけんプログラムは下のような感じです。





Private Sub CommandButton1_Click()

Cells(1, 1) = Int(Rnd * 3)

If Cells(1, 1) = 0 Then
Label1.Caption = "私もグー。だから引き分けです。"
End If

If Cells(1, 1) = 1 Then
Label1.Caption = "私はチョキ。だからあなたの勝ちです。"
End If

If Cells(1, 1) = 2 Then
Label1.Caption = "私はパー。だからあなたの負けです。"
End If

End Sub

じゃんけんのプログラミングを作っているのですが、今できているじゃんけんの
プログラムの追加機能として得点式のゲームにしたいと思っています。
ルールとしては、10回じゃんけんをしてポイントを0から
勝ったら 得点+1
引き分けたら 得点 +0
負けたら 得点 -1
というふうにして
最終的に合計点数が0より大きければ勝ち0より小さければ負け
というようなものにしたのですが
どうすればよいですか?
ついでに完成したじゃんけんプログラムは下のような感じです。





Private S...続きを読む

Aベストアンサー

お疲れさまです

入力がないので、こちらが出すのはグーときめているのでしょうか?

一応、10回勝負を考えてみました。

Private Sub CommandButton1_Click()

Dim i As Integer
Dim ft As Integer

ft = 0



For i = 1 To 10

MsgBox i & "回目"
Cells(1, 1) = Int(Rnd * 3)

If Cells(1, 1) = 0 Then
Label1.Caption = "私もグー。だから引き分けです。"
ft = ft
End If

If Cells(1, 1) = 1 Then
Label1.Caption = "私はチョキ。だからあなたの勝ちです。"
ft = ft + 1
End If

If Cells(1, 1) = 2 Then
Label1.Caption = "私はパー。だからあなたの負けです。"
ft = ft - 1
End If

Next i

If ft > 0 Then
Label1.Caption = "10回勝負結果=あなたの勝ちです"
Else
Label1.Caption = "10回勝負結果=あなたの負けです"
End If

End Sub

お疲れさまです

入力がないので、こちらが出すのはグーときめているのでしょうか?

一応、10回勝負を考えてみました。

Private Sub CommandButton1_Click()

Dim i As Integer
Dim ft As Integer

ft = 0



For i = 1 To 10

MsgBox i & "回目"
Cells(1, 1) = Int(Rnd * 3)

If Cells(1, 1) = 0 Then
Label1.Caption = "私もグー。だから引き分けです。"
ft = ft
End If

If Cells(1, 1) = 1 Then
Label1.Caption = "私はチョキ。だからあなたの勝ちです。"
ft = ft + 1
End If

If ...続きを読む


人気Q&Aランキング