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

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

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

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

Access

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

Q&A

解決済

1回答

11001閲覧

access vba コントロールがフォーカスを取得していない?エラーで困っています

nekomura

総合スコア132

VBA

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

Access

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

0グッド

0クリップ

投稿2016/03/10 02:19

編集2016/03/10 05:20

よろしくお願いいたします。
前回の質問で、下記コード内容の全体図を掲載して質問させていただいていたのですが、
質問内容を区切ってさせていただきたく存じます。
有識者の方々お知恵を貸してください。

やりたいことは下記です。

フォームにテキストボックスを2つ用意しています。
このテキストボックス(invoiceFrom と invoiceTo)の
①どちらにも値が入っていなければ
"hoge"
とメッセージを出し、

②いずれかに値が入っていれば
"hogehoge"
と出したいです。

しかし下記コードを実行すると、
「nullの使い方が不正です」とメッセージが出ます。
テキストボックス2つともに値が入っていれば、②は実行されるのですが、
テキストボックスに入力が無い場合の処理ができないので困っています。

いろいろと調べているのですが解決できず、どうぞよろしくお願いいたします。

Private Sub データ取得_Click()
On Error GoTo Err_データ取得_Click

Dim invoiceFrom As String
Dim invoiceTo String

invoiceFrom = Me.invoiceFrom.Value

invoiceTo = Me.invoiceTo.Value

If IsNull(invoiceFrom And invoiceTo) Then '検索条件が未入力の場合 MsgBox "hoge" End If If Not IsNull(invoiceFrom Or invoiceTo) Then 'いずれかが入力されている場合

MsgBox "hogehoge"
End If
End Sub

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

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

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

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

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

tkturbo

2016/03/10 02:36

「invoiceFrom = Me.invoiceFrom.Value」の行は正常に実行できてますかー?
nekomura

2016/03/10 02:49

tkturbo様 何度もありがとうございます。 デバックモードで確認したところ、 Me.invoiceFrom.Value = <指定した式に○○(当該システム)が見つけることができないフィールド、コントロール、プロパティ名が含まれています。> と、あります…。
tkturbo

2016/03/10 03:49

ウォッチ式に「Me.invoiceFrom」を指定してデバッグ実行したらどうなります?
nekomura

2016/03/10 05:16

tkturbo様  ありがとうございます。 ウォッチ式を使ったところ、値はnullでした。 そして今は実行すると、”nullの使い方が不正です”とのエラーが出てしまいます。 最新のご回答をいただく前に、フォームの方のデザインビューを触っていたところ 該当テキストボックスからNAME#?が消えて、Me.invoiceFrom.Value = <指定した式に○○(当該システム)が見つけることができない…以下略>のメッセージはなくなりました。
guest

回答1

0

ベストアンサー

コメントのやりとりから、「invoiceFrom」という名前のテキストボックスがないのではないかと思われます。
該当するテキストボックスのプロパティから「オブジェクト名」の設定欄を確認してみてください。

投稿2016/03/10 05:35

tkturbo

総合スコア5572

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

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

nekomura

2016/03/10 05:50

tkturbo様 何度も丁寧に対応していただき、ありがとうございます。 プロパティシートを確認したところ、私の使っているバージョンでは(2010)、「その他」タブの名前欄にinvoiceFromの名前は記載済みでした。。。 何がいけないのか…ご回答いただいているにもかかわらず解決できずすみません。
tkturbo

2016/03/10 06:16 編集

Dim ctrl As Control For Each ctrl In Me.Controls MsgBox TypeName(ctrl) & ctrl.Name Next ctrl …とかやってみて、TextBoxの「invoiceFrom」は出てきますか?
nekomura

2016/03/10 06:21

tkturbo様 お世話になっております。宣言をstringからVariantに変更したところ、nullのエラーは解消されました。 たくさんヒントをくださり、ありがとうございます。 ですが、今度は新たに If IsNull(invoiceFrom And invoiceTo) Then のところで型が一致しないとのエラーが出てしまいました。。。 調べてもヒントが見つからないので、表題をまとめなおして、再度質問してみます。 ありがとうございました。
nekomura

2016/03/10 06:25

tkturbo様 入れ違いのコメントで失礼いたしました。 下記コード、ためさせていただきました! うまくinvoiceFromは出てきました。 こういった調べ方を知らなかったので、とても勉強になりました。 ありがとうございます。 >Dim ctrl As Control For Each ctrl In Me.Controls MsgBox TypeName(ctrl) & ctrl.Name Next ctrl
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問