🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

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

Access

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

Q&A

解決済

2回答

1916閲覧

AccessVBAでテーブルのフィールドと文字列を比較してエラー処理をしたい

koH_dr7

総合スコア7

VBA

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

Access

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

0グッド

0クリップ

投稿2019/12/05 06:02

AccessVBAでテーブルのフィールドと文字列を比較してエラー処理をしたい

最近中途で他業種からエンジニアに転職したものです。
現在AccessでVBAの業務ソフトの改良をしております。
初歩的でお恥ずかしいのですが、質問がわかりづらかったら申し訳ありません。

テーブル1の3列目が「名前」の項目なのですが、これを上から順に特定の文字列と比較して、一致しているものがなければエラーを吐かせたいのですが、VBAで参考になるページやコード例等あれば教えていただきたいです。

1時間近く調べており、やりたい動きがどうにも見つからず困っています。
StrCompで比較するにも、テーブルの3列目の上から値を比較する、といったやり方が見つからず、書き方がわからず、右往左往しています。

どうか先輩方に助けていただきたいです、よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

テーブル1の3列目が「名前」の項目なのですが、これを上から順に特定の文字列と比較して、一致しているものがなければエラーを吐かせたいのですが、VBAで参考になるページやコード例等あれば教えていただきたいです。

vba

1Dim keyWord As String 2keyWord = "特定の文字列" 3If IsNull(DLookup("名前","テーブル1","名前='" & keyWord & "'")) Then 4 MsgBox "名前に'" & keyWord & "'と一致しているものがありません。" 5End If

あるいは、

vba

1Dim keyWord As String 2keyWord = "特定の文字列" 3If DCount("名前","テーブル1","名前='" & keyWord & "'") = 0 Then 4 MsgBox "名前に'" & keyWord & "'と一致しているものがありません。" 5End If

質問者さんのAccessのスキルレベルが分からないですが、Access初学者がAccessについて学習するとき、下記のような順序がいいと思います。

レベル1
テーフル、クエリ、フォーム、レポートなどのオブジェクトについての基本的な設計、使い方。
テーブルの設計に関しては、データベース設計の基本の学習も必要。
クエリに関してはSQLの知識があった方かいいが、ビジュアルで設計できるのでなくてもOK。

レベル2
VBAの標準関数、さらにAccessの標準関数の理解。
これらの関数およびレベル1のオブジェクトをVBAで使いこなすためのコーディングテクニック。
(上記の回答はこのレベルの回答です。)

レベル3
VBAからDAOあるいはADOを利用してのデータ操作。SQLについての理解も必要になります。

投稿2019/12/06 00:57

編集2019/12/06 01:14
hatena19

総合スコア34073

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

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

koH_dr7

2019/12/09 02:16

回答ありがとうございます! おかげでなんとかなりました。 hatena19様のおっしゃる「レベル1」をほぼ触らないまま、見様見真似でレベル2、レベル3の業務をしているような状況です…精進いたします。 また質問することもあるかもしれませんがどうかお力をお貸しいただけたら幸いです^^
guest

0

以下の内容などを読み解いて理解しなければならないレベルです。
AccessVBA(ADO or DAO)でSQLを書いてレコードを抽出・フィールドを取り出す

VBAから始められるのは、クエリーなどがまだ理解できていないからだと思いますが、
VBAで直接テーブルにアクセスするのは、それがクエリーであっても変わらず、単に名前が違うレベルです。

クエリーやSQLの学習をする事こそが効率的なVBAの記述に繋がりますので、嫌がらずに学習して下さいね。

投稿2019/12/05 06:39

sazi

総合スコア25327

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問