input フィールドの戻り値について

解決


  2005-09-13 16:36:54  No: 125273

お世話になります。inputフィールドの戻り値について教えてください。
  1:何も入力しないでOKボタンを押したときの戻り値はブランク、
  2:入力してもしなくてもキャンセルボタンを押したときの戻り値はブランク、
この2つの違いを見分けるにはどうしたらよいのでしょうか?


ガッ  2005-09-13 17:50:32  No: 125274

んぅ…もしかしてVB6のInputBox?それともVB.NETのInputBox?それとも他の?
VB6のInputBoxでキャンセルを押した場合は、
vbNullStringが返ってくるという情報を聞いたことがあるけど…
.NETは良く分からない。


ひろ  2005-09-13 17:57:53  No: 125275

何のinputフィールドなのか書かないと答えようが無いですが、
とりあえずVB6のInputBoxの場合はこんな感じです

(1)初期値指定が無い場合
  以下の3つを区別出来ません。

  ・何も入力せずにOKをクリック
  ・色々入力内容を編集して最終的に入力内容が空の状態でOKをクリック
  ・キャンセルをクリック

(2)初期値が空の文字列ではない場合
  以下の2つの区別が出来ません。
  ・色々入力内容を編集して最終的に入力内容が空の状態でOKをクリック
  ・キャンセルをクリック

  また、以下の2つの区別も出来ません。
  ・何も入力操作をしないでOKをクリック
  ・色々入力内容を編集して結局最終的に初期値と同じ状態でOKをクリック

どちらの動作でも意図に沿わない場合は自分で入力画面を自作しましょう。


ガッ  2005-09-13 18:02:19  No: 125276

※駄レス
VB6だったら、OKとCancelの区別が付きます。

dim st as string
st=inputbox("OKかキャンセルかの区別")
if strptr(st)=0 then
  msgbox "キャンセル"
else
  msgbox st & vbnewline & "でOKを押した"
endif


  2005-09-13 18:19:30  No: 125277

ガッさん、ひろさんありがとうございます。VB6で開発中なので、ガッさんの条件判断で私のやりたいことは解決しました。ありがとうございました。


魔界の仮面弁士  2005-09-13 18:24:08  No: 125278

VBScriptの場合: → IsEmpty関数でチェックできます。
 キャンセルされた場合、IsEmpty()はTrueを返します。
 キャンセル時は Empty、何も入力せずにOKした場合は長さゼロの文字列です。

旧VB/VBAの場合: → StrPtr関数でチェックできます。
 キャンセルされた場合、StrPtr()は 0 を返します。
 キャンセル時は vbNullString、何も入力せずにOKした場合は長さゼロの文字列です。

VB.NETの場合: → 区別できないようです。
 キャンセルされた場合、何も入力せずにOKした場合、ともに、
 長さゼロの文字列が返されます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加