
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
ロジックは変えていません。それでもうまく行くようですが。
入力文字の数字文字、小数点数のチェックで切り抜けているところがあるが、まあこんなものかな。
お探しの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ランキング
-
*をユーザーが入力した数字の数...
-
java初心者です。入力されたの...
-
ダメだ・・・分からない。while...
-
C言語でgetchar();が上手く使え...
-
scanfが2回使えない・・・?;
-
Linuxで入力待ちなしkeyread関...
-
Eclipseコンソール表示を、リセ...
-
C言語でのカレンダー作成
-
プログラミングの問題
-
getcharをしながらwhile文で出...
-
正負を反転させて出力するプロ...
-
数字以外が入力されたらエラー...
-
GOSUB を使い、合計、平均、順...
-
漢字のソートについて
-
2入力NANDゲートのみを用...
-
C言語初心者です。ファイルの読...
-
C言語 for文をつかって記号を表...
-
【C言語】二重forループ内でsca...
-
C言語の入出力関数の違い
-
C言語による顧客管理シスステム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
数字以外が入力されたらエラー...
-
Excel VBAで、Application.Inpu...
-
EDITコントロールで入力できる...
-
*をユーザーが入力した数字の数...
-
Linuxプログラミングで、キーボ...
-
Eclipseコンソール表示を、リセ...
-
入力候補を表示させるには・・・?
-
batプログラム上で文字列を入力...
-
UWSCで変数をキー入力
-
VisualStudio2019のコードアナ...
-
小数か整数かを判定する方法
-
scanfが2回使えない・・・?;
-
Linuxで入力待ちなしkeyread関...
-
java初心者です。入力されたの...
-
Delphi初心者 ボタン操作につ...
-
コマンドプロンプトからのEOFの...
-
Eclipseでコマンドラインを入力...
-
Userformの入力順序をタブオー...
おすすめ情報