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
なにかつっこむところがあったら教えて下さい。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
4つのテキストボックスに入力された数値を並べ替えようと
しているのであれば、配列の使用方法が間違えています。
Dim F(4) As Variant
F(1) = text1.Text
F(2) = text2.Text
F(3) = text3.Text
F(4) = text4.Text
...の様にする必要が有ります。
No.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
インデントを__で表現してます。
No.2
- 回答日時:
> 入力したテキストを整数型かどうか判別させたかったのですが、うまくいかないようです
IsvbInteger のこと?そんな名前の関数は無いですよ?
もともと配列の各要素を判別するような関数は無いので
自分で作ることになります。
No.1
- 回答日時:
>'4つの整数を1つの配列とする
>Dim F(a, b, c, d) As Variant
ただの文法エラーですね。
このような書き方はできません。
1つ1つ配列の各要素に入れるように
してください。
Variant は特殊で使い方が難しいです。
思わぬところでエラーにならないよう、
初心者は「使わない」のが懸命です。
文字列なら String 整数型なら Integer
数値と文字の間の変換は意図的にキャスト
することをお勧めします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Visual Basic(VBA) テーブルを配列に入れて、元のテーブルの行番号を取得したい 1 2022/08/16 20:15
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NET 2つの配列を連動して並...
-
数値を浮動小数点32bitHEXコー...
-
excelの、ある数式内の{}の意...
-
エクセルへのデータの貼付時に...
-
VBAのWorksheetFunctionの引数...
-
エクセル、この関数の意味は?
-
配列の値を置換するにはどうす...
-
in_addrからchar型の文字列の変換
-
COUNTIFの複数条件による指定
-
vbsでテキストファイル内の文字...
-
○桁にある数値を取得する VB.N...
-
J3016もしくはP4M-865GMAXIIの...
-
これ以上省略することは出来な...
-
IFSでカンマ区切りの変数を読み...
-
【エクセル】 関数による電子...
-
C言語 exitの使い方
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
jsp~jspにhiddenを使って変数...
-
EXCEL/VBA 変数の値をクリップ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelの、ある数式内の{}の意...
-
エクセルへのデータの貼付時に...
-
配列の値を置換するにはどうす...
-
初心者プログラミング
-
vbsでテキストファイル内の文字...
-
COLUMN(1:1)の意味を教え...
-
初心者が簡単なPowerShellスク...
-
VBAのWorksheetFunctionの引数...
-
RichTextBoxの改行を認知してく...
-
VBSで特定の文字列が含まれる場...
-
数値を浮動小数点32bitHEXコー...
-
エクセル、この関数の意味は?
-
in_addrからchar型の文字列の変換
-
VBAで配列に文字列が入らない?
-
○桁にある数値を取得する VB.N...
-
VB 配列の内容をファイルに書...
-
【エクセル】 関数による電子...
-
VB6で配列を文字列に変換する方...
-
VB.NET 2つの配列を連動して並...
-
VBAで配列内のマッチ
おすすめ情報