Excel VBA質問箱 IV

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

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


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

【75031】文字列検索をするには Sugano 13/11/16(土) 18:10 質問[未読]
【75032】Re:文字列検索をするには kanabun 13/11/16(土) 19:08 発言[未読]
【75035】Re:文字列検索をするには Sugano 13/11/16(土) 22:12 質問[未読]
【75037】Re:文字列検索をするには kanabun 13/11/16(土) 23:33 発言[未読]
【75038】Re:文字列検索をするには kanabun 13/11/17(日) 8:34 発言[未読]
【75039】Re:文字列検索をするには Sugano 13/11/17(日) 11:55 質問[未読]
【75040】Re:文字列検索をするには kanabun 13/11/17(日) 16:25 発言[未読]
【75056】Re:文字列検索をするには Sugano 13/11/22(金) 21:15 お礼[未読]
【75034】Re:文字列検索をするには kanabun 13/11/16(土) 21:12 発言[未読]
【75036】Re:文字列検索をするには Sugano 13/11/16(土) 22:13 回答[未読]

【75031】文字列検索をするには
質問  Sugano  - 13/11/16(土) 18:10 -

引用なし
パスワード
    Excelブック画面にて、検索したい文字列を入力して、検索してくれることを
したいので、取りあえず以下のコードを書いて、一応正確に探してくれます。
 
 ただ、検索したい文字列は固定ではなく、毎回変わりますので、検索条件を
入力する機能を追加したいですが、その方法は分からなくて、このサイドに投稿
しました。ご伝授していただけませんか?よろしくお願いします。

Sub Sample2()
  Dim FoundCell As Range  ''またはバリアント型(Variant)とする
  Set FoundCell = Range("A1").CurrentRegion.Find(What:="あいうえお")
                             ↑可変値
  If FoundCell Is Nothing Then
    MsgBox "検索に失敗しました"
  Else
    FoundCell.Select
  End If
End Sub

【75032】Re:文字列検索をするには
発言  kanabun  - 13/11/16(土) 19:08 -

引用なし
パスワード
   ▼Sugano さん:

> ただ、検索したい文字列は固定ではなく、毎回変わりますので、検索条件を
>入力する機能を追加したいですが、その方法は分からなくて

Inputbox関数というのがありますから、これで検索ワードの入力をさせたら
どうでしょう

Sub Sample3()
  Dim ss As String
  Dim FoundCell As Range
  
  ss = InputBox("検索語")
  If StrPtr(ss) = 0& Then Exit Sub
  If Len(ss) < 1 Then Exit Sub
  
  Set FoundCell = Range("A1").CurrentRegion _
    .Find(ss, , xlValues, xlPart)
       '↑可変値
  If FoundCell Is Nothing Then
    MsgBox "検索に失敗しました"
  Else
    FoundCell.Select
  End If
End Sub

【75034】Re:文字列検索をするには
発言  kanabun  - 13/11/16(土) 21:12 -

引用なし
パスワード
   ▼Sugano さん:

ついでに、本題ではありませんが、

>  Dim FoundCell As Range  ''またはバリアント型(Variant)とする

ここのコメントの意味が分りません。
Findメソッドを使って みつかったセル(Rangeオブジェクト)への参照を格納
する変数ですから一も二もなく「Range型」の宣言でいいのでは?

【75035】Re:文字列検索をするには
質問  Sugano  - 13/11/16(土) 22:12 -

引用なし
パスワード
   kanabun さん:

ありがとうございます!
検索対象文字列はセルA2〜A****(連続配列、重複なし)のため、検索ワード入力したら、A2〜A****の順で連続探してほしいです。
どのようにやれば、できるのでしょうか?

【75036】Re:文字列検索をするには
回答  Sugano  - 13/11/16(土) 22:13 -

引用なし
パスワード
   kanabun さん:
 ご指摘の通り、間違っています。

【75037】Re:文字列検索をするには
発言  kanabun  - 13/11/16(土) 23:33 -

引用なし
パスワード
   ▼Sugano さん:
>kanabun さん:
>
> ありがとうございます!
>検索対象文字列はセルA2〜A****(連続配列、重複なし)のため、検索ワード入力したら、A2〜A****の順で連続探してほしいです。
>どのようにやれば、できるのでしょうか?


いろいろやりかたはありますが、前のコードでしたら、
  
>  Set FoundCell = Range("A1").CurrentRegion _
>    .Find(ss, , xlValues, xlPart)
>       '↑可変値



  Set FoundCell = Range("A1").CurrentRegion.Columns(1) _
    .Find(ss, , xlValues, xlPart)
       '↑可変値

とすれば、A列を上から検索します。

【75038】Re:文字列検索をするには
発言  kanabun  - 13/11/17(日) 8:34 -

引用なし
パスワード
   ▼Sugano さん:

>検索対象文字列はセルA2〜A****(連続配列、重複なし)のため、検索ワード入力したら、A2〜A****の順で連続探してほしいです。

あれ、反応がないですねぇ

> 重複なし
だから、Findは検索ワードがあるかないか、一回調べるだけでよい、と思った
のですが。。。

あと、
> 連続配列
というのは、どういう意味ですか?

・途中に空白セルがない
・データが昇順で並んでいる

後者だったら、ワークシート関数のMATCHを(-1オプションで)使うと速いです。

【75039】Re:文字列検索をするには
質問  Sugano  - 13/11/17(日) 11:55 -

引用なし
パスワード
   kanabunさん

 すいません!説明不足でした。

連続配列は、品番コード(文字列で、重複なし)です。途中に空白セルがないですが、並べ替順になっていないです。
例、
    A
1    ABCDEFG
2    GFEDCBA
・   ABCD001
・   001ABCD

【75040】Re:文字列検索をするには
発言  kanabun  - 13/11/17(日) 16:25 -

引用なし
パスワード
   ▼Sugano さん:

>連続配列は、品番コード(文字列で、重複なし)です。途中に空白セルがないですが、並べ替順になっていないです。
>例、
>    A
>1    ABCDEFG
>2    GFEDCBA
>・   ABCD001
>・   001ABCD

普通のデータですねぇ。
すでに挙げた Findメソッドか Match関数でいいとおもいます。

> 検索対象文字列はセルA2〜A****(連続配列、重複なし)のため、
> 検索ワード入力したら、A2〜A****の順で連続探してほしいです。

の意味をもういちど説明してもらえませんか?

【75056】Re:文字列検索をするには
お礼  Sugano  - 13/11/22(金) 21:15 -

引用なし
パスワード
   正しく動作してくれますので、問題解決です。

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

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