Excel VBA質問箱 IV

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

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


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

【31429】プログラムを完成するには? yuu 05/11/20(日) 19:41 質問[未読]
【31430】Re:プログラムを完成するには? yuu 05/11/20(日) 19:42 質問[未読]
【31431】Re:プログラムを完成するには? かみちゃん 05/11/20(日) 19:52 発言[未読]
【31432】Re:プログラムを完成するには? yuu 05/11/20(日) 19:57 質問[未読]
【31433】Re:プログラムを完成するには? yuu 05/11/20(日) 19:59 発言[未読]

【31429】プログラムを完成するには?
質問  yuu  - 05/11/20(日) 19:41 -

引用なし
パスワード
   釈をすこしやってみたのですが、あってもすか?
それとこのプログラムでは、すべてyesだけエラーがでるんです。
たぶん間違っているのは、↓
     Message = mes1(4) & vbCrLf & mes2(4) & vbCrLf & mes3(4)
のところだと思うんですが、どうでしょうか?
デバックを押すと黄色くなるところです。
どなたか、お願いします。
  Dim Message As String
  Dim Yes As Integer
  Dim Mondai As String
  Dim n As Integer
  Dim Ans As Integer
  Dim mes1(3) As String
  Dim mes2(3) As String
  Dim mes3(3) As String
  Dim mes4(3) As String
  

  For n = 1 To 3
   mes1(n) = Sheet3.Cells(n, 2).Value
   mes2(n) = Sheet3.Cells(n, 3).Value
   mes3(n) = Sheet3.Cells(n, 4).Value
   Next n
   Yes = 0
   
   For n = 1 To 9 Step 1 '7回問題を出題
   Mondai = Sheet2.Cells(n, 1).Value
   Ans = MsgBox(Mondai, vbYesNo, "問題")
   
   If Ans = vbYes Then 'yesの数だけ表示
   Yes = Yes + 1
   End If
   Next n
  Select Case Yes 'yesの数だけ変化させる
   Case 0, 1
     Message = mes1(1) & vbCrLf & mes2(1) & vbCrLf & mes3(1)
   Case 2 To 4
     Message = mes1(2) & vbCrLf & mes2(2) & vbCrLf & mes3(2)
   Case 5 To 7
     Message = mes1(3) & vbCrLf & mes2(3) & vbCrLf & mes3(3)
   Case 8, 9
     Message = mes1(4) & vbCrLf & mes2(4) & vbCrLf & mes3(4)
  End Select
  
  Message = "yesは" & Yes & vbCrLf & Message '三行で構成する

  MsgBox Message, vbInformation 'メッセージにiのマークをだす
  
End Sub

【31430】Re:プログラムを完成するには?
質問  yuu  - 05/11/20(日) 19:42 -

引用なし
パスワード
   問題の内容はこちらです・↓
メッセージボックスに表示された質問に[はい][いいえ]で答えていきます。
用意された質問にすべて答えると、[はい]の数により、メッセージボックスに診断結果が出力されます。
質問と答えに下の赤色の部分を追加してください。 
Q1 宝くじや賭け事が好きなほうだ
Q2 天気が良い日は、普段よりテンションが高め
Q3 似合わない服を、衝動買いしたことがある
Q4 熱中していると名前を呼ばれても気づかない
Q5 海外へひとり旅の経験あり。または、ぜひ行きたい
Q6 悩みやストレスで、体重が減る
Q7 食事は、好きな物から先に食べる
Q8 友人や恋人と、怒鳴り合いのケンカをしたことがある
Q9 いつか見返してやりたい相手がいる

YESの数
0-1
”恋は北極”タイプ。
恋愛に関して、いつもクールで冷静。つい好みにあった、自分とつりあう相手を選び勝ち。交際中も他人の目を気にしてしまうから、キケンな恋なんてもってのほか。


2-4
”恋は夢見る風船”タイプ。
ドラマチックな恋愛に憧れ、妄想するが、実際は確実な道を選ぶ。ただ突然の強引な告白などに弱く、思わず大胆になることもある。 

5-7
”恋はハバネロ"タイプ。
刺激的なことが大好きでフィーリングが大事。恋の始まりは一目ぼれが多く、相手の条件は気にしない。
突然ひらめき婚なんてことも。 

8-9
”恋はパパラッチ”タイプ。
自分が大好きな上、タブーを犯したい願望が強い。相手の事情や気持ちを考えず、突っ走ってスキャンダルを起こしがち。
友人の恋人を奪うなんてことも。 

(※ナイナイサイズのHP 
http://www.ntv.co.jp/99size/sizing/20051001_s.html

 より)


Option Explicit
Sub 出題()
'
' 恋の冒険度
'
 Dim Mondai As String   '問題文
 Dim Ans As Integer    'vbYes or vbNo
 Dim n As Integer     'カウント用
 Dim Yes As Integer    '「はい」の数
 Dim Message As String   '最終メッセージ
 Dim Mes1(3) As String   'メッセージ1
 Dim Mes2(3) As String   'メッセージ2
 Dim Mes3(3) As String   'メッセージ3
  
 For n = 1 To 3
  Mes1(n) = Sheet3.Cells(n, 2).Value
  Mes2(n) = Sheet3.Cells(n, 3).Value
  Mes3(n) = Sheet3.Cells(n, 4).Value
 Next n
  
 Yes = 0
 For n = 1 To 79
  Mondai = Sheet2.Cells(n, 1).Value
  Ans = MsgBox(Mondai, vbYesNo, "問題")
   
  If Ans = vbYes Then
   Yes = Yes + 1
  End If
 Next n

 Message = ""
 Select Case Yes
  Case 0, 1
   Message = Mes1(1) & vbCrLf & Mes2(1) & vbCrLf & Mes3(1)
  Case 2 To 4
   Message = Mes1(2) & vbCrLf & Mes2(2) & vbCrLf & Mes3(2)
  Case 5 To 7
   Message = Mes1(3) & vbCrLf & Mes2(3) & vbCrLf & Mes3(3)
 End Select
 Message = "YESは" & Yes & vbCrLf & Message
 
 MsgBox Message, vbInformation

End Sub


MsgBox(prompt[, buttons] [, title])
引 数 内               容
prompt ダイアログ ボックス内にメッセージとして表示する文字列式を指定します。
文字列を複数行指定する場合は、「vbCrLf」を改行する位置に挿入します。
buttons 表示するボタンの種類と個数、使用するアイコンのスタイル、標準ボタン、メッセージ ボックスがモーダルかどうかを表す値の合計値を示す数式を指定します。
title ダイアログ ボックスのタイトル バーに表示する文字列を指定します。

引数 buttons の指定方法
 名前付き引数 buttons には、次の各グループから値を 1 つずつ選択して加算したうち、該当する値の合計値を指定します。 
 [ 例:vbYesNo ボタン(4)と vbQuestion ボタン(32) vbDefaultButton1 (0)の組み合わせ]
  ボタンの値を合計すると、「 4 + 32 + 0 = 36 」になりますが、後日、見た場合にわかりやすくするには、下記のように各グループの定数を + (プラス)でつないで指定したほうがわかり易いでしょう。
   Style = vbYesNo + vbQuestion + vbDefaultButton1
定     数 値 内               容
ボタンの種類と個数
vbOKOnly 0 [OK] ボタンのみを表示します。 
vbOKCancel 1 [OK] ボタンと [キャンセル] ボタンを表示します。
vbAbortRetryIgnore 2 [中止]、[再試行]、及び [無視] ボタンを表示します。
vbYesNoCancel 3 [はい]、[いいえ]、及び [キャンセル] ボタンを表示します。 
vbYesNo 4 [はい] ボタンと [いいえ] ボタンを表示します。 
vbRetryCancel 5 [再試行] ボタンと [キャンセル] ボタンを表示します。
アイコンの種類
vbCritical 16 警告メッセージ アイコンを表示します。
vbQuestion 32 問い合わせメッセージ アイコンを表示します。
vbExclamation 48 注意メッセージ アイコンを表示します。 
vbInformation 64 情報メッセージ アイコンを表示します。 
標準ボタン
vbDefaultButton1 0 第 1 ボタンを標準ボタンにします。
vbDefaultButton2 256 第 2 ボタンを標準ボタンにします。
vbDefaultButton3 512 第 3 ボタンを標準ボタンにします。
vbDefaultButton4 768 第 4 ボタンを標準ボタンにします。

MsgBox 関数の戻り値
 MsgBox 関数の戻り値は、下表に示すように、ボタンの選択結果です。選択結果を取得するには、一般的には変数を使用します。
定 数 値 説 明 定 数 値 説 明
vbOK 1 [OK] vbIgnore 5 [無視] 
vbCancel 2 [キャンセル] vbYes 6 [はい] 
vbAbort 3 [中止] vbNo 7 [いいえ] 
vbRetry 4 [再試行]      


1 メッセージを表示するだけのMsgBox
 
処理内容:印刷実行メッセージを表示します
Sub msgbox_1()
 MsgBox "印刷を実行。プリンタをセットしてください。"
End Sub

処理内容:メッセージを改行(vbCrLf)します
Sub msgbox_2()
 MsgBox "印刷を実行。" & vbCrLf & "プリンタをセットせよ"
End Sub

処理内容:計算結果を表示します
Sub msgbox_3()
 MsgBox "10 MOD 3 = " & 10 Mod 3
End Sub

処理内容:アクティブセルのアドレスを表示します
Sub msgbox_4()
 MsgBox ActiveCell.Address
End Sub

処理内容:変数の値を表示します
Sub msgbox_5()
 A = 10
 MsgBox "変数の値 = " & A
End Sub

処理内容:メッセージと情報アイコンを表示します
Sub msgbox_6()
 MsgBox "情報アイコンを表示します", vbInformation
End Sub
 

2 MsgBox のボタン選択結果による処理
 
処理内容:印刷実行確認メッセージを表示します
Sub msgbox_7()
 Msg = "印刷を実行しますか"
 Style =vbYesNo + vbExclamation + vbDefaultButton1
 Title = "印刷実行確認"
 msgRec=MsgBox(Msg,Style,Title)
 If msgRec = vbNo Then Exit Sub
 MsgBox "印刷を実行します"
End Sub

処理内容:MsgBoxの戻り値でファイル登録を確認します
Sub msgbox_8()
 Msg = "入力結果を登録しますか"
 Style = vbYesNoCancel + vbQuestion + vbDefaultButton1
 Title = "登録確認"
 MsgRec = MsgBox(Msg, Style, Title)
 If msgRec = vbNo Then 
  MsgBox "ファイルを登録せず終了します"
  Exit Sub
 Else
  MsgBox "ファイルを登録します"
 End If
End Sub
 
処理内容:MsgBoxの戻り値の結果により処理分岐します
Sub msgbox_9()
 Msg = "処理を実行しますか"
 Style = vbYesNoCancel + vbQuestion + vbDefaultButton1
 Title = "処理確認"
 MsgRec = MsgBox(Msg, Style, Title)
 Select Case MsgRec
  Case vbYes: MsgBox "「はい」の処理"
  Case vbNo: MsgBox "「いいえ」の処理"
  Case vbCancel: MsgBox "「キャンセル」の処理"
 End Select
End Sub

【31431】Re:プログラムを完成するには?
発言  かみちゃん  - 05/11/20(日) 19:52 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>釈をすこしやってみたのですが、あってもすか?

釈って何ですか?あってもすか?

以下とご質問内容が同じなようですが、yuuさんと以下の質問元の方は同じ方ですか?
同じ方でしたら、マルチポストになりますので、嫌われますよ。
http://park7.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200511/05110251.txt

【31432】Re:プログラムを完成するには?
質問  yuu  - 05/11/20(日) 19:57 -

引用なし
パスワード
   注釈です
問題を修復しました
メッセージボックスに表示された質問に[はい][いいえ]で答えていきます。
用意された質問にすべて答えると、[はい]の数により、メッセージボックスに診断結果が出力されます。
質問と答えに下の赤色の部分を追加してください。
恋の冒険度」
Q1 宝くじや賭け事が好きなほうだ
Q2 天気が良い日は、普段よりテンションが高め
Q3 似合わない服を、衝動買いしたことがある
Q4 熱中していると名前を呼ばれても気づかない
Q5 海外へひとり旅の経験あり。または、ぜひ行きたい
Q6 悩みやストレスで、体重が減る
Q7 食事は、好きな物から先に食べる
Q8 友人や恋人と、怒鳴り合いのケンカをしたことがある←赤い部分
Q9 いつか見返してやりたい相手がいる←赤い部分


YESの数
0-1
”恋は北極”タイプ。
恋愛に関して、いつもクールで冷静。つい好みにあった、自分とつりあう相手を選び勝ち。交際中も他人の目を気にしてしまうから、キケンな恋なんてもってのほか。
2-4
”恋は夢見る風船”タイプ。
ドラマチックな恋愛に憧れ、妄想するが、実際は確実な道を選ぶ。ただ突然の強引な告白などに弱く、思わず大胆になることもある。 

5-7
”恋はハバネロ"タイプ。
刺激的なことが大好きでフィーリングが大事。恋の始まりは一目ぼれが多く、相手の条件は気にしない。
突然ひらめき婚なんてことも。 

8-9←赤い部分↓
”恋はパパラッチ”タイプ。
自分が大好きな上、タブーを犯したい願望が強い。相手の事情や気持ちを考えず、突っ走ってスキャンダルを起こしがち。
友人の恋人を奪うなんてことも。 

Option Explicit
Sub 出題()
'
' 恋の冒険度
'
 Dim Mondai As String   '問題文
 Dim Ans As Integer    'vbYes or vbNo
 Dim n As Integer     'カウント用
 Dim Yes As Integer    '「はい」の数
 Dim Message As String   '最終メッセージ
 Dim Mes1(3) As String   'メッセージ1
 Dim Mes2(3) As String   'メッセージ2
 Dim Mes3(3) As String   'メッセージ3
  
 For n = 1 To 3
  Mes1(n) = Sheet3.Cells(n, 2).Value
  Mes2(n) = Sheet3.Cells(n, 3).Value
  Mes3(n) = Sheet3.Cells(n, 4).Value
 Next n
  
 Yes = 0
 For n = 1 To 79
  Mondai = Sheet2.Cells(n, 1).Value
  Ans = MsgBox(Mondai, vbYesNo, "問題")
   
  If Ans = vbYes Then
   Yes = Yes + 1
  End If
 Next n
Message = ""
 Select Case Yes
  Case 0, 1
   Message = Mes1(1) & vbCrLf & Mes2(1) & vbCrLf & Mes3(1)
  Case 2 To 4
   Message = Mes1(2) & vbCrLf & Mes2(2) & vbCrLf & Mes3(2)
  Case 5 To 7
   Message = Mes1(3) & vbCrLf & Mes2(3) & vbCrLf & Mes3(3)
 End Select
 Message = "YESは" & Yes & vbCrLf & Message
 
 MsgBox Message, vbInformation

End Sub


MsgBox(prompt[, buttons] [, title])
引 数 内 容
prompt ダイアログ ボックス内にメッセージとして表示する文字列式を指定します。
文字列を複数行指定する場合は、「vbCrLf」を改行する位置に挿入します。
buttons 表示するボタンの種類と個数、使用するアイコンのスタイル、標準ボタン、メッセージ ボックスがモーダルかどうかを表す値の合計値を示す数式を指定します。
title ダイアログ ボックスのタイトル バーに表示する文字列を指定します。

引数 buttons の指定方法
 名前付き引数 buttons には、次の各グループから値を 1 つずつ選択して加算したうち、該当する値の合計値を指定します。 
 [ 例:vbYesNo ボタン(4)と vbQuestion ボタン(32) vbDefaultButton1 (0)の組み合わせ]
  ボタンの値を合計すると、「 4 + 32 + 0 = 36 」になりますが、後日、見た場合にわかりやすくするには、下記のように各グループの定数を + (プラス)でつないで指定したほうがわかり易いでしょう。
   Style = vbYesNo + vbQuestion + vbDefaultButton1
定 数         値     内 容
ボタンの種類と個数
vbOKOnly        0    [OK] ボタンのみを表示します。 
vbOKCancel       1    [OK] ボタンと [キャンセル] ボタンを表示します。
vbAbortRetryIgnore   2    [中止]、[再試行]、及び [無視] ボタンを表示しま                 す。
vbYesNoCancel      3    [はい]、[いいえ]、及び [キャンセル] ボタンを表                 示します。 
vbYesNo         4    [はい] ボタンと [いいえ] ボタンを表示します。 
vbRetryCancel      5    [再試行] ボタンと [キャンセル] ボタンを表示し                  ます。
アイコンの種類
vbCritical       16    警告メッセージ アイコンを表示します。
vbQuestion       32    問い合わせメッセージ アイコンを表示します。
vbExclamation      48    注意メッセージ アイコンを表示します。 
vbInformation      64    情報メッセージ アイコンを表示します。 
標準ボタン
vbDefaultButton1     0     第 1 ボタンを標準ボタンにします。
vbDefaultButton2     256    第 2 ボタンを標準ボタンにします。
vbDefaultButton3      512    第 3 ボタンを標準ボタンにします。
vbDefaultButton4     768    第 4 ボタンを標準ボタンにします。

MsgBox 関数の戻り値
 MsgBox 関数の戻り値は、下表に示すように、ボタンの選択結果です。選択結果を取得するには、一般的には変数を使用します。
定 数    値     説 明    定 数    値 説 明
vbOK     1      [OK]     vbIgnore    5    [無視] 
vbCancel   2     [キャンセル]   vbYes     6    [はい] 
vbAbort    3    [中止]     vbNo      7    [いいえ] 
vbRetry     4     [再試行] 
     

1 メッセージを表示するだけのMsgBox
 
処理内容:印刷実行メッセージを表示します
Sub msgbox_1()
 MsgBox "印刷を実行。プリンタをセットしてください。"
End Sub

処理内容:メッセージを改行(vbCrLf)します
Sub msgbox_2()
 MsgBox "印刷を実行。" & vbCrLf & "プリンタをセットせよ"
End Sub

処理内容:計算結果を表示します
Sub msgbox_3()
 MsgBox "10 MOD 3 = " & 10 Mod 3
End Sub
処理内容:アクティブセルのアドレスを表示します
Sub msgbox_4()
 MsgBox ActiveCell.Address
End Sub

処理内容:変数の値を表示します
Sub msgbox_5()
 A = 10
 MsgBox "変数の値 = " & A
End Sub

処理内容:メッセージと情報アイコンを表示します
Sub msgbox_6()
 MsgBox "情報アイコンを表示します", vbInformation
End Sub
 

2 MsgBox のボタン選択結果による処理
 
処理内容:印刷実行確認メッセージを表示します
Sub msgbox_7()
 Msg = "印刷を実行しますか"
 Style =vbYesNo + vbExclamation + vbDefaultButton1
 Title = "印刷実行確認"
 msgRec=MsgBox(Msg,Style,Title)
 If msgRec = vbNo Then Exit Sub
 MsgBox "印刷を実行します"
End Sub

処理内容:MsgBoxの戻り値でファイル登録を確認します
Sub msgbox_8()
 Msg = "入力結果を登録しますか"
 Style = vbYesNoCancel + vbQuestion + vbDefaultButton1
 Title = "登録確認"
 MsgRec = MsgBox(Msg, Style, Title)
 If msgRec = vbNo Then 
  MsgBox "ファイルを登録せず終了します"
  Exit Sub
 Else
  MsgBox "ファイルを登録します"
 End If
End Sub

処理内容:MsgBoxの戻り値の結果により処理分岐します
Sub msgbox_9()
 Msg = "処理を実行しますか"
 Style = vbYesNoCancel + vbQuestion + vbDefaultButton1
 Title = "処理確認"
 MsgRec = MsgBox(Msg, Style, Title)
 Select Case MsgRec
  Case vbYes: MsgBox "「はい」の処理"
  Case vbNo: MsgBox "「いいえ」の処理"
  Case vbCancel: MsgBox "「キャンセル」の処理"
 End Select
End Sub

【31433】Re:プログラムを完成するには?
発言  yuu  - 05/11/20(日) 19:59 -

引用なし
パスワード
   ごめんなさい
こちらの掲示板はなしでお願いします

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