2つの4ケタまでの自然数を入力して、最大公約数と最小公倍数を算出するプログラムExcelのVisual Basicを用いて作っています。以下のように作ってみたのですが、数値に何を入れても『4ケタまでの自然数を入れてください』になってしまいます。
4ケタの自然数の定義の仕方がおかしいのでしょうか?アドバイスお願いします<m(__)m>
Private Sub 計算_Click()
Dim x As Integer
a = 数値
b = 数値2
c = 1
If (b > a) Then
a = 数値2
b = 数値
End If
If (Int(a) = a) And (0 < a)And (a <= 9999) And (Int(b) = b) And (0 < b ) And (b<= 9999) Then
Do Until c = 0
x = a \ b
c = a - x * b
a = b
b = c
Loop
P = 数値
q = 数値2
r = P * q / a
MsgBox "最大公約数は" & a & "です"
MsgBox "最小公倍数は" & r & "です"
Else
MsgBox "4ケタまでの自然数を入れてください"
End If
End Sub
No.4
- 回答日時:
Private Sub 計算_Click()
Dim 数値a(2)
'Dim 数値 As Integer '整数にすると文字入力排除が出来ない
For i = 1 To 2
p1:
数値 = InputBox("数値" & i)
If Not IsNumeric(数値) Then
MsgBox "数値入力!"
GoTo p1
End If
数値 = CInt(数値)
If 数値 <= 0 Then
MsgBox "正の値入力!"
GoTo p1
End If
If Int(数値) <> 数値 Then
MsgBox "整数入力!"
GoTo p1
End If
If 数値 >= 10000 Then
MsgBox "9999までの整数入力!"
GoTo p1
End If
'---
数値a(i) = 数値
Next i
MsgBox "数値1=" & 数値a(1)
MsgBox "数値2=" & 数値a(2)
Dim x As Integer
a = 数値a(1)
b = 数値a(2)
c = 1
If (b > a) Then
'交換
z = a
a = b
b = z
End If
'---------
Do Until c = 0
x = a \ b
c = a - x * b
a = b
b = c
Loop
'-------
P = 数値a(1)
q = 数値a(2)
r = P * q / a
'---------
MsgBox "最大公約数は" & a & "です"
MsgBox "最小公倍数は" & r & "です"
End Sub
ロジックは変えていません。それでもうまく行くようですが。
入力文字の数字文字、小数点数のチェックで切り抜けているところがあるが、まあこんなものかな。
No.3ベストアンサー
- 回答日時:
数値、数値2はどうやって決めておられますか
もしやですが、文字列となっているのでは?
試しに
a = 数値
b = 数値2
c = 1
If (b > a) Then
a = 数値2
b = 数値
End If
a = a * 1
B = B * 1
と2行、追加してみて試して見てください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C#の問題で2つの整数a,bの最大公約数(GCD)を求めるユークリッドの互除法は,aをbで割った余り 2 2022/06/26 16:52
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- 数学 公約数・公倍数の性質 4 2022/10/13 08:54
- 数学 最小公倍数と最大公約数の求め方で画像のような計算法があったのですが、理解できません。 なぜ2つ数24 4 2022/04/10 13:37
- Visual Basic(VBA) VBAのifで 4 2023/05/16 14:21
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数字以外が入力されたらエラー...
-
*をユーザーが入力した数字の数...
-
Eclipseコンソール表示を、リセ...
-
プログラミング初心者です。 Py...
-
正負を反転させて出力するプロ...
-
C言語について
-
プログラミングC言語について
-
cout関数を使っているのですが...
-
C言語でつるかめ算をするにはど...
-
switch文 defaultについて
-
至急教えてください!プログラ...
-
java初心者です。入力されたの...
-
Userformの入力順序をタブオー...
-
WindowsでEOF
-
C言語
-
MinGWのC言語でCTRL+Zで処理が...
-
C言語scanf_sで何故か2回入力に...
-
C++のcinの動作
-
プログラムの進行が一時ストッ...
-
漢字のソートについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
正負を反転させて出力するプロ...
-
数字以外が入力されたらエラー...
-
プログラミング初心者です。 Py...
-
double型が正常に認識されてい...
-
java初心者です。入力されたの...
-
Eclipseコンソール表示を、リセ...
-
scanfが2回使えない・・・?;
-
C言語scanf_sで何故か2回入力に...
-
if文の条件にscanf関数を使うと…?
-
プログラミングの問題です 「金...
-
Linuxで入力待ちなしkeyread関...
-
ワードで文字を入力する時の変...
-
cout関数を使っているのですが...
-
batプログラム上で文字列を入力...
-
Userformの入力順序をタブオー...
-
scanf が無視されます
-
C言語 逆ピラミッドの作り方
-
gets_sがうまく動かない
-
Excel VBAで、Application.Inpu...
おすすめ情報