• ベストアンサー

VBの問題です

VBの条件判断の応用問題 大学の情報の問題でヒントをもらいやってみたのですがうまくできません。自分でやったものをのせたのでどこがどのように間違えているか指摘してもらえるとありがたいです。 東京都水道局では23区内の水道料金(月額)を水道管の口径(以下で呼び径と記述)と月の水道使用料により、次の表に基づいて計算する。水道管の呼び径の番号と水道使用量を性数値で入力すると、次表と計算式に従い、次のページの仕様を満たす水道料金計算のプログラムを作れ。 申し訳ないのですが 表をのせられなかったのでこちらから参照してください ​http://www.waterworks.metro.tokyo.jp/life/r_keisan.htm​ 水道料金一か月の表の一般用の部分です 計算式 (基本料金+従量料金)*1.05(1円未満の端数は切り捨て) 【プログラムの仕様】 1.呼び径は(1)13mm、(2)20mm、・・・(12)300mm以上の中から該当する番号を、水道使用量は㎥単位で整数値を、どちらもInputbox関数で取得する。呼び径番号取得ではInputboxに番号と呼び径の対応関係を表示せよ。この際、表示文字列を複数部分に分割して、行末を文字列連結演算子と継続指定「 & _ 」することにより複数行で記述する。 2.入力された水道管の呼び径を番号をもちいてSelectCase構文で基本料金を決定する。 3.従量料金のけいさんでは、まずどの呼び径の料金区分で計算するかをSelectCase構文またはIf文で決定して、各区分の料金表の単価を使用量の各増分に適用して、増分毎の料金を求めて積算する。例にも示した(2)の呼び径の場合は、使用量を複数の増分に分けて、1~5;、6~10、11~20、21~30、・・・、1001以上の各増分に異なる単価を適用する。 4.基本料金と従量料金の合計金額に消費税を加えたものが水道料金となる。この計算を行うと小数点以下の金額を切り捨てるため、Int関数の引数に計算式を書き入れ、その関数値を整数型変数に代入すればよい。   数字に単位が付いてませんがm^3です Sub ex51() '問題5 Dim x As Integer, y As Integer, z As Integer x = InputBox("呼び径を丸番号の数字で選択してください。  " & _ "(1) 13mm (2) 20mm (3) 25mm      " & _ "(4) 30mm (5) 40mm (6) 50mm      " & _ "(7) 75mm (8) 100mm (9) 150mm     " & _ "(10) 200mm (11) 250mm (12) 300mm以上    ") y = InputBox("今月の水道使用量を立法メートル単位で入力してください。") Select Case x Case ((1)) '13mm 基本料金 = 860 Case ((2)) '20mm 基本料金 = 1170 Case ((3)) '25mm 基本料金 = 1460 Case ((4)) '30mm 基本料金 = 3435 Case ((5)) '40mm 基本料金 = 6865 Case ((6)) '50mm 基本料金 = 20720 Case ((7)) '75mm 基本料金 = 45623 Case ((8)) '100mm 基本料金 = 94568 Case ((9)) '150mm 基本料金 = 159094 Case ((10)) '200mm 基本料金 = 349434 Case ((11)) '250mm 基本料金 = 480135 Case ((12)) '300mm以上 基本料金 = 816145 End Select Select Case ((1)、(2)、(3)) If y = 1 < 5 Then z = 0 * y If y = 6 < 10 Then z = 22 * y If y = 11 < 20 Then z = 128 * y If y = 21 < 30 Then z = 163 * y If y = 31 < 50 Then z = 202 * y If y = 51 < 100 Then z = 213 * y If y = 101 < 200 Then z = 298 * y If y = 201 < 1000 Then z = 372 * y Else z = 404 * 1000 End If Select Case ((4)、(5)) If y = 1 < 100 Then z = 213 * y If y = 101 < 200 Then z = 298 * y If y = 201 < 1000 Then z = 372 * y Else z = 404 * y Select Case ((6)、(7)) If y = 1 < 1000 Then z = 372 * y Else z = 404 * y Select Case ((8)、(9)、(10)、(11)、(12)) z = 404 * y MsgBox ”水道料金=”int((x+z)*1.05) End Sub

  • 40one
  • お礼率45% (16/35)

質問者が選んだベストアンサー

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

前回の質問のurlも書いた方が良かったのでは? http://oshiete1.goo.ne.jp/qa3538377.html inputbox で「呼び径を丸番号の数字で選択してください。」と書いてありながら、case 文では "((1))" なんて無意味な構文になってます。 文字なら、case "(1)" とすべきで、数値なら case 1 です。 >Select Case ((1)、(2)、(3)) の部分は、使い方が間違っているのでVBEで構文チェックしていれば赤色でエラー表示になっているかと思います。 If x=1 or x=2 or x=3 then ・・・で判断する方が良いでしょう。 料金計算もHPとは計算方法が全く違っていますね。 使用量が25立方なら、 基本料金(5立方まで) + 5立方*(6~10立方の料金) +10立方*(10~20立方の料金) + 5立方*(21~30立方の料金) という計算式になりますが、IF文を組み合わせて使えば計算が出来ます。 If y > 5 Then If y < 11 Then z = (y - 5) * 22 Else z = 5 * 22 If y < 21 Then z = z + ((y - 10) * 128) Else z = z + (10 * 128) If y < 31 Then ': End If End If End If End If

40one
質問者

補足

Sub ex51() '問題5 Dim x As Integer, y As Integer, z As Integer, 基本料金 As String x = InputBox("呼び径を丸番号の数字で選択してください。  " & _ "(1) 13mm (2) 20mm (3) 25mm      " & _ "(4) 30mm (5) 40mm (6) 50mm      " & _ "(7) 75mm (8) 100mm (9) 150mm     " & _ "(10) 200mm (11) 250mm (12) 300mm以上    ") y = InputBox("今月の水道使用量を立法メートル単位で入力してください。") Select Case x Case "(1)" '13mm 基本料金 = 860 Case "(2)" '20mm 基本料金 = 1170 Case "(3)" '25mm 基本料金 = 1460 Case "(4)" '30mm 基本料金 = 3435 Case "(5)" '40mm 基本料金 = 6865 Case "(6)" '50mm 基本料金 = 20720 Case "(7)" '75mm 基本料金 = 45623 Case "(8)" '100mm 基本料金 = 94568 Case "(9)" '150mm 基本料金 = 159094 Case "(10)" '200mm 基本料金 = 349434 Case "(11)" '250mm 基本料金 = 480135 Case "(12)" '300mm以上 基本料金 = 816145 End Select If x = "(1)" Or x = "(2)" Or x = "(3)" Then If y > 5 Then If y < 11 Then z = (y - 5) * 22 Else z = 5 * 22 If y < 21 Then z = z + ((y - 10) * 128) Else z = z + (10 * 128) If y < 31 Then z = z + ((y - 20) * 163) Else z = z + (20 * 163) If y < 51 Then z = z + ((y - 30) * 202) Else z = z + (30 * 202) If y < 101 Then z = z + ((y - 50) * 213) Else z = z + (50 * 213) If y < 201 Then z = z + ((y - 100) * 298) Else z = z + (100 * 298) If y < 1001 Then z = z + ((y - 200) * 372) Else z = z + (200 * 372) If y > 1001 Then z = z + ((y - 1000) * 404) Else z = z + (1000 * 404) End If End If End If End If End If End If End If End If End If End If If x = "(4)" Or x = "(5)" Then If y > 1 Then If y < 101 Then z = (y - 5) * 213 Else z = 5 * 213 If y < 201 Then z = z + ((y - 100) * 298) Else z = z + (100 * 298) If y < 1001 Then z = z + ((y - 200) * 372) Else z = z + (200 * 372) If y > 1001 Then z = z + ((y - 1000) * 404) Else z = z + (1000 * 404) End If End If End If End If End If End If If x = "(6)" Or x = "(7)" Then If y > 1 Then If y < 1001 Then z = (y - 5) * 372 Else z = 5 * 372 If y < 1001 Then z = z + (y - 1000) * 404 Else z = z + (1000 * 404) End If End If End If End If If x = "(8)" Or x = "(9)" Or x = "(10)" Or x = "(11)" Or x = "(12)" Then If y < 1 Then z = 5 * 404 Else z = 5 * 404 End If End If msgbox "水道料金=" int((基本料金+z)*1.05) End Sub こんな風にしたんですが最後のほうの計算があやしいんですが どんな感じで間違ってますかね? あと最初のXのINPUTBOXと最後の計算式がうまくできないんですが うまくできる方法ありますか? 回答よろしくおねがいします。 ちなみに最初の"(1)"のカッコは丸1がうまく表示できなくてこうなりました。

その他の回答 (6)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.7

>変えてみたのですがinputboxまでしか実行できません。 プログラミングの基本で何を学んだのでしょうか? 自己解決できないレベルの問題でも無いと思いますが? プログラムからすると、変数 x は文字型(String)にするのが適切かと思いますけど・・・。

40one
質問者

お礼

しっかりと学べていないです。 違うところをstring型で宣言していました。 実行はすべてできるようになりましたが 計算がうまくできていないので修正します。 最初から最後まで回答してくださり感謝しています。

  • nnnnnon
  • ベストアンサー率0% (0/1)
回答No.6

> やってみたらできたのですが型が合わないとしてエラーとなりました。 オーバーフローじゃないですか?

40one
質問者

補足

どうなんでしょうか。 よくわかんないです

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.5

>基本料金の宣言が間違っているのでしょうか? 宣言が Integer ですから、扱える値の範囲に制限があります。 32,767を超える可能性がある場合は、別な型にしておく方が良いでしょう。 ヘルプより~ 整数型 (Integer) の変数は、16 ビット (2 バイト) の変数で、-32,768 ~ 32,767 の範囲の値をとります。 長整数型 (Long) の変数は、32 ビット (4 バイト) の変数です。-2,147,483,648 ~ 2,147,483,647 の範囲

40one
質問者

補足

変えてみたのですがinputboxまでしか実行できません。 デバックしてみたら Case "(1)" '13mm の部分が黄色くなりました。 どこかちがうんですかね?

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.4

>でも最後がどう直せばいいのかヘルプを参照してもできないんです。 MsgBox "文字の連結" & "が必用です。" で、解りますか?

40one
質問者

補足

回答ありがとうございます。 わかります。やってみたらできたのですが型が合わないとしてエラーとなりました。 基本料金の宣言が間違っているのでしょうか? Sub ex51() '問題5 Dim x As Integer, y As Integer, z As Integer, 基本料金 As Integer x = InputBox("呼び径を丸番号の数字で選択してください。  " & _ "(1) 13mm (2) 20mm (3) 25mm      " & _ "(4) 30mm (5) 40mm (6) 50mm      " & _ "(7) 75mm (8) 100mm (9) 150mm     " & _ "(10) 200mm (11) 250mm (12) 300mm以上    ") y = InputBox("今月の水道使用量を立法メートル単位で入力してください。") Select Case x Case "(1)" '13mm 基本料金 = 860 Case "(2)" '20mm 基本料金 = 1170 Case "(3)" '25mm 基本料金 = 1460 Case "(4)" '30mm 基本料金 = 3435 Case "(5)" '40mm 基本料金 = 6865 Case "(6)" '50mm 基本料金 = 20720 Case "(7)" '75mm 基本料金 = 45623 Case "(8)" '100mm 基本料金 = 94568 Case "(9)" '150mm 基本料金 = 159094 Case "(10)" '200mm 基本料金 = 349434 Case "(11)" '250mm 基本料金 = 480135 Case "(12)" '300mm以上 基本料金 = 816145 End Select If x = "(1)" Or x = "(2)" Or x = "(3)" Then If y > 5 Then If y < 11 Then z = (y - 5) * 22 Else z = 5 * 22 If y < 21 Then z = z + ((y - 10) * 128) Else z = z + (10 * 128) If y < 31 Then z = z + ((y - 20) * 163) Else z = z + (10 * 163) If y < 51 Then z = z + ((y - 30) * 202) Else z = z + (20 * 202) If y < 101 Then z = z + ((y - 50) * 213) Else z = z + (50 * 213) If y < 201 Then z = z + ((y - 100) * 298) Else z = z + (100 * 298) If y < 1001 Then z = z + ((y - 200) * 372) Else z = z + (800 * 372) If y > 1001 Then z = z + ((y - 1000) * 404) Else z = z + (y * 404) End If End If End If End If End If End If End If End If End If End If If x = "(4)" Or x = "(5)" Then If y > 1 Then If y < 101 Then z = (y - 5) * 213 Else z = 100 * 213 If y < 201 Then z = z + ((y - 100) * 298) Else z = z + (100 * 298) If y < 1001 Then z = z + ((y - 200) * 372) Else z = z + (800 * 372) If y > 1001 Then z = z + ((y - 1000) * 404) Else z = z + (y * 404) End If End If End If End If End If End If If x = "(6)" Or x = "(7)" Then If y > 1 Then If y < 1001 Then z = (y - 5) * 372 Else z = 1000 * 372 If y < 1001 Then z = z + (y - 1000) * 404 Else z = z + (y * 404) End If End If End If End If If x = "(8)" Or x = "(9)" Or x = "(10)" Or x = "(11)" Or x = "(12)" Then z = y * 404 End If MsgBox "水道料金=" & Int((基本料金 + z) * 1.05) End Sub

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

>ちなみに最初の"(1)"のカッコは丸1がうまく表示できなくてこうなりました。 単純な入力の場合には、わざわざ全角入力を強要しない方が良いでしょう。 使う立場からすると任意の数値を入れるだけの方が操作も早いですからね。 >どんな感じで間違ってますかね? 誤りの一例です。 「z = z + (20 * 163)」 となっていますが、20 * 163 の部分で何の計算をしているのか理解できれば、正しく修正できます。 ・・・単価が163円で計算できるのは何立方でしょうか? >msgbox "水道料金=" int((基本料金+z)*1.05) もVBEではエラー表示になっていますね。 この程度なら簡単に直せるでしょう。 あと、 If x = "(1)" Or ・・・ Then EndIf If x = "(4)" Or ・・・ Then EndIf : : と複数のIF文に分けていますが、 If x = "(1)" Or ・・・ Then '処理 ElseIf x = "(4)" Or ・・・ Then '処理 ElseIf x = ・・・ Then '処理 : Else '処理 EndIf のようにした方が良いと思います。

40one
質問者

補足

回答ありがとうございます。 従量料金の方は理解できたとおもいます。 でも最後がどう直せばいいのかヘルプを参照しても できないんです。 全文が間違っているのですかね? msgbox"水道料金=" Int((基本料金+z)*1.05)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

このコードで実行してみましたか? ほとんどエラーで実行できないと思いますよ if文は if 条件 then   実行文 end if が基本です 相反する条件なら if 条件 then   実行文1 else   実行文2 end if といった構文です 単一文のみに関わるIf文なら if 条件 then 実行文 となります 『if y=1 < 100 then』 がどのような評価を期待したものでしょう yが1以上100未満の場合に真になることを期待したのであればこの書き方では期待通りの実行は望めません y>=1 and y < 100 といった条件になります また選択の select caseには 必ず何処までが選択処理なのかを示す end selectが必要です select caseや caseの引数に ()は今回のケースでは必要ありません select caseの引数には一般的に変数を割り当てます caseの引数には定数を設定するのが一般的です 問題文全てを載せるより もっと的を絞った質問をしましょう VB6付属のヘルプ MSDNなどを活用してエラーになる原因を特定しデバッグしましょうね

40one
質問者

お礼

回答ありがとうございます。 少しずつ理解できてきています。 完成までよろしくおねがいします。

関連するQ&A

  • VBの条件判断の応用問題

    大学の情報の問題で難しくてできなくて困っています。 できる方がいれば回答をお願いします。 東京都水道局では23区内の水道料金(月額)を水道管の口径(以下で呼び径と記述)と月の水道使用料により、次の表に基づいて計算する。水道管の呼び径の番号と水道使用量を性数値で入力すると、次表と計算式に従い、次のページの仕様を満たす水道料金計算のプログラムを作れ。 申し訳ないのですが 表をのせられなかったのでこちらから参照してください 東京都水道局のホームぺージです http://www.waterworks.metro.tokyo.jp/life/r_keisan.htm 水道料金一か月の表の一般用の部分です 計算式 (基本料金+従量料金)*1.05(1円未満の端数は切り捨て) 計算例:呼び径20ミリで1か月24使用した場合の料金 (基本料金1170円+従量料金2042円)*1.05=3372円   ≪従量料金内訳≫ 1~5 → 0円/*5= 0円 6~10 → 22円/*5= 110円 11~20 → 128円/*10 = 1280円 21~24 → 163円/*4 = 652円                  小計 2042円 【プログラムの仕様】 1.呼び径は(1)13mm、(2)20mm、・・・(12)300mm以上の中から該当する番号を、水道使用量は㎥単位で整数値を、どちらもInputbox関数で取得する。呼び径番号取得ではInputboxに番号と呼び径の対応関係を表示せよ。この際、表示文字列を複数部分に分割して、行末を文字列連結演算子と継続指定「 & _ 」することにより複数行で記述する。 2.入力された水道管の呼び径を番号をもちいてSelectCase構文で基本料金を決定する。 3.従量料金のけいさんでは、まずどの呼び径の料金区分で計算するかをSelectCase構文またはIf文で決定して、各区分の料金表の単価を使用量の各増分に適用して、増分毎の料金を求めて積算する。例にも示した(2)の呼び径の場合は、使用量を複数の増分に分けて、1~5;、6~10、11~20、21~30、・・・、1001以上の各増分に異なる単価を適用する。 4.基本料金と従量料金の合計金額に消費税を加えたものが水道料金となる。この計算を行うと小数点以下の金額を切り捨てるため、Int関数の引数に計算式を書き入れ、その関数値を整数型変数に代入すればよい。 という初心者に対して大変難しいもんだいです。 回答をお願いします。  数字に単位が付いてませんがm^3です

  • VBの条件判断の応用問題

    大学の情報の問題で難しくてできなくて困っています。 できる方がいれば回答をお願いします。 東京都水道局では23区内の水道料金(月額)を水道管の口径(以下で呼び径と記述)と月の水道使用料により、次の表に基づいて計算する。水道管の呼び径の番号と水道使用量を性数値で入力すると、次表と計算式に従い、次のページの仕様を満たす水道料金計算のプログラムを作れ。 申し訳ないのですが 表をのせられなかったのでこちらから参照してください 東京都水道局のホームぺージです http://www.waterworks.metro.tokyo.jp/life/r_keisan.htm 水道料金一か月の表の一般用の部分です 計算式 (基本料金+従量料金)*1.05(1円未満の端数は切り捨て) 計算例:呼び径20ミリで1か月24㎥使用した場合の料金 (基本料金1170円+従量料金2042円)*1.05=3372円   ≪従量料金内訳≫ 1㎥~5㎥ → 0円/㎥*5㎥= 0円 6㎥~10㎥ → 22円/㎥*5㎥= 110円 11㎥~20㎥ → 128円/㎥*10㎥ = 1280円 21㎥~24㎥ → 163円/㎥*4㎥ = 652円                  小計 2042円 【プログラムの仕様】 1.呼び径は(1)13mm、(2)20mm、・・・(12)300mm以上の中から該当する番号を、水道使用量は㎥単位で整数値を、どちらもInputbox関数で取得する。呼び径番号取得ではInputboxに番号と呼び径の対応関係を表示せよ。この際、表示文字列を複数部分に分割して、行末を文字列連結演算子と継続指定「 & _ 」することにより複数行で記述する。 2.入力された水道管の呼び径を番号をもちいてSelectCase構文で基本料金を決定する。 3.従量料金のけいさんでは、まずどの呼び径の料金区分で計算するかをSelectCase構文またはIf文で決定して、各区分の料金表の単価を使用量の各増分に適用して、増分毎の料金を求めて積算する。例にも示した(2)の呼び径の場合は、使用量を複数の増分に分けて、1~5㎥、6~10㎥、11~20㎥、21~30㎥、・・・、1001㎥以上の各増分に異なる単価を適用する。 4.基本料金と従量料金の合計金額に消費税を加えたものが水道料金となる。この計算を行うと小数点以下の金額を切り捨てるため、Int関数の引数に計算式を書き入れ、その関数値を整数型変数に代入すればよい。 という初心者に対して大変難しいもんだいです。 回答をお願いします。

  • Visual Basicで単語帳をつくりたい

    こんにちは!Visual Basicを使って単語帳をつくらなければならいのですが、作り方がさっぱりです。 現在このような感じになっていて実行ができないのですが どうすればいいのでしょうか? 単語は6つあります。 Sub French2() For I = 1 To 6 X = Int(Rnd * 4) + 1 Z = Cells(X, 1) + "は?" Y = InputBox(Z) If Y = Cells(X, 2) Then Z = "当たり!" MsgBox (Z) Next For I = 5 To 6 X = Int(Rnd * 5) + 6 Z = Cells(X, 1) + "は?" Y = InputBox(Z) If Y = Cells(X, 2) Then Z = "その調子!" Else Z = "残念!" MsgBox (Z) End If End Sub さらに工夫を施さなければならないのですが本当に分らないので困っています。回答お願いします!

  • VB IF なぜ構文エラーにならないのですか?

    Dim x, y, z As Integer x = 1 y = 1 z = 1 If x = y And y = z Then MessageBox.Show("OK") End If 3つの値が同じならアラートを出したいのです。このソースでできるかとおもいます。。。 しかし・・・・ If x = y = z Then MessageBox.Show("OK") End If とするとアラートが出ません。関数的に使い方が間違っているのでしょうか? もしそうならなぜ構文エラーが出ないのでしょうか? よろしくお願いします。 言語Microsoft Visual Basic 2008 Express Edition

  • プログラミングの問題です

    このプログラムは何をするものか詳しく説明しなさい。 100 FOR x=1 TO 100 110 FOR y=x TO 100 120 LET a=x 130 LET b=y 140 DO 150 LET r=MOD(a,b) 160 IF r=0 THEN EXIT DO 170 LET a=b 180 LET b=r 190 LOOP 200 IF b=1 THEN 210 LET z=SQR(x^2+y^2) 220 IF INT(z)=z THEN PRINT x,y,z 230 END IF 240 NEXT y 250 NEXT x プログラムに関して初心者で、120~230(ほとんどですが…)の部分で何をしようとしているのかが分かりません。何か参考になるHPや考え方だけでも教えていただけないでしょうか。

  • 生年月日から学年を計算しようと以下のようにVBを用いて作りました。が、

    生年月日から学年を計算しようと以下のようにVBを用いて作りました。が、9月までは正しく学年が表示されたのですが、10月になったとたん、一つ前の学年が表示されるようになりました。 Function Jokyo(ByVal Umare As Variant) As String Dim idx As Integer Dim moji As String If IsNull(Umare) Then Jokyo = "" Exit Function End If '4月~12月での学齢計算 If Month(Date) >= "4" Then idx = DateDiff("yyyy", Umare, DateSerial(Year(Date), 4, 1)) If Format(Umare, "mmdd") < "0401" Then idx = idx + 1 End If ElseIf Month(Date) < "4" Then idx = DateDiff("yyyy", Umare, DateSerial(Year(Date) - 1, 4, 1)) If Format(Umare, "mmdd") < "0401" Then idx = idx + 1 End If Else idx = 19 End If '-------------------------------------------------- Select Case idx Case 0 To 4 moji = "未入学" Case 5 moji = "幼稚園年少" Case 6 moji = "幼稚園年長" Case 7 To 12 moji = "小学" & idx - 6 & "年生" Case 13 To 15 moji = "中学" & idx - 12 & "年生" Case 16 To 18 moji = "高校" & idx - 15 & "年生" Case Else moji = "既卒生" End Select Jokyo = moji End Function

  • VB2008でブロック崩しを作っているのですが、玉は動くようになり次に

    VB2008でブロック崩しを作っているのですが、玉は動くようになり次に自機を動かそうと思いやってみたのですが動きません。 もう一つプロジェクトを作って自機を動かす文だけでやってみるときちんと動きます。 Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown Dim w As Graphics = Pic1.CreateGraphics() w.DrawImage(picback, zikiX, zikiY, rect, GraphicsUnit.Pixel) Select Case e.KeyCode Case Keys.Left : zikiX -= 3 Case Keys.Right : zikiX += 3 End Select w.DrawImage(ziki, zikiX, zikiY) w.Dispose() End Sub Private Sub ballmove() Dim g As Graphics = Pic1.CreateGraphics() tamasita = y + 28 tamawidth = x + 28 zikiwidth = zikiX + 15 zikisita = zikiY + 73 rec.X = x : rec.Y = y : rec.Width = 28 : rec.Height = 28 g.DrawImage(picback, x, y, rec, GraphicsUnit.Pixel) g.DrawImage(ziki, zikiX, zikiY) If x + 28 >= Pic1.Width Then flag_x = False ElseIf x < 1 And flag_x = False Then flag_x = True End If If y + 28 >= Pic1.Height Then flag_y = False ElseIf y < 1 And flag_y = False Then flag_y = True End If If flag_x = True Then x = x + 3 Else x = x - 3 End If If flag_y = True Then y = y + 3 Else y = y - 3 End If g.DrawImage(tama, x, y) g.Dispose() End Sub

  • VB6.0 で

    現在、VB6.0でイルミネーションもどきのプログラムを作成しています。 8つのランプコントロールがコントロール配列されていて、初めは全て消灯している状態から、コマンドボタンを1回クリックすると一番右側の一つが点灯し、またクリックすると右のランプが消えて、左隣のランプが点灯します。 これを繰り返していって、一番左のランプが点灯したら再び一番右のランプが点灯するという下の図の様な感じです。 7 6 5 4 3 2 1 0 ←オブジェクトCWBtnのIndex番号です。 ○○○○○○○● ↓ ○○○○○○●○ ↓ ○○○○○●○○ ↓ ○○○○●○○○ ↓ ○○○●○○○○ ↓ ○○●○○○○○ ↓ ○●○○○○○○ ↓ ●○○○○○○○ ↓ ○○○○○○○● この繰返しです。 現在のコードです。当方、VBを勉強し始めて未熟ですので、まずどういった変数を用意するか、データ型はどうしようなどで深く悩んでしまうレベルです。突っ込みどころ満載でしょうが、ご容赦下さい。。。 Private Sub cmd2_Click() '変数の宣言 Dim Index As Integer   For Index = 0 To 7 Step 1 If CWBtn(Index).Value = False Then Select Case Index Case 0 CWBtn(0).Value = True Case 1 CWBtn(1).Value = True Case 2 CWBtn(2).Value = True Case 3 CWBtn(3).Value = True Case 4 CWBtn(4).Value = True Case 5 CWBtn(5).Value = True Case 6 CWBtn(6).Value = True Case 7 CWBtn(7).Value = True End Select Exit For ElseIf CWBtn(Index).Value = True Then Select Case Index Case 0 CWBtn(0).Value = False Case 1 CWBtn(1).Value = False Case 2 CWBtn(2).Value = False Case 3 CWBtn(3).Value = False Case 4 CWBtn(4).Value = False Case 5 CWBtn(5).Value = False Case 6 CWBtn(6).Value = False Case 7 CWBtn(7).Value = False End Select End If Next Index 実行は出来るのですが、うまくいきません。 どなたか教えて下さい。宜しくお願いします。

  • 水道料金の見方について

    4月から一人暮らしをはじめ、水道料金の請求書が来ました 半月しか使っていないのになんと2500円!! 驚いて水道局のHPを見てみると計算方法が載っていたのですが、 いまいちよくわかりません・・・ 今23区に住んでいて、明細には使用量は4立方メートルとあります  HPの計算方法では1170+560に税 となるはずなのですが なぜ違うのでしょうか? 呼び径は20mmです http://www.waterworks.metro.tokyo.jp/life/r_keisan.htm  

  • Select case で条件演算子は使用可能?

     知っている方にはつまらない質問でしょうが…VB6.0でSelect case に条件演算子を使う事ってできないんでしょうか?  つまり、 if i < 0 then j = 0 else if i = 0 then j = 1 else if i > 0 then j = 2 end if  こんな感じの条件をSelect Caseで使えませんか?と言うことなんですが…

専門家に質問してみよう