Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


311 / 2272 ツリー ←次へ | 前へ→

【12160】数値型フィールドに計算機能が欲しい あきやま兄弟 12/8/14(火) 14:18 質問[未読]
【12161】Re:数値型フィールドに計算機能が欲しい pirorin 12/8/21(火) 0:55 回答[未読]
【12162】Re:数値型フィールドに計算機能が欲しい あきやま兄弟 12/8/28(火) 18:50 お礼[未読]
【12163】Re:数値型フィールドに計算機能が欲しい hatena 12/9/2(日) 8:22 回答[未読]

【12160】数値型フィールドに計算機能が欲しい
質問  あきやま兄弟 E-MAIL  - 12/8/14(火) 14:18 -

引用なし
パスワード
   こんにちは
フォーム上での、数値型(サイズ:長整数型)フィールドで、計算をして結果を格納したい。
入力例)1+2 ENTER キーで3が格納される。
テキスト型であれば、EVAL関数でできますが、数値型でやりたいです。

過去ログのデータ型の変更を試みましたが、どうもうまくできません。
文字列が入力された、というエラーが出ます。

先生方
宜しくお願い申し上げます。

【12161】Re:数値型フィールドに計算機能が欲しい
回答  pirorin  - 12/8/21(火) 0:55 -

引用なし
パスワード
   日にちが経っているので解決されたかもしれませんが、
ややこしい方法ではなく簡単にしようと思えば、


Private Sub 対象フィールド_Click()
Dim ret As Variant

ret = InputBox("式を入力")
Me!対象フィールド = Eval(ret)

End Sub

というのはどうでしょう。エラー処理はしていませんが。

【12162】Re:数値型フィールドに計算機能が欲しい
お礼  あきやま兄弟 E-MAIL  - 12/8/28(火) 18:50 -

引用なし
パスワード
   ▼pirorin さん:
ご教授ありがとうございました。
返事が遅くなって大変失礼しました。
20日から27日まで夏季休暇で、娘とふたりで旅行に行っておりました。

こんなに簡単な方法があったとは、とても嬉しいです。
なるべく、マウスを使いたくないので、フォーカス取得後にも下記のように組み込みました。

Private Sub マーケット_Click()
Dim ret As Variant
ret = InputBox("式を入力")
Me!マーケット = Eval(ret)

End Sub

Private Sub マーケット_GotFocus()
If Me.マーケット = 0 Then
Dim ret As Variant
ret = InputBox("式を入力", vbOKCancel)
If ret = vbOK Then
Me.運賃.SetFocus
Me!マーケット = Eval(ret)

End If
End If
End Sub

最終目標はカーソル内での四則演算でしたが、お陰様でほぼ目的は達成できたと思います(この質問は、弊社の事務員からの要望で、当初は電卓を組み込みましたが、使いづらいと簡単に却下されてしまいました。今回は自信を持っていきたいと思います)

pirorin さん
ありがとうございました。

【12163】Re:数値型フィールドに計算機能が欲しい
回答  hatena  - 12/9/2(日) 8:22 -

引用なし
パスワード
   亀レスご容赦。

下記のようにエラー時 イベントで処理すれば、
テキストボックスで数式を入力して計算結果を表示できます。


Private Sub Form_Error(DataErr As Integer, Response As Integer)
Dim v As Currency
  If DataErr = 2113 And Me.ActiveControl.Name = "マーケット" Then
    Response = acDataErrContinue 'エラーメッセージ抑止
    On Error GoTo E
    v = Eval(Me.マーケット.Text)
    Me.マーケット.Text = v
  End If
  Exit Sub
E:
  Select Case Err
  Case 13, 2431, 2482
    MsgBox "数値または計算式を入力してください。"
  Case 2115
    Resume Next
  Case Else
    MsgBox Err & ": " & Err.Description
  End Select
End Sub

311 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078191
(SS)C-BOARD v3.8 is Free