- 締切済み
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 なにかつっこむところがあったら教えて下さい。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- don_go
- ベストアンサー率31% (336/1059)
4つのテキストボックスに入力された数値を並べ替えようと しているのであれば、配列の使用方法が間違えています。 Dim F(4) As Variant F(1) = text1.Text F(2) = text2.Text F(3) = text3.Text F(4) = text4.Text ...の様にする必要が有ります。
- Hayashi_Trek
- ベストアンサー率44% (366/818)
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 インデントを__で表現してます。
- MARU4812
- ベストアンサー率43% (196/452)
> 入力したテキストを整数型かどうか判別させたかったのですが、うまくいかないようです IsvbInteger のこと?そんな名前の関数は無いですよ? もともと配列の各要素を判別するような関数は無いので 自分で作ることになります。
- MARU4812
- ベストアンサー率43% (196/452)
>'4つの整数を1つの配列とする >Dim F(a, b, c, d) As Variant ただの文法エラーですね。 このような書き方はできません。 1つ1つ配列の各要素に入れるように してください。 Variant は特殊で使い方が難しいです。 思わぬところでエラーにならないよう、 初心者は「使わない」のが懸命です。 文字列なら String 整数型なら Integer 数値と文字の間の変換は意図的にキャスト することをお勧めします。
お礼
as variantは初心者は使わない、承知しました もうちょっと例題をやってから挑もうと思います
補足
入力したテキストを整数型かどうか判別させたかったのですが、うまくいかないようです