こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

visual basicについて

visual basic6.0を使ってプログラミングの練習をしています。
入力した4つの整数を
以下の構文だと「定数式が必要です」とエラーがでてしまいます。


Option Explicit
Dim a As Variant
Dim b As Variant
Dim c As Variant
Dim d As Variant


Private Sub Command1_Click()

'テキストに記入されたデータを代入

text1.Text = a
text2.Text = b
text3.Text = c
text4.Text = d

'4つの整数を1つの配列とする
Dim F(a, b, c, d) As Variant


If IsvbInteger(F) Then 'もしa,b,c,dいずれも有効な整数だったとき



Call cbs.BubbleSort(F, UBound(F) + 1, True) '配列Fをバブルソート

string1 = ""

For j = 0 To UBound(F)
stringx = stringx & F(j) & ","
Next j

Label1.Caption = stringx 'ラベルテキストにカスケード


ElseIf vbArray(a, b, c, d) Then 'もし数字が重複していたとき

msg = "整数が重複しています"
btn = vbOKOnly
Title = "警告"

ElseIf F(a, b, c, d) = 0 Then '配列のうちどれかひとつでも0があったら

msg = "0は無効です"
btn = vbOKOnly
Title = "警告"

ElseIf isvbnull(a, b, c, d) Then '4つのうちどれかが空欄だったとき

msg = "無効の値です"
btn = vbOKOnly
Title = "警告"


Else '整数じゃなかったとき

msg = "整数を入力してください"
btn = vbOKOnly
Title = "警告"

End If '以上
End Sub

なにかつっこむところがあったら教えて下さい。

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2011-10-17 16:09:14

QNo.7077413

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

4つのテキストボックスに入力された数値を並べ替えようと
しているのであれば、配列の使用方法が間違えています。

Dim F(4) As Variant

F(1) = text1.Text
F(2) = text2.Text
F(3) = text3.Text
F(4) = text4.Text

...の様にする必要が有ります。

投稿日時 - 2011-10-18 23:06:31

ANo.3

Visual Basic の文法が判らないようなので、そこから学習する必要があります。

・a,b,c,d はどこで入力されているのでしょうか?


>'テキストに記入されたデータを代入
>text1.Text = a
>text2.Text = b
>text3.Text = c
>text4.Text = d

もし、この部分なら逆にする必要が有ります。
a = text1.Text
b = text2.Text
c = text3.Text
d = text4.Text

ただし、テキストボックスのTextプロパティは文字列型なので
a,b,c,d のそれぞれのデータ型をVarType関数で求めても全て文字列形になります。


もし、a,b,c,d に入力された文字列が整数と認識できるかをチェックするには
(1) IsNumeric関数で数字かどうか判定して
(2) 数値が整数の範囲になっているか判定して
(3) 実数でなく整数であることを確認する
という手順が必要です。
つまり
If IsNumeric(a) Then
__If (-32768<=Val(a)) And (Val(a)<=32767) Then
____If Val(a)=Int(Val(a)) Then
______Print "整数文字列です"
____Else
______Print "実数文字列です"
____End If
__Else
____Print "範囲外の実数文字列です"
__End If
Else
__Print "数字以外の文字列です"
End If

インデントを__で表現してます。

投稿日時 - 2011-10-17 21:09:44

ANo.2

> 入力したテキストを整数型かどうか判別させたかったのですが、うまくいかないようです
IsvbInteger のこと?そんな名前の関数は無いですよ?
もともと配列の各要素を判別するような関数は無いので
自分で作ることになります。

投稿日時 - 2011-10-17 17:21:13

ANo.1

>'4つの整数を1つの配列とする
>Dim F(a, b, c, d) As Variant
ただの文法エラーですね。
このような書き方はできません。
1つ1つ配列の各要素に入れるように
してください。

Variant は特殊で使い方が難しいです。
思わぬところでエラーにならないよう、
初心者は「使わない」のが懸命です。

文字列なら String 整数型なら Integer
数値と文字の間の変換は意図的にキャスト
することをお勧めします。

投稿日時 - 2011-10-17 16:42:33

補足

入力したテキストを整数型かどうか判別させたかったのですが、うまくいかないようです

投稿日時 - 2011-10-17 17:05:49

お礼

as variantは初心者は使わない、承知しました
もうちょっと例題をやってから挑もうと思います

投稿日時 - 2011-10-17 16:57:32

あなたにオススメの質問