
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.3ベストアンサー
- 回答日時:
例えばこんな方法も。
【ExcelVBA】クラスモジュールを使用してイベント処理を一元化しよう!
https://www.y-shinno.com/excel-nutcalc-increment …
VB.NETですと楽になっているのですけどね。
逆にそこまでのコントロールを並べて毎日アチコチと弄りまくる必要があるのでしょうか?
1日毎の入力・編集方法を見直して一ヶ月分の表示は別のコントロールを用いるのもありかもですよ。
No.4
- 回答日時:
こんにちは
回答ではありません。
多くのコントロールに同じイベントを適用したいと言う事は分かりましたが
先に回答ささせて頂いたようなユーザーフォームの場合、処理プロセス自体を検討した方が後々楽ではないかと思いました。
このような事を書くと気分を害されるかもしれませんが、
ユーザーフォームの表示は連携なども出来ます。
EXCELを開く
Excelを非表示にしてユーザーフォーム①を表示
年月日をコンボボックスなどに分けて表示と共に設定
新規、訂正などのオプションボタンや入力者IDなども設置しても良いかも、、OKボタンを押す
ユーザーフォーム①をアンロード、
対象日付の入力項目分のテキストボックスなどを配置したユーザーフォーム②を表示
入力チェック、実行ボタンで実行
修正作業も同様、
印刷、全体表示はシート表示やPDF出力、、、
処理を分岐する事でフォーム上のコントロールの数は知れたものになるのでないかと思います。
視認性は悪くなりますが、該当箇所を絞れるので運用は容易になるかと思います。
シートの行番号や列番号で制御できますし
初めにレンジオブジェクトへセットすれば、セルの値に依存しながら(セルの値が変わればレンジ変数の値も変わります)セットすることも出来ます。
変えたくない場合は2次配列で取得しておく方法もあります。
このような事が無ければ、クラスやプロパティを作る機会もないと思いますのでとことん追求するのも良いと思いますが、つい簡単な方法を考えてしまいます。。
No.2
- 回答日時:
イベントをまとめて扱う事もできますが、VBAではめんどくさいです。
なので、ちょっと考え方を変えましょう。
要するに入力チェックがしたいだけですよね?
であれば、そのタイミングを更新前にするのはどうでしょう。
入力チェック関数を用意して、その中で全てのテキストボックスをチェックする。
まぁ入力チェック関数が作れたなら、全てのテキストボックスイベントでそれを動かしてもいいんですけど。
入力チェック処理で検索すれば、いろいろ出てきます。
あと、コントロールをまとめて扱うことも出来るので、それも合わせて検索してみてください。
No.1
- 回答日時:
こんにちは。
下記が参考になるでしょうか?
TextBox1の値はセルA1へ…TextBox10の値はセルA10へ
https://tripbowl.com/excel-vba/userform-textbox- …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
確定申告しなかった・無申告の人をどうやって見つけるのか元国税調査官に聞いてみた
無申告の方などを対象に税務調査を行う国税局の元税務調査官さんに、どう無申告を探すのか聞いてきました。
-
構造体を使用したデータの読み書き
Visual Basic(VBA)
-
コマンドボタンのClickイベントとDblClickイベントの違いを認識させる方法
Visual Basic(VBA)
-
【Excel VBA】名前の定義をVBAで自由にコントロールできますか?
Visual Basic(VBA)
-
4
ユーザーフォームについて質問があります。
Visual Basic(VBA)
-
5
VBAの記述方法について教えていただけると幸いです。
Visual Basic(VBA)
-
6
If~ELSE Ifの使い方で
Visual Basic(VBA)
-
7
VBA初心者です。不具合を直したい。
Visual Basic(VBA)
-
8
【Excel VBA】取り込んだファイルのファイル名を取得するには?
Visual Basic(VBA)
-
9
【Excel VBA】マクロで書き込んだセルのフォントが「MS Pゴシック」になってしまう。
Visual Basic(VBA)
-
10
イベントが発生しない vba
Visual Basic(VBA)
-
11
VBA Formatについて 何度入力しなおしても構文エラー"になってしまう"
Visual Basic(VBA)
-
12
プログラムを習得している方へ、プログラミングが全然出来ない、講義について行けない
その他(プログラミング・Web制作)
-
13
VBAで教えて頂きたいのですが?
Visual Basic(VBA)
-
14
【VBA】関数の宣言なしにプロシージャは動く?
Visual Basic(VBA)
-
15
Excelマクロのコードができる方に質問します。
Visual Basic(VBA)
-
16
excel2021で実行できないマクロ。どこを直したらいいのか
Visual Basic(VBA)
-
17
Excelで「1,2,3,4,5」を「1-5」とまとめることはできますか?
Excel(エクセル)
-
18
excelで大量の数字の変換
Excel(エクセル)
-
19
【計算量Log n】僕は実際の面接でソートの計算量を聞かれて、log nですかねと言ったら「は?」と
Excel(エクセル)
-
20
excelのデータを、セルをまたいで検索することはできますか?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
Visual Basic 6.0 コンボボック...
-
5
C# DateTimePicker をキー入力...
-
6
VB.NETのDropDownListをReadOnl...
-
7
NULLで検索を行ったときは全件...
-
8
【VB】タブ切り替え時のイベント
-
9
TextboxまたはMaskEditboxでの...
-
10
IEで、BackSpaceで「戻る」機能...
-
11
WPFでの時刻入力コントロールに...
-
12
【Mouse Down】キーリピートを...
-
13
キーイベントを擬似的に発生さ...
-
14
ダイアログベースでのキー入力...
-
15
EXCEL VBA でIEを制御して、INP...
-
16
C# WMPメディアの終了検知 その2
-
17
コンボボックスにキー入力をさ...
-
18
自作ダイアログボックス中のエ...
-
19
VBA・WebBrowserコントロールで...
-
20
一定時間操作されないと自動で...
おすすめ情報
公式facebook
公式twitter