Excel VBA質問箱 IV

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

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


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

【30852】高校の情報Bの範囲 Roi 05/11/5(土) 23:45 質問[未読]
【30855】Re:高校の情報Bの範囲 角田 05/11/6(日) 0:48 発言[未読]
【30890】Re:高校の情報Bの範囲 Roi 05/11/6(日) 19:25 お礼[未読]
【30856】Re:高校の情報Bの範囲 ponpon 05/11/6(日) 1:01 発言[未読]
【30891】Re:高校の情報Bの範囲 Roi 05/11/6(日) 19:25 お礼[未読]
【30892】Re:高校の情報Bの範囲 Roi 05/11/6(日) 19:32 質問[未読]
【30893】Re:高校の情報Bの範囲 MO 05/11/6(日) 19:41 回答[未読]
【30894】Re:高校の情報Bの範囲 Roi 05/11/6(日) 19:51 発言[未読]
【30895】Re:高校の情報Bの範囲 MOON 05/11/6(日) 20:16 発言[未読]
【30896】Re:高校の情報Bの範囲 Roi 05/11/6(日) 20:34 発言[未読]
【30897】Re:高校の情報Bの範囲 Kein 05/11/6(日) 20:47 発言[未読]
【30898】Re:高校の情報Bの範囲 ponpon 05/11/6(日) 20:48 発言[未読]
【30899】Re:高校の情報Bの範囲 Roi 05/11/6(日) 20:56 発言[未読]
【30900】Re:高校の情報Bの範囲 ponpon 05/11/6(日) 21:04 発言[未読]
【30901】Re:高校の情報Bの範囲 Roi 05/11/6(日) 21:06 お礼[未読]
【30903】Re:高校の情報Bの範囲 ANS 05/11/6(日) 21:23 発言[未読]
【30902】Re:高校の情報Bの範囲 夜中まで考えたい 05/11/6(日) 21:07 発言[未読]
【30926】Re:高校の情報Bの範囲 でれすけ 05/11/7(月) 12:26 発言[未読]

【30852】高校の情報Bの範囲
質問  Roi  - 05/11/5(土) 23:45 -

引用なし
パスワード
   高校の情報Bの範囲の質問です。
1+2+3+...nが300を超えるnを求めるプログラムをVBAで作る宿題があるのですが、Do...LoopもしくはIf...Then...ElseもしくはSelect Caseを使ってやりたいのです。

Do While 条件式
処理
Loop


If 条件式A Then
条件式Aが正しければこのステートメントAを実行
ElseIf 条件式B
条件式Bに一致していれば、ステートメントBを実行
EndIf


Select Case 条件式
Case 答えA
   Aの処理
Case 答えB
   Bの処理
Case 答えC
   Cの処理
End Select


この程度しか履修していません。

多分とても初歩的な質問だと思いますが、どなたか教えてくださったらとても助かります。宜しくお願い致します。

【30855】Re:高校の情報Bの範囲
発言  角田 WEB  - 05/11/6(日) 0:48 -

引用なし
パスワード
   こんにちは。
>宿題があるのですが
>どなたか教えてくださったらとても助かります。
宿題は自分で調べて学ぶ為のものですから答えの丸教えは期待しないで下さい。
他の掲示板へいっても同じように言われるでしょう。

プログラムや[If Then Else]云々以前に先ず
>1+2+3+...nが300を超えるnを求める
という問題が普通に「数学」のテストで出された場合、
 「どういう手順で、どういう式を使って、どのように」
回答を導き出すかを考える事です。

これが判らなければ、どんなに[If Then Else]や[Do Loop]を勉強しても
プログラムは作れません。

逆に
>「数学」のテストで出された場合、
> 「どういう手順で、どういう式を使って、どのように」
>回答を導き出すか
を正しく回答用紙に書けるのであれば、プログラムとは
 回答用紙に書かれた手順を[If Then Else]や[Do Loop]に置き換える
という作業にすぎません。

質問は
(1)紙に書く「答えの求め方」自体が判らないのか?
 それならば、先ずはその「答えの求め方」そのものを考えてから出直してください。
 それが判っていなければ何も始まりません。

(2)「答えの求め方」は判るが、プログラムへの置き換え方が判らないのか?
 フローチャートも当然習っているはずですね。「答えの求め方」を
 フローチャートに書き直してみれば、自ずと、どこで[If Then Else]を使い
 どこを[Do Loop]で繰り返すのかが判るはずです。

【30856】Re:高校の情報Bの範囲
発言  ponpon  - 05/11/6(日) 1:01 -

引用なし
パスワード
   ▼Roi さん:

宿題は自分でやりましょう。

ヒントだけ

>1+2+3+...nが300を超えるnを求める

ANS = 1+2+3+...n とおくと
ANS = ANS + n
となりますよね?

後は、nを・・・・

ANSは、300より大きいから・・・・

【30890】Re:高校の情報Bの範囲
お礼  Roi  - 05/11/6(日) 19:25 -

引用なし
パスワード
   とても参考になりました。ありがとうございました。

【30891】Re:高校の情報Bの範囲
お礼  Roi  - 05/11/6(日) 19:25 -

引用なし
パスワード
   ヒントとても役立ちました。ありがとうございました。

【30892】Re:高校の情報Bの範囲
質問  Roi  - 05/11/6(日) 19:32 -

引用なし
パスワード
   すみません、やはりよくわかりません。

Sub 1()
Dim n As Integer
Dim ANS As Integer
n = n + 1
ANS = ANS + n
If ANS > 300 Then
MsgBox (ANS)
End If
End Sub

まったく動きませんでした。考え方が根本的に違っているのでしょうか?

【30893】Re:高校の情報Bの範囲
回答  MO  - 05/11/6(日) 19:41 -

引用なし
パスワード
   こんばんは
Do・・・Loopが
必要では有りませんか?

【30894】Re:高校の情報Bの範囲
発言  Roi  - 05/11/6(日) 19:51 -

引用なし
パスワード
   Do・・・LoopとIf・・・Then・・・Elseをからめるということでしょうか。


Dim n As Integer
Dim ANS As Integer
Do While (ANS > = 300)
n = n + 1
ANS = ANS + n
If ANS > 300 Then
MsgBox (ANS)
End If
Loop
End Sub

ますますわけがわからなくなってしまいました(泣)

【30895】Re:高校の情報Bの範囲
発言  MOON  - 05/11/6(日) 20:16 -

引用なし
パスワード
   ▼Roi さん:
こんにちは

>Dim n As Integer
>Dim ANS As Integer
>Do While (ANS > = 300)
>n = n + 1
>ANS = ANS + n
>If ANS > 300 Then
>MsgBox (ANS)
>End If
>Loop
>End Sub

上ので、もうほとんどできていますよ。
Do While ANS > = 300
だとANSが300以上の間ループすることになりますね。
また、このケースならIfステートメントは必要なく、
MsgBoxはループが終わってから出せばいいのでは?
あと、求めるのはANSではなく、nですよね。

【30896】Re:高校の情報Bの範囲
発言  Roi  - 05/11/6(日) 20:34 -

引用なし
パスワード
   Dim n As Integer
Dim Ans As Integer
Do While (Ans >= 300)
n = n + 1
Ans = Ans + n
Loop
MsgBox (n)
End Sub

自分なりに考えた結果、こうなりました。でもnは0となってしまいます。

【30897】Re:高校の情報Bの範囲
発言  Kein  - 05/11/6(日) 20:47 -

引用なし
パスワード
   ↓こっち。
http://excelfactory.net/excelboard/excelvba/excel.cgi?mode=all&namber=80970&rev=0

【30898】Re:高校の情報Bの範囲
発言  ponpon  - 05/11/6(日) 20:48 -

引用なし
パスワード
   ▼Roi さん:
>Dim n As Integer
>Dim Ans As Integer
>Do While (Ans >= 300)
>n = n + 1
>Ans = Ans + n
>Loop
>MsgBox (n)
>End Sub
>

Do 〜Loop で
>n = n + 1
>Ans = Ans + n

を計算させて

もし、Ansが300より大きくなったら
ループを抜けて、Msgbox nを出したらいいよ!!

【30899】Re:高校の情報Bの範囲
発言  Roi  - 05/11/6(日) 20:56 -

引用なし
パスワード
   もし、Ansが300より大きくなったら
ってことは、Ifを使うのですか?

【30900】Re:高校の情報Bの範囲
発言  ponpon  - 05/11/6(日) 21:04 -

引用なし
パスワード
   そうです。
Keinさんのレスのところに使い方が出てますよ。
 ↓こっち。
http://excelfactory.net/excelboard/excelvba/excel.cgi?mode=all&namber=80970&rev=0


【30901】Re:高校の情報Bの範囲
お礼  Roi  - 05/11/6(日) 21:06 -

引用なし
パスワード
   どうもありがとうございました。

【30902】Re:高校の情報Bの範囲
発言  夜中まで考えたい  - 05/11/6(日) 21:07 -

引用なし
パスワード
   ▼Roi さん:

宿題、間に合いますか?私なりの偏見で作ってみました。
>     'Dim n As Integer
>Dim Ans As Integer
Ans = 1  '・・・nは1からスタート
>Do until Ans = 300 '・・・答えが300まで
       'Do While (Ans >= 300)
>      ’n = n + 1

>Ans = Ans + 1 ’・・・1ずつ足して
>Loop
 Msgbox(Ans)
>    'MsgBox (n)
>End Sub

>
>自分なりに考えた結果、こうなりました。でもnは0となってしまいます。

私なりに考えた結果、こうなりました。あなたのコードを少しだけ変えました。
貼り付けて「>」を取ってください。「’」はコメント処理しています。
・・・貴重な貴方のコードを残すためです。
これで宿題にまにあいますか?

次はIfのコードの作成をされては?私も考えるから。今月63歳になるので、
また闘志が湧きそうです。

もし数字の変化が見たかったら「Range("A1") = Ans」を

Ans=1の次の行と
Ans=Ans+1の次の行に入れると動きが分かるのでは?
F8を叩いて調べてみてください。

識者が沢山おられるので遠慮せず聞きつづけられては如何でしょう。

【30903】Re:高校の情報Bの範囲
発言  ANS  - 05/11/6(日) 21:23 -

引用なし
パスワード
   Dim n As Integer
Dim Ans As Integer

Do
n = n + 1
Ans = Ans + n
  もし(If) Ans が 300より大 なら(Then)
    MsgBox n
    Loopを抜ける(Exit Do)
Loop


'---
Do Loop
If Then
を調べてね。

【30926】Re:高校の情報Bの範囲
発言  でれすけ  - 05/11/7(月) 12:26 -

引用なし
パスワード
   こんにちは。

>自分なりに考えた結果、こうなりました。でもnは0となってしまいます。

▼Roi さん:
>Do While (Ans >= 300)
ここの条件が逆なだけです。非常におしいですね。

Do Until (Ans >= 300)
か、
Do While (Ans < 300)
にすればOKです。

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