VBAの処理の呼び出しの書き方で躓いています。
下記のような処理があります。
Private Sub txtBreakstart1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If IsDate(Me.txtBreakstart1.Text) Then
If Not Me.txtBreakstart1.Text Like "*:*" Then
MsgBox "入力値が不正です。"
Cancel = True '更新をキャンセル
End If
Else
MsgBox "入力値が不正です。"
Cancel = True '更新をキャンセル
End If
End Sub
このtxtBreakstart1はテキストボックスなのですが、これが31まであります。
1の部分を2に3に・・と31まで一つ一つに変えてやれば良いのですが、それだと後から
コードを変更する際にとても時間がかかってしまいます。
まだよく理解してないのですが、こういう時にCallで処理を呼び出すのを使うのでしょうか・・?
オブジェクト名の数値だけが違う場合はどのように書けば好いのでしょうか。
メッセージボックスなどを呼び出す処理の例はよく見かけるのですが、それでもいまいちピンときませんでした。
No.1
- 回答日時:
こんにちは。
下記が参考になるでしょうか?
TextBox1の値はセルA1へ…TextBox10の値はセルA10へ
https://tripbowl.com/excel-vba/userform-textbox- …
No.2
- 回答日時:
イベントをまとめて扱う事もできますが、VBAではめんどくさいです。
なので、ちょっと考え方を変えましょう。
要するに入力チェックがしたいだけですよね?
であれば、そのタイミングを更新前にするのはどうでしょう。
入力チェック関数を用意して、その中で全てのテキストボックスをチェックする。
まぁ入力チェック関数が作れたなら、全てのテキストボックスイベントでそれを動かしてもいいんですけど。
入力チェック処理で検索すれば、いろいろ出てきます。
あと、コントロールをまとめて扱うことも出来るので、それも合わせて検索してみてください。
No.3ベストアンサー
- 回答日時:
例えばこんな方法も。
【ExcelVBA】クラスモジュールを使用してイベント処理を一元化しよう!
https://www.y-shinno.com/excel-nutcalc-increment …
VB.NETですと楽になっているのですけどね。
逆にそこまでのコントロールを並べて毎日アチコチと弄りまくる必要があるのでしょうか?
1日毎の入力・編集方法を見直して一ヶ月分の表示は別のコントロールを用いるのもありかもですよ。
No.4
- 回答日時:
こんにちは
回答ではありません。
多くのコントロールに同じイベントを適用したいと言う事は分かりましたが
先に回答ささせて頂いたようなユーザーフォームの場合、処理プロセス自体を検討した方が後々楽ではないかと思いました。
このような事を書くと気分を害されるかもしれませんが、
ユーザーフォームの表示は連携なども出来ます。
EXCELを開く
Excelを非表示にしてユーザーフォーム①を表示
年月日をコンボボックスなどに分けて表示と共に設定
新規、訂正などのオプションボタンや入力者IDなども設置しても良いかも、、OKボタンを押す
ユーザーフォーム①をアンロード、
対象日付の入力項目分のテキストボックスなどを配置したユーザーフォーム②を表示
入力チェック、実行ボタンで実行
修正作業も同様、
印刷、全体表示はシート表示やPDF出力、、、
処理を分岐する事でフォーム上のコントロールの数は知れたものになるのでないかと思います。
視認性は悪くなりますが、該当箇所を絞れるので運用は容易になるかと思います。
シートの行番号や列番号で制御できますし
初めにレンジオブジェクトへセットすれば、セルの値に依存しながら(セルの値が変わればレンジ変数の値も変わります)セットすることも出来ます。
変えたくない場合は2次配列で取得しておく方法もあります。
このような事が無ければ、クラスやプロパティを作る機会もないと思いますのでとことん追求するのも良いと思いますが、つい簡単な方法を考えてしまいます。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WPFでの時刻入力コントロールに...
-
Visual Basic 6.0 コンボボック...
-
Delphiコンボボックスの先頭に...
-
(VBA)チェックボックスのclick...
-
C# WMPメディアの終了検知 その2
-
Delphiでキー入力を投げたい
-
特定のキーを押すまでループさ...
-
【VB】タブ切り替え時のイベント
-
もしかして
-
エクセルで、日付を入力すると...
-
「ご処理進めて頂きますようお...
-
リストボックスの選択解除
-
VBAでループ内で使う変数名を可...
-
ImageMagickでgif画像の一部が...
-
accessで2つ以上のフォームを起...
-
VBAでセルに値が入力されるまで...
-
【Excel】特定の文字を含むセル...
-
自分の不注意で仕事で乗り合い...
-
複数シートのボタンに同一の動...
-
VBA リストボックスをダブルク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】タブ切り替え時のイベント
-
Visual Basic 6.0 コンボボック...
-
一定時間操作されないと自動で...
-
特定のキーを押すまでループさ...
-
WPFでの時刻入力コントロールに...
-
キーイベントを擬似的に発生さ...
-
(VBA)チェックボックスのclick...
-
タブキー押下時のイベントをひ...
-
テキストボックスの入力文字を1...
-
VB.NETでフォームがない...
-
エクセルVBAのテキストボック、...
-
コンボボックスにキー入力をさ...
-
KEYPREVIEW=TRUEについて。意味...
-
フォーカスについてお教えください
-
複数のテキストボックスのカン...
-
VB6で電卓を作っているのですが...
-
Excel VBA マクロ実行中のみテンキ...
-
VB.NETのDropDownListをReadOnl...
-
IEで、BackSpaceで「戻る」機能...
-
VC++ で TextBoxから、次...
おすすめ情報