アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (4件)

数値、数値2はどうやって決めておられますか


もしやですが、文字列となっているのでは?
試しに
a = 数値
b = 数値2
c = 1
If (b > a) Then
a = 数値2
b = 数値
End If
a = a * 1
B = B * 1

と2行、追加してみて試して見てください。
    • good
    • 0
この回答へのお礼

うまくいきました!!
ありがとうございます(*^_^*)

お礼日時:2011/07/11 23:09

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
ロジックは変えていません。それでもうまく行くようですが。
入力文字の数字文字、小数点数のチェックで切り抜けているところがあるが、まあこんなものかな。
    • good
    • 0

おっと、


×If分→○if文
    • good
    • 1

If分のロジックをテストするコードを書くと良いです。


コードに自信を持てるようになります。
「最大公約数と最小公倍数を求めるプログラム」の回答画像1
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!