Excel VBA質問箱 IV

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

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


1009 / 13645 ツリー ←次へ | 前へ→

【76807】検索ワードを入力して検索する時に、ある条件の文字にて検索するとエラー さとちぃ 15/3/17(火) 16:38 質問[未読]
【76808】Re:検索ワードを入力して検索する時に、あ... β 15/3/17(火) 17:07 発言[未読]
【76810】Re:検索ワードを入力して検索する時に、あ... マナ 15/3/17(火) 22:19 発言[未読]
【76811】Re:検索ワードを入力して検索する時に、あ... マナ 15/3/17(火) 22:30 発言[未読]
【76812】Re:検索ワードを入力して検索する時に、あ... β 15/3/18(水) 5:47 発言[未読]
【76819】Re:検索ワードを入力して検索する時に、あ... さとちぃ 15/3/18(水) 14:01 質問[未読]
【76814】Re:検索ワードを入力して検索する時に、あ... β 15/3/18(水) 8:22 発言[未読]
【76903】Re:検索ワードを入力して検索する時に、あ... さとちぃ 15/4/8(水) 11:23 お礼[未読]

【76807】検索ワードを入力して検索する時に、ある...
質問  さとちぃ  - 15/3/17(火) 16:38 -

引用なし
パスワード
   シートにある住所、氏名、部署といった情報のある表にて、検索ワードを打ち込んで検索するプログラムを
作成しているのですが、以下の様な問題があり教えていただけませんでしょうか?

(問題点)
”業務部”の”務”といった、文字の間にある文字で、かつ、1文字で検索した場合

Range(Join(FoundAddr, ",")).Select にて

エラー1004 RANGEメソッドは失敗しました。GLOBALオブジェクト

となります。

どのように直せばいいか、教えていただけませんでしょうか?


Sub 検索ワードを入力して検索()

  Dim Target As String
  Dim FoundCell As Range, SearchArea As Range
  Dim Addr As String
  Dim FoundAddr() As String
  Dim i As Long
  
  Target = Application.InputBox("検索ワードを入力してください", "検索", Type:=2)
  If Target = "False" Then Exit Sub
  
  Set SearchArea = ActiveSheet.UsedRange
  
  Set FoundCell = SearchArea.Find(What:=Target, LookIn:=xlValues, _
          LookAt:=xlPart, MatchCase:=False, MatchByte:=False)
  If FoundCell Is Nothing Then Exit Sub
  Addr = FoundCell.Address
  
  Do
    ReDim Preserve FoundAddr(i)
    FoundAddr(i) = FoundCell.Address
    Set FoundCell = SearchArea.FindNext(After:=FoundCell)
    i = i + 1
    If FoundCell Is Nothing Then Exit Do
  Loop Until FoundCell.Address = Addr
  
  Range(Join(FoundAddr, ",")).Select 
  MsgBox Range(Join(FoundAddr, ",")).Count & "件見つかりました" '件数表示
End Sub

【76808】Re:検索ワードを入力して検索する時に、...
発言  β  - 15/3/17(火) 17:07 -

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

こちらで、シートに適当に 総務部 とか 税務署 とか 用務員さんとかいれて
アップされたコードを動かしましたが、エラーにはなりません。

1004 エラーですから Range(●) この中身の●が不適切だということでしょうけど
エラーになった時点で、ローカルウィンドウを表示して、配列 FoundAddr の各要素が
どうなっているか調べてみてはいかがですか?

ところで、

h tp://www.vbalab.sakura.ne.jp/vbaqa/c-board.cgi?cmd=ntr;tree=76794;id=excel

こちらのほうは、その後、いかがですか?
ichinoseさんからもレスありますよ。

【76810】Re:検索ワードを入力して検索する時に、...
発言  マナ  - 15/3/17(火) 22:19 -

引用なし
パスワード
   総務部が100件とか、沢山検索されると
Range(256文字以上)となってエラーがでるかも。

【76811】Re:検索ワードを入力して検索する時に、...
発言  マナ  - 15/3/17(火) 22:30 -

引用なし
パスワード
   もし。そうであれば、↓などが参考になるでしょうか。

ht tp://officetanaka.net/excel/vba/tips/tips123b.htm

【76812】Re:検索ワードを入力して検索する時に、...
発言  β  - 15/3/18(水) 5:47 -

引用なし
パスワード
   ▼マナ さん:
>総務部が100件とか、沢山検索されると
>Range(256文字以上)となってエラーがでるかも。

あぁ、Range(●) の ●の文字数が多すぎるんですね。

たとえば以下とか。

Sub 検索ワードを入力して検索2()

  Dim Target As String
  Dim FoundCell As Range, SearchArea As Range
  Dim Addr As String
  Dim i As Long
  Dim sAddr As Range
  
   Target = Application.InputBox("検索ワードを入力してください", "検索", Type:=2)
  If Target = "False" Then Exit Sub
 
   Set SearchArea = ActiveSheet.UsedRange
 
   Set FoundCell = SearchArea.Find(What:=Target, LookIn:=xlValues, _
          LookAt:=xlPart, MatchCase:=False, MatchByte:=False)
  If FoundCell Is Nothing Then Exit Sub
  Addr = FoundCell.Address
 
   Do
    If sAddr Is Nothing Then
      Set sAddr = FoundCell
    Else
      Set sAddr = Union(sAddr, FoundCell)
    End If
    Set FoundCell = SearchArea.FindNext(After:=FoundCell)
    i = i + 1
    If FoundCell Is Nothing Then Exit Do
  Loop Until FoundCell.Address = Addr
 
   sAddr.Select
   MsgBox sAddr.Count & "件見つかりました" '件数表示
End Sub

【76814】Re:検索ワードを入力して検索する時に、...
発言  β  - 15/3/18(水) 8:22 -

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

マナさんご紹介のURLに加え以下も参考として。

 ht ps://support.office.com/ja-jp/article/Excel-%e3%81%ae%e4%bb%95%e6%a7%98%e3%81%a8%e5%88%b6%e9%99%90
-1672b34d-7043-467e-8e27-269d656771c3?ui=ja-JP&rs=ja-JP&ad=JP

 ht p://www.relief.jp/itnote/archives/001844.php

 ht p://www.nurs.or.jp/~ppoy/access/excel/xlET033.html

隣接していないセルを一度に選択できる数は2007以降は2,147,483,648 セル
ですので Union連結でも大丈夫でしょう。
(2003は8192だったかも?)

【76819】Re:検索ワードを入力して検索する時に、...
質問  さとちぃ  - 15/3/18(水) 14:01 -

引用なし
パスワード
   さとちぃです。
この度はいろいろと教えていただきありがとうございます。

無事問題解決致しました。
関連のリンク、大変参考になりました。
本当にありがとうございました。

【76903】Re:検索ワードを入力して検索する時に、...
お礼  さとちぃ  - 15/4/8(水) 11:23 -

引用なし
パスワード
   β様

さとちぃです。
大変遅くなりましたが、本件、無事解決いたしました。
お礼を申し上げておらず、大変失礼いたしました。

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