■記事リスト / ▼下のスレッド
■15124 / 親記事) |
指定の文字数を入力したとき自動でタブ
|
□投稿者/ みどり -(2025/10/10(Fri) 10:08:56)
| お世話になっております。 Windows11 桐10sを使用しております。
入力フォームで一桁の数字を順々にテキストボックスに入力しているのですが、 VBAにおける「AutoTab」のような機能はありますでしょうか。 最大文字数を「1」に指定し、1、2、3と入力すればエンターキーやタブキーを押さなくても次のテキストボックスにフォーカスが移動してほしいです。 よろしくお願い致します。
|
|
|
▽[全レス5件(ResNo.1-5 表示)]
■15126 / ResNo.1) |
Re[1]: 指定の文字数を入力したとき自動でタブ
|
□投稿者/ ONnoji -(2025/10/10(Fri) 11:26:19)
| 2025/10/10(Fri) 11:49:36 編集(投稿者)
> 入力フォームで一桁の数字を順々にテキストボックスに入力しているのですが、 > VBAにおける「AutoTab」のような機能はありますでしょうか。 > 最大文字数を「1」に指定し、1、2、3と入力すればエンターキーやタブキーを押さなくても次のテキストボックスにフォーカスが移動してほしいです。
VBAの AutoTab って何なの???
これなのね ↓ Learn > VBA > AutoTab プロパティ https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/autotab-property
通常決まっている文字数を入力するフォームの TextBox または ComboBox の AutoTab プロパティを指定できます。 ユーザーが最大文字数を入力すると、フォーカスは自動的にタブ オーダー内の次のコントロールに移動します。 たとえば、TextBox に常に 5 文字の在庫番号が表示される場合は、MaxLength を使用して TextBox に入力する最大文字数を指定し、 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ AutoTab を使用してユーザーが 5 文字入力した後に次のコントロールに自動的に移動するように指定することができます。 ・・・・・・・・・・・・・・・・・・・・・・・・・・
◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇
<条件>
・フォームのオテキストボックスに入力できる文字数は1文字まで
・1文字入力すると最大文字数の1に達するので、次のテキストボックスへ自動的にフォーカスを移動する
以上の条件を満たすためにはどうする???
ということなのね。(^^ゞ
ちなみに、テキストボックスのソースは項目名ですか?、それとも変数名ですか??
◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇
入力する文字は半角文字ですか?、それとも確定した全角文字ですか??
> 1、2、3と入力すれば ↑ とあるので、半角の数字を入力するということでよろしいでしょうか???
|
|
|
■15127 / ResNo.2) |
Re[2]: 指定の文字数を入力したとき自動でタブ
|
□投稿者/ みどり -(2025/10/10(Fri) 13:09:27)
| ONnojiさん、ありがとうございます。 説明不足ですみません。 おっしゃるとおりです。
今現在、1→エンター(次のボックスへ)2→エンター(次のボックスへ)・・としているところ、 1→2→3と入力するだけで次々とテキストボックスにタブオーダーの順に入力していきたいです。 入力する数値は1〜4の変数で半角数字です。 よろしくお願い致します。
|
|
|
■15128 / ResNo.3) |
Re[3]: 指定の文字数を入力したとき自動でタブ
|
□投稿者/ ONnoji -(2025/10/10(Fri) 14:42:56)
| > 今現在、1→エンター(次のボックスへ)2→エンター(次のボックスへ)・・としているところ、 > 1→2→3と入力するだけで次々とテキストボックスにタブオーダーの順に入力していきたいです。 > 入力する数値は1〜4の変数で半角数字です。
フォームの[テキストボックス]オブジェクトの属性には、[最大何文字まで]のような設定は見当たらないですね。
> VBAにおける「AutoTab」のような機能はありますでしょうか。
桐には似たような機能はなさそうですね。(T_T)
◇ ◇ ◇ ◇ ◇ ◇
さて、[テキストボックス]オブジェクトの属性では出来ませんけれど、
試したところ、[フォーム(.wfx)+イベント処理(.kex]の[イベント駆動]のプログラミングでは可能でした。
(例)
手続き定義開始 txtVariablDim1::編集文字列変更() 変数宣言 自動,整数{ &length } 変数宣言 自動,整数{ &return }
メソッド呼び出し 戻り値 = &return, &this.編集文字列長( &length ) トレース出力 "編集文字列長" トレース出力 _&return トレース出力 _&length
if ( &length >= 1 ) メソッド呼び出し 戻り値 = &return @txtVariablDim2.フォーカス設定() トレース出力 "フォーカス設定" トレース出力 _&return end
手続き定義終了
添付ファイルは数日を目途に削除しますので、ダウンロードはお早めに願います。
■AutoTabみたいな.wfx
フォーム ├ ファミリ ├ ワークスペース ├ フォーム操作バー ├ フォームヘッダ部 │ └ txtタイトル └ フォーム明細部 ├ txtVariablDim1 │ └ lbl1 ├ txtVariablDim2 │ └ lbl2 ├ txtVariablDim3 │ └ lbl3 ├ txtVariablDim4 │ └ lbl4 └ txtVariablDim5 └ lbl5
◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇
なお、[桐 - ヘルプ]の[フォーカス設定]メソッドの項の[ノート]によると、
[編集文字列変更]イベントハンドラ内では実行できないという記載があります。
しかし、実際には実行出来て、[入力後]イベントハンドラと絡めても問題なく動作していますので、
[桐 - ヘルプ]の説明が誤っているか、ヘルプ執筆後に桐のバージョンアップの際に仕様が変更された可能性が高いです。
以下にトレース出力の例を示します。
┌when 手続き"txtVariablDim1::編集文字列変更( )"を実行開始しました │ │ :編集文字列長 │ :&return : 1 │ :&length : 1 │ │┌when 手続き"txtVariablDim1::入力後("1",1,0)"を実行開始しました ││ ││ :&入力継続 : 1 ││ │└end │ │ :フォーカス設定 │ :&return : 0 │ └end
┌when 手続き"txtVariablDim1::編集文字列変更( )"を実行開始しました │ │ :編集文字列長 │ :&return : 1 │ :&length : 1 │ │┌when 手続き"txtVariablDim1::入力後("1",1,0)"を実行開始しました ││ ││ :&入力継続 : 0 ││ │└end │ │ :フォーカス設定 │ :&return : 1 │ └end
↑ 以上のこのように、正しくハンドリングしているので、桐10s以降の仕様変更の可能性が高いです。
本件はK3殿に照会中です。
p.s.
[フォーム(.wfx)+イベント処理(.kex]の[イベント駆動]のプログラミングに関しては、拙作:webサイトを参考にしてください。
こちら ↓ 桐の釣魚大全 https://silicon7565.cloudfree.jp/
桐の釣魚大全のトップ > 新 フォームアプリケーション入門 §1 https://silicon7565.cloudfree.jp/primer/primer_section_01.html
桐の釣魚大全のトップ > フォームアプリケーション教書 第1部 https://silicon7565.cloudfree.jp/guide/guide_Part1.htm
|
|
|
■15129 / ResNo.4) |
Re[4]: 指定の文字数を入力したとき自動でタブ
|
□投稿者/ みどり -(2025/10/10(Fri) 15:15:30)
| ONnojiさん、貴重なお時間を割いて、コードまで作成いただき感謝しきれません。 まだ途中ではありますが、希望通りの動作が実現できそうです。 取り急ぎ、お礼申し上げます。 本当にありがとうございます。 ウェブサイトも拝見し、勉強させていただきます。
|
解決済み! |
|
■15130 / ResNo.5) |
Re[5]: 指定の文字数を入力したとき自動でタブ
|
□投稿者/ ONnoji -(2025/10/11(Sat) 21:44:56)
| 2025/10/12(Sun) 09:46:33 編集(投稿者)
> なお、[桐 - ヘルプ]の[フォーカス設定]メソッドの項の[ノート]によると、 > > [編集文字列変更]イベントハンドラ内では実行できないという記載があります。 > > しかし、実際には実行出来て、[入力後]イベントハンドラと絡めても問題なく動作していますので、 > > [桐 - ヘルプ]の説明が誤っているか、ヘルプ執筆後に桐のバージョンアップの際に仕様が変更された可能性が高いです。 > > 以下にトレース出力の例を示します。 > > ┌when 手続き"txtVariablDim1::編集文字列変更( )"を実行開始しました > │ > │ :編集文字列長 > │ :&return : 1 > │ :&length : 1 > │ > │┌when 手続き"txtVariablDim1::入力後("1",1,0)"を実行開始しました > ││ > ││ :&入力継続 : 1 > ││ > │└end > │ > │ :フォーカス設定 > │ :&return : 0 > │ > └end > > > ┌when 手続き"txtVariablDim1::編集文字列変更( )"を実行開始しました > │ > │ :編集文字列長 > │ :&return : 1 > │ :&length : 1 > │ > │┌when 手続き"txtVariablDim1::入力後("1",1,0)"を実行開始しました > ││ > ││ :&入力継続 : 0 > ││ > │└end > │ > │ :フォーカス設定 > │ :&return : 1 > │ > └end > > ↑ > 以上のこのように、正しくハンドリングしているので、桐10s以降の仕様変更の可能性が高いです。 > > 本件はK3殿に照会中です。
桐のバージョンを遡ってみた。
とは言っても、桐9-2012 までが限界。
試してみると、桐10sと全く同じ動作でした。
そうなると、桐ヘルプ(マニュアル)は 桐8 sp6/7 の時のまま改訂されずに放置されていたのかなと???
p.s.
これは個人の感想ですが、桐に限らずヘルプには誤記(書き過ぎを含む)・抜けなどが多いです。 ・・・・・・・・・・・・・・・・・・・・・・・・
しかし、桐の桐ヘルプ(マニュアル)は他社のヘルプと比べると群を抜いて誤記・抜けが多いという印象です。
従って、桐ヘルプ(マニュアル)を読んでも、まず試してみる事ですね。
誤記・抜けが多いが多いのですから、まず試してみなければ本当の事はワカリマセン。
p.p.s.
ヘルプやマニュアルは無謬(誤りが無い事)だと思うのが普通の人情ですよね。
しかし、桐に限らずヘルプには誤記・抜けなどが多いので、実際に試してみるしか確かめる方法がありません。
|
|
|
■記事リスト /
レス記事表示 →
[親記事-5]
|