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

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

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

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

Access

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

Q&A

解決済

1回答

1426閲覧

文字列の比較モードについて教えてください。

u_zu

総合スコア53

VBA

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

Access

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

0グッド

0クリップ

投稿2022/10/25 14:08

VBAで文字列の比較をしています(EXCELとACCESS)

EXCELではOption Compare ステートメントの指定がない場合、バイナリモードが既定値、
ACCESSではOption Compare Databaseと最初から記載されており、実質的にテキストモードと認識しております。

質問1
Sub Test1() で二つの例を挙げました、「ひらがなの全角」と「半角カナ」を比較しているのですが、
その文字によって結果に違いがあるのはどうでしてでしょう。。。
「あ」と「え」で違っています。
何か法則のようなものがあったら教えてください。

質問2
Sub Test2() の方①と②で結果が異なる理由も、わかりません。
ただ、質問1が解決したら自動的に質問2も解決するような気がするのですが。。。

よろしくお願いします。

```ここに言語名を入力 EXCEL VBA   Sub Test1()  ’EXCELで宣言セクションに Option Compare Text を記載している Debug.Print "え" = "ェ"  ’Falseが返る Debug.Print "あ" = "ア"  ’Trueが返る    End Sub ’--------------------------------------------------------------------------------------------------- Sub Test2()  ’こちらはACCESSのVBEでコーディング   Option Compare Database と最初から記載されている   Debug.Print InStr("MiAia", "a")  '3が返る。大文字、小文字を区別していない(vbTextCompareと同じ) Debug.Print InStr("わたしっつ", "つ")  '5が返る。「つ」と「っ」は区別している。 Debug.Print InStr("あいうえエ", "エ")  '4が返る。 全角カタカナとひらがなの区別なし。 ① Debug.Print InStr("あいうえェ", "ェ")  '5が返る。 ひらがなと半角カナは区別している。。。。②                       End Sub

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

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

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

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

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

guest

回答1

0

ベストアンサー

Debug.Print "え" = "ェ"  ’Falseが返る

こちらですが、カタカナの方は普通のではなく小書きのです。

投稿2022/10/25 14:11

maisumakun

総合スコア146543

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

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

u_zu

2022/10/25 14:25

maisumakunさん ありがとうございます。半角のエ と小書きのェ って違うんですか? 初歩的な話で申し訳ないのですが、半角のア を入力したときと区別を意識せずにいたものですから。。。 そもそも「小書き」という言葉を初めて耳にしました。。。
otn

2022/10/25 16:36

> そもそも「小書き」という言葉を初めて耳にしました。。。 「ジェット機」とかの2文字目ですね。 お書きの物は半角ですら無くて全角の小さい「ェ」です。 半角の「エ」ならTRUEですね。半角の小さい「ェ」もFALSE。
pig_vba

2022/10/26 02:06 編集

ASCIIコード上ではひらがなの小書きは「別の文字」として個別に文字コードを設定されています。(アルファベットと違い、すべての文字に対応する小書きが存在するわけではないため) 例:)ASCIIコードでは"え""ぇ"は3048 3047となります。 テキストモードでかな/カナ相互補完が効くのは特定の係数で対応しているからですね。 ("A"+0x20="a") 文字コードに興味を持たれましたら以下のサイト(ASCIIコード変換機)で色々打ち込んでみてはいかがでしょう。結構楽しいですよ http://web-apps.nbookmark.com/ascii-converter/
u_zu

2022/10/26 02:06

otnさん、pig_vbaさん どうもありがとうございます。 今回、データのクレンジング?のようなことをしようとしていて、このような質問をしました、 「半角と全角」、「ひらがなとカタカナ」の区別などはStrConv関数などで処理できそうですが、 例えば、入力者が「半角のア」 を間違って「全角で小書きのァ」と誤って記載した場合などは、 どのように発見(把握?)したらよろしいのでしょうか?  できれば市販の書籍に載っているような関数(その組み合わせでも)で把握したいのですが。。。 よろしくお願いします。
pig_vba

2022/10/26 02:13

残念ながら公式の関数には用意されていないので、ユーザー関数として作ることになります。 この手のよくある問題は大抵先駆者が作ってくれてるのでありがたくパクリましょう。 https://www.relief.jp/docs/002223.html その例題ですと、「一旦すべて全角にする→上記サイトの関数走らせる→すべて半角に戻す」で対応可能かと。
u_zu

2022/10/26 02:20

pig‗vbaさん どうもありがとうございます。大変参考になりました。
otn

2022/10/26 06:55

OCRで読んだデータなのですかね。それはクレンジングが大変そうです。 どちらかが正しくて、他方が間違いと決まっていれば、簡単ですけど。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問