[リストへもどる]
一括表示

投稿時間:2002/09/24(Tue) 15:40
投稿者名:ラルフ
Eメール:
URL :
タイトル:
数値入力・文字入力
はじめたばかりの私にとって、非常に助かるこのサイト。
利用させてもらっています。今回、下記に挙げるような問題を抱えており、

MSFlexGrid内の「数字入力以外は認めない」部分を参考にしようと
しましたが、自分の思うような動作をしないなど、お手上げになって
しまい、書き込んだ次第です。

VS-FlexGridを使い、Oracleで作った2つのテーブルからデータを
取り込んで表示させているのですが、数字以外の入力は認めない
(0〜100とマイナス値あり)、文字入力以外は認めないイベントを作成
したいのですが、ヘルプを用いて、ValidateEdit(ByVal Row As Long,
ByVal Col As Long, Cancel As Boolean)を使うと、正しい値をはじく
だけでなく、正しい値さえもはじいてしまうのです。

参考にしたのは

Sub fg_ValidateEdit(ByVal Row As Long, _
ByVal Col As Long, Cancel As Boolean)
    
  Dim c$
  ' 各列に異なる正当性検査を定義します。
  Select Case Col
         
  Case 1    ' 列1には文字列入力だけを許可
    c = Left$(fg.EditText, 1)
    If Ucase$(c) < "A" Or UCase$(c) > "Z" Then _
      Beep: Cancel = True
  Case 2    ' 列2には0より大きい数値の入力だけを許可
    If Val(fg.EditText) <= 0 Then _
     Beep: Cancel = True
  End Select
End Sub

です。どうすれば自分の願いどおりの動作となるのか、いろいろと試したのですが、
結果は同じ・・・。もう、手段を探せないところまできているのですが、
なにか、よい方法など、ありませんでしょうか?

投稿時間:2002/09/30(Mon) 22:29
投稿者名:NAO★
Eメール:
URL :
タイトル:
Re: 数値入力・文字入力
VS-FlexGridはもっていないので、EditTextプロパティにどのような値が入るのか
わかりませんが、

デバッグで、ステップ実行されてみましたか?

変数Col および cに期待通りの値が入っているかどうか
チェックされることをお勧めします

あ、あとCancel変数はこのSubプロシージャをコールした時、
すでにTrueになっていたりしませんよね?