
エクセルVBAで住所録を作っています。
住所録で下記のようなコードを書いて、キーワード検索をさせるようにしているのですが、『*丁目』や番地に半角英数を使っています。
全角で数字を入力しても検索されるようなコードの書き方はあるのでしょうか?
宜しくお願いします。
Sub 住所検索()
ans = InputBox("住所を入力してください")
With ActiveSheet
If .AutoFilterMode Then 'オートフィルタモードがオンなら
.AutoFilterMode = False 'リセットする
End If
.Range("A1:IV1").AutoFilter 'オートフィルタモードをセット
.Range("A1:IV1").AutoFilter Field:=4, Criteria1:="=*" & ans & "*" '4つ目のフィルターに検索文字
End With
End Sub
No.1ベストアンサー
- 回答日時:
StrConv関数
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/f …
ans = InputBox("住所を入力してください")
ans = StrConv(ans,vbNarrow) '←追加
With ActiveSheet
変数ansに含まれる”半角に出来る全角文字”を半角文字に変換しておくとか?
No.5
- 回答日時:
> この場合はカタカナや英数字は半角で書いておかなければならないのでしょうか?
え?
ans = StrConv(ans, vbNarrow)
って入れたことはInputboxに入力された値で半角に出来るものはすべて半角としてansに代入して、そのansで検索してるんだから当然でしょ?
だからNo2で住所のカナは全角があるんじゃないですか、だったら数字だけを半角化する方法がありますよと書いたのです。
ありがとうございます。
ans = StrConv(ans, vbNarrow)
の意味をよく理解せずに使おうとしていました。
問題のB列だけ
ans = StrConv(ans, vbWide)
で書いたらできました。
お手数掛けてすみません。
ありがとうございました。
No.4
- 回答日時:
merlionXXです。
> B列のみ『ans = StrConv(ans, vbNarrow)』を入れるとカタカナ表記のものが全角半角共、検索されなくなります。
Sub 顧客名検索()
ans = InputBox("顧客名を入力してください")
ans = StrConv(ans, vbNarrow)
With ActiveSheet
If .AutoFilterMode Then 'オートフィルタモードがオンなら
.AutoFilterMode = False 'リセットする
End If
.Range("A1:IV1").AutoFilter 'オートフィルタモードをセット
.Range("A1:IV1").AutoFilter Field:=2, Criteria1:="=*" & ans & "*" '2つ目のフィルターに検索文字
End With
End Sub
としたのですね?ならば、インプットボックスにカタカナを全角で入れようが半角で入れようが対象の半角カタカナを検索すると思いますが。
> カタカナ検索した場合、対象項目がないことになってしまいます
住所録B列のカタカナが全角で書かれていたのではないでしょか?
この回答への補足
>住所録B列のカタカナが全角で書かれていたのではないでしょか?
そのとおりです。他の列はカタカナは全て半角で入力しているのですが、B列のみは全角で入力しています。
この場合はカタカナや英数字は半角で書いておかなければならないのでしょうか?
No.3
- 回答日時:
merlionXXです。
ans = Replace(ans, Right(StrConv(Str(i), vbWide), 1), Right(Str(i), 1)) は
ans = Replace(ans, StrConv(i, vbWide), i)
だけでもいけますね、失礼しました。
この回答への補足
回答ありがとうございます。
みんなが使えるようにするため、どんな入力の仕方でも検索できるようにしたかったので、n-junさんの回答を使わせていただいています。
数字のみの場合はこのような方法もあるのですね。
勉強になりました。
ここでひとつ問題が起こったのですが、
今、A列(番号)、B列(氏名)、C列(フリガナ)、D列(住所)、E列(郵便番号)、F列(電話番号)、G列(備考)、H列以降(補足事項)というふうに作っています。
全て全角半角問わず、検索できるように同じようにコードを入力したのですが、B列のみ『ans = StrConv(ans, vbNarrow)』を入れるとカタカナ表記のものが全角半角共、検索されなくなります。
どうしてでしょうか?
ちなみにB列部分の元のコードは、
Sub 顧客名検索()
ans = InputBox("顧客名を入力してください")
With ActiveSheet
If .AutoFilterMode Then 'オートフィルタモードがオンなら
.AutoFilterMode = False 'リセットする
End If
.Range("A1:IV1").AutoFilter 'オートフィルタモードをセット
.Range("A1:IV1").AutoFilter Field:=2, Criteria1:="=*" & ans & "*" '2つ目のフィルターに検索文字
End With
End Sub
で、3行目に『ans = StrConv(ans, vbNarrow)』を入れると、カタカナ検索した場合、対象項目がないことになってしまいます。
教えてください。
No.2
- 回答日時:
yunako0517さんこんにちは、merlionXXです。
マンション名等、住所にもカタカナが使われることが多々あると思います。
全角のカタカナはそのままにして数字のみ半角にしたいのなら
ans = InputBox("住所を入力してください")
For i = 0 To 9
ans = Replace(ans, Right(StrConv(Str(i), vbWide), 1), Right(Str(i), 1)) '全角数字のみ半角に置換
Next i
With ActiveSheet
以下略
で出来ると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
半角の×(かける)は?
-
EXCELで、セル内の半角カ...
-
半角の『°(単位の度)』
-
メールアドレスの上ハイフン入...
-
EXCELの文字列操作で文字数不足...
-
Wordマクロでテキストボックス...
-
℃の半角表示
-
エクセルvba カタカナは全角、...
-
半角スペース
-
テプラは半角数字が使えますか?
-
ビジネスの文書における、数字...
-
EXCEL95 VLOOKUP関数で半角と全角
-
隅付き括弧に半角はありますか...
-
問2 次の文中の空欄にあてはま...
-
契約書や 公文書・私文書などに...
-
エクセル関数で文字列の中のス...
-
半角αを全角αにしたい
-
エクセルで 全角の空白を含む...
-
【VBA】ファイルパスに半角スペ...
-
excelで文字数をスペースを除い...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角の×(かける)は?
-
Excel 文字列の中から数字だけ...
-
半角の『°(単位の度)』
-
℃の半角表示
-
契約書や 公文書・私文書などに...
-
メールアドレスの上ハイフン入...
-
問2 次の文中の空欄にあてはま...
-
EXCELの文字列操作で文字数不足...
-
エクセル関数で文字列の中のス...
-
半角スペース
-
EXCELで、セル内の半角カ...
-
EXCEL95 VLOOKUP関数で半角と全角
-
テプラは半角数字が使えますか?
-
ビジネスの文書における、数字...
-
1, (1),(1)の使い分け
-
【VBA】ファイルパスに半角スペ...
-
エクセルで、JIS関数、ASC関数...
-
ヘッダー(フッター)の全角・...
-
エクセルで 全角の空白を含む...
-
Excel2016 検索の窓を常時表示...
おすすめ情報