こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Access VBA 工夫

Access VBA 2つのテキストボックスに数字を入力して、3つ目のテキストボックスに総和を求めるプログラムを作りたいです。(X~Yまでの総和。 )
Private Sub btnWa_Click()

Dim lX As Long
Dim lY As Long
Dim i As Long
Dim lSouwa As Long

lX = txtX.Value
lY = txtY.Value


lSouwa = 0


For i = lX to lY

lSouwa = lSouwa + i

Next i


txtSouwa.value = lSouwa


End Sub

これに加えて逆にY~X(例えば30~10)の総和を求める。もしくは、警告を出す。そして、テキストボックスに何も入力されていない場合と文字が入力されている場合、エラーメッセージを出すプログラムを教えて下さい。

投稿日時 - 2018-12-02 19:36:08

QNo.9563962

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

答えてしまうと勉強にならないのかもしれませんが、...
私だったらコンナカンジです。

Option Explicit

Private Sub btnWa_Click()
 Dim lX As Long
 Dim lY As Long
 Dim lS As Long
 Dim i As Long
 Dim lSouwa As Long

 '入力値が数値?
 If IsNumeric(txtX.Value) = False Then
  MsgBox ("txtXが数値以外")
  Exit Sub
 End If
 If IsNumeric(txtY.Value) = False Then
  MsgBox ("txtYが数値以外")
  Exit Sub
 End If
 
 '小数?
 If Int(Val(txtX.Value)) <> Val(txtX.Value) Then
  MsgBox ("txtXが小数")
  Exit Sub
 End If
 If Int(Val(txtY.Value)) <> Val(txtY.Value) Then
  MsgBox ("txtYが小数")
  Exit Sub
 End If

 lX = Val(txtX.Value)
 lY = Val(txtY.Value)

 '逆転?
 lS = 1
 If lX > lY Then
  lS = -1
  'MsgBox ("txtX,txtYが逆転")
  'Exit Sub
 End If

 lSouwa = 0
 For i = lX To lY Step lS
  lSouwa = lSouwa + i
 Next i

 txtSouwa.Value = lSouwa

End Sub

投稿日時 - 2018-12-03 10:27:44

お礼

ありがとうございます。これで先に進めそうです。

投稿日時 - 2018-12-03 20:52:11

ANo.1

こんなのAccessVBAの質問かな。学校の宿題の回答を、こういうコーナーに頼っているのではないか。ここの回答を、回答として出すと、生徒は判っておる、と誤解するのじゃないか?
ーー
参考
>何も入力されていない場合
Googleで「access vba 空白」で照会して
https://www.moug.net/tech/acvba/0050010.html
アクセスの判りにくいところと思う。
>文字が入力されている場合
•IsNumeric関数の利用
https://tsware.jp/tips/tips_203.htm
http://www.accessclub.jp/actips/tips_15.htm

投稿日時 - 2018-12-02 20:55:02

お礼

教え方が教え方なんで…。ありがとうございました。本もきちんと読んでおきます。

投稿日時 - 2018-12-03 20:47:05

あなたにオススメの質問