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

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

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

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

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

3962閲覧

Access VBA テキストの値で分岐処理を行いたい

xxx8

総合スコア41

VBA

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

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2018/07/24 12:32

編集2018/07/24 13:09

前提・実現したいこと

Access VBAで、チェックボックスの代用でテキストボックスを使用した際の処理

発生している問題・エラーメッセージ

下記サイトを参考にテキストボックス、コマンドボタン、ラベルを用いて
チェックボックス風のオブジェクトを作ることができました。

チェックボックスのサイズを大きくする

ですが、このチェックボックスに【値が入っている場合】【値が入っていない場合】の
分岐をどう行えばいいのかわかりません。

該当のソースコード

vba

1Private Sub btn1_Click() 2If IsNull(Me.txt1) Or Me.txt1 = "" Then 3・・・・・・ 4End If 5End Sub

ボタン1が押されたときにtxt1がNullまたは空の場合は、
処理を行いたいです。

1回目ではこの分岐に引っかかるのですが
2回目以降は引っかかりません。

補足情報(FW/ツールのバージョンなど)

Access2016

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

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

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

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

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

sazi

2018/07/24 12:48

リンクのアレドレスは正しくないようですが・・・
xxx8

2018/07/24 13:10

URLを修正しました。
sazi

2018/07/25 02:01 編集

リンク先は、書式の;\bの説明は有ったほうが良いな
KiyomiH

2018/07/25 02:38

そうですね。書式「;\b」の説明があれば、よりわかりやすいと思います。私も「;」を挟んでTRUEとFALSEの時の表示方法を変えているのだということを理解するのに結構時間かかりました(笑)
guest

回答2

0

txt1がNullまたは空の場合

VBA

1If Trim(Nz(txt1)) = "" Then

投稿2018/07/24 12:51

sazi

総合スコア25138

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

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

xxx8

2018/07/24 13:11

迅速なご対応、ありがとうございます。 試してみます。
guest

0

ベストアンサー

私もhatenaさんのサイトをいつも参考にさせて頂いています。

このオリジナルチェックボックスも実務で使用していますので
お力添えになればと思い、回答させて頂きます。

Me.txt1にはクリックするたびに「true」または「false」が代入されます。
ですので、「txt1がNullまたは空の場合」というのは
「txt1がfalseの場合」と置き換えて考えるといいかと思います。

vba

1If Nz(txt1, False) = False Then

「1回目はこの分岐に引っかかる」のは、初回はtxt1がnullだと思われます。

投稿2018/07/25 01:16

KiyomiH

総合スコア40

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

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

xxx8

2018/07/25 04:52

「true」または「false」が代入されていたのですね・・・ ご回答ありがとうございます。
xxx8

2018/07/25 04:57

質問が重なりすみません。 書式の「;\b」とはどういった意味なのでしょうか? また、ボタンクリック時の Me.txtCheck = Not Me.txtCheck Or IsNull(Me.txtCheck) とは「true」 or「 false」によって"チェックマーク風"の値を表示・非表示しているということでしょうか?
KiyomiH

2018/07/25 05:18

hatenaさんにお伺いした方がもっと詳しく教えて頂けると思いますが・・・。 書式の「;\b」ですが、「;」で区切られたブール型の書式で、TRUEの場合は「b」、FALSEの場合は「」(なし)で表示しなさい、の意味です。 ですので、実際にMe.txtCheckにTRUEが代入されたら「b」、FALSEが代入されたら「」(なし)と表示されます。Me.txtCheckのフォントはMarlettですので、b=レ(レ点)となり、チェックボックスにチェックが入ったように見えます。 Me.txtCheck = Not Me.txtCheck Or IsNull(Me.txtCheck)ですが、表示・非表示ではなく ここで「TRUE」または「FALSE」を代入しています。 「Not Me.txtCheck」で、今の値とは逆にする(FALSEの場合はTRUEを、TRUEの場合はFALSEを) 「IsNull(Me.txtCheck)」で、今NULLの場合(初回の場合)はTRUEを 代入しています。 ORで結んでいるのでどちらかがTRUEの場合はTRUE(チェックがつく)となります。 拙い説明ですみません。
xxx8

2018/07/25 05:48

分かりやすいご説明でとても勉強になります。 お教え下さってありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問