質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

4440閲覧

VBA 条件判定 if文

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2015/12/20 07:11

お久しぶりでございます。pipiでございます。

商品IDコンボボックス、単価テキストボックス、単位テキストボックス全てに値が入力された場合の時だけ、
明細行追加ボタンを有効にするための、判定処理ですが、今一わかりません。
商品IDコンボボックス、単価テキストボックス、単位テキストボックスには、Tagプロパティで、商品ID、単価、単位
を設定しております。
If Ctrl.Tag <> "" Then →tagプロパティがnullでないならば、
If Ctrl.Value = "" Then→??これが何をしているのか?この処理は必要なのでしょうか?

どなたか解説をお願い致します。。。。

Private Function CheckEntry() As Boolean Dim Ctrl As Control For Each Ctrl In Me.Controls If Ctrl.Tag <> "" Then If Ctrl.Value = "" Then CheckEntry = False Exit Function End If End If Next CheckEntry = True End Function

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ご提示された情報だけでは Tagプロパティ が具体的にどのように設定されているのかが分からないので、一般的なことしか言えませんが…

下記ページの説明を読むと理解の糸口がつかめるのではないでしょうか。

Tagプロパティを利用してユーザーフォームからの情報を受け取る

その説明によれば

ユーザーフォームとかActiveXコントロールには『Tagプロパティ』という空っぽのプロパティがあります。

もう、このプロパティの使い道は自由自在で、ユーザーフォームとかActiveXコントロールには、値を格納するためのグローバル変数領域があらかじめ用意されていると解釈すればわかりやすいと思います。
サンプルマクロでは、ユーザーフォームのどのコマンドボタンがクリックされたかを判断するためにTagプロパティを使っています。

ということです。

実際のコードを見ていないので、

商品IDコンボボックス、単価テキストボックス、単位テキストボックスには、Tagプロパティで、商品ID、単価、単位 を設定しております。

の部分の意味を十分に理解できていませんが、この3種類以外はTagプロパティを使用していない(値がセットされていない)ということですよね?

そうであれば、

  1. ForEach 〜 Next で全てのTagプロパティを順に調べ
  2. If Ctrl.Tag <> "" Then でTagプロパティが存在する(使用されている)コントロールについて
  3. If Ctrl.Value = "" Then で値がセットされていないフィールドが一つでも見つかったらFalseを返す

という意味だと思います。

投稿2015/12/20 11:00

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

For Each Ctrl In Me.Controls ~ Next

の部分はフォーム上のすべてのコントロールを対象にループ処理を行うことを意味しています。
つまりフォーム上にあるすべてのコントロールに対しtagプロパティに値がセットされているかのチェックを行い、何か値が入っているコントロールであればvalueプロパティのチェックを行っています。

目的の機能から推測するに、おそらく必須項目の目印として「商品IDコンボボックス」「単価テキストボックス」「単位テキストボックス」の3項目にだけtagプロパティに値をセットしているものと思われます。

これにより対象3項目に対してのみvalueプロパティをチェックし、一つでも未入力の項目があればFalseを返しているものと思います。

投稿2015/12/21 00:33

編集2015/12/21 00:35
jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問