Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1035 / 13644 ツリー ←次へ | 前へ→

【76682】文字数の多い検索ワードから少ない文字数を検索する場合 さとちぃ 15/2/26(木) 11:54 質問[未読]
【76690】Re:文字数の多い検索ワードから少ない文字... さとちぃ 15/2/27(金) 11:21 質問[未読]
【76691】Re:文字数の多い検索ワードから少ない文字... kanabun 15/2/27(金) 11:55 発言[未読]
【76695】Re:文字数の多い検索ワードから少ない文字... さとちぃ 15/2/27(金) 14:21 お礼[未読]

【76682】文字数の多い検索ワードから少ない文字数...
質問  さとちぃ  - 15/2/26(木) 11:54 -

引用なし
パスワード
   お世話になっております。
下記のような作業をVBAにて設定したいのですが、教えていただけませんでしょうか?

(1)シート”名刺情報”の会社名の任意のセルを選択
(2)シート"拠点情報"に移動し、アクティブセルの会社名を選択し、表示

(困っていること)
株式会社XYZの文字を読み込んだ場合、XYZの検索をあいまい検索*の設定にて行いましたが
うまく検索できません。

(対応策)
その対策として、条件式を設定し、株式会社と入った場合は株式会社という表現をなくすため
置換し、その状態で検索する。
海外の会社名もあり、株式会社という表現がない場合はそのまま検索する。

といった形で考えておりますが、他に良い方法がありますでしょうか?

シート”名刺情報”

   A       B     C     D
1  会社名   検索ボタン  部署   氏名
2 株式会社XYZ  ボタン   営業部  田中歳三
3 株式会社ZD   ボタン   営業部  新見悟

シート”拠点情報”

   A       B     C     D
1  会社名    拠点名   部署   氏名
2 株式会社XYZ   愛知   営業部  田中歳三
3 株式会社ZD    岐阜   営業部  新見悟

【76690】Re:文字数の多い検索ワードから少ない文...
質問  さとちぃ  - 15/2/27(金) 11:21 -

引用なし
パスワード
   自分で以下のように考えてみました。

置換については、マクロのコピーにて確認しています。
実際これで検索してみましたが、うまくいきません・・・。


Sub 名刺情報からの拠点情報検索()
  Dim kaisyamei As String
  Set kaisyamei = "*" & ActiveCell & "*"
  
  'アクティブセルの値から株式会社の文字をなくす(置換)
  ActiveCell.Replace What:="株式会社", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
  Cells.Find(What:="株式会社", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False, MatchByte:=False, SearchFormat:=False).Activate

  '拠点情報に移動し、株式会社をなくしたワードで検索
  Worksheets("拠点情報").Select
  ActiveSheet.Range("A10:A1000").AutoFilter Field:=1, Criteria1:=kaisyamei
  End Sub
  

【76691】Re:文字数の多い検索ワードから少ない文...
発言  kanabun  - 15/2/27(金) 11:55 -

引用なし
パスワード
   ▼さとちぃ さん:

>Sub 名刺情報からの拠点情報検索()
>  Dim kaisyamei As String
>  Set kaisyamei = "*" & ActiveCell & "*"

↑これだと、 ActiveCellの値が「ABC株式会社」だったとすると、
文字列変数kaisyamei には 「*ABC株式会社*」が入っていることになります。
  
そのあとで、↓ActiveCellの値から"株式会社"Removeしても、、、

>  'アクティブセルの値から株式会社の文字をなくす(置換)
>  ActiveCell.Replace What:="株式会社", Replacement:="", LookAt:=xlPart, _
>    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
>    ReplaceFormat:=False


後の祭りです。イミディエイト・ウィンドウで ? kaisyamei とやって kaisyamei に
何が入っているか、確認してみてください。

>  '拠点情報に移動し、株式会社をなくしたワードで検索
>  Worksheets("拠点情報").Select
>  ActiveSheet.Range("A10:A1000").AutoFilter Field:=1, Criteria1:=kaisyamei


Replaceメソッドでなく Replace関数を使えばいいのでは?

Dim s as string
s = ActiveCell.Value
s = "*" & Replace(s, "株式会社", "") & "*"

Worksheets("拠点情報").Range("A10:A1000").AutoFilter Field:=1, Criteria1:=s

【76695】Re:文字数の多い検索ワードから少ない文...
お礼  さとちぃ  - 15/2/27(金) 14:21 -

引用なし
パスワード
   KANABUN様

さとちぃです。
今回もいろいろと教えていただきましてありがとうございました。

アクティブセルの設定がまずかったのですね・・・。
大変勉強になりました。

本当にありがとうございました。

1035 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free