
エクセルVBAにてFIND関数を使って、
文字列検索⇒コピー&ペーストのマクロを作成しているのですが、
どうしても、先頭文字列から検索をする方法がわかりません。
たとえば、
あいうえお
いうえおあ
おあいうえ
えおあいう
という文字列から「あいう*」を検索したい場合、
1行目だけを抽出したいのですが、
1,3,4行目が抽出されてしまいます。
find関数では先頭文字からの検索はできないのでしょうか?
もし、不可能な場合、先頭文字からの検索を行うにはどのように行えばよいでしょうか?
アドバイス、よろしくお願いいたします。
No.6ベストアンサー
- 回答日時:
#4です。
ちょっと申し訳ありません。忘れていたことがありました。以前に同じような件で回答していたのに・・・。
「Excelが壊れている・・」なんて撤回してお詫びします。
findの検索条件は、以前に検索した条件をひきつぐのです。だから、#5さんの言うように引数を省略すると以前の検索条件が使われるので、結果が変わってきます。
私のコードは、
Find("あいう*", lookat:=xlWhole)
で検索した後なので、Find("あいう*")で検索できるのです。あなたができないというのは、以前に、
lookat:=xlPart
で検索されたのが残っているからでしょう。
なおこれは、、VBAでなくてもシートの検索で「検索と置換」のダイアログで設定したものも反映します。
findのヘルプです。
引数 LookIn、LookAt、SearchOrder、および MatchByte の設定は、このメソッドが使われるたびに保存されます。次にこのメソッドを使うときに、これらの引数の指定を省略すると、保存された設定が使われます。これらの引数の設定を変更すると、[検索と置換] ダイアログ ボックスに表示される設定が変わります。また、[検索と置換] ダイアログ ボックスで設定を変更すると、保存されている設定が変わります。このような設定の変更によって生じる問題を避けるためには、Find メソッドを使うたびに、これらの引数を明示的に指定します。
ご回答ありがとうございます。
引数を省略しているための誤動作?だったのかもしれません。
引数を省略せずに再度試してみたいと思います。
No.5
- 回答日時:
#2です。
http://www.happy2-island.com/excelsmile/smile03/ …
ワイルドカードを使って検索するプログラムの作成例
にある、
「7行目のWhatにはワイルドカード文字を使って「大*」という条件を設定しました。
1文字目が大、それ以降は何でもよいという意味です。
加えて、10行目のLookAtにはxlWholeを設定し、完全一致で検索するようにしました。」
Findメソッドでは引数を省略しすぎると問題が出るのかも?
No.4
- 回答日時:
#3です。
実際に、#3のコードを実行したのでしょうか。
セルを検索しているのではなく、セルの文字列を検索しているから、1文字目からしか検索しないと思うが。
もし、全部検索してしまうなら、そのExcelは壊れているから、あきらめなさい。
No.3
- 回答日時:
#1です。
Book全体の検索では、#1では時間がかかってダメでしょう。
For i = 1 To ActiveWorkbook.Sheets.Count
Set c = ActiveWorkbook.Sheets(i).Cells.Find("あいう*")
If Not c Is Nothing Then MsgBox c.Address
Next
で、どうでしょうね。1文字目からの「あいう・・・」しか検索されないと思うが。
この回答への補足
再度、ご回答ありがとうございます。
私も("あいう*")で可能かと思っていたのですが、実際に組んでみると
"あいう"の入っているものをすべて検索してしまいます。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) Excelでの検索結果を含む行だけを表示させたい 5 2023/03/10 17:08
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) Excelの列から検索して該当する行を別シートに転記するVBA 2 2022/12/20 09:35
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- UNIX・Linux ワイルドカードの使い方 4 2023/08/08 20:51
このQ&Aを見た人はこんなQ&Aも見ています
-
【EXCEL VBA】Range(A:A").Find(What:="キーワード")の1行目について"
Visual Basic(VBA)
-
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
-
4
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
5
VBA 見つからなかった時の処理
Excel(エクセル)
-
6
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
処理内容がほぼ同じメソッドの...
-
VBPをダブルクリックするとたま...
-
【sendkeysメソッドが動かずに...
-
Labelコントロールに数字を代入...
-
CALLされていないメソッドを見...
-
javascriptからjavaを呼び出したい
-
final修飾子を使っているのに、...
-
配列のメソッド
-
mainメソッドのthrows節で設定...
-
VBA コピーが出来ません…!
-
VB.netで、シリアル通信のタイ...
-
エクセルVBAにおけるON TIMEメ...
-
0歳児の指しゃぶりに関して
-
VBAでSaveAs使用し、指定してい...
-
JAVA言語,JSPによるクイズシス...
-
DataGridViewでセルクリックイ...
-
Excel VBA でExcelを終了したい...
-
C#.net Define文
-
コマンドプロンプト実行後に画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
DataGridViewでセルクリックイ...
-
【sendkeysメソッドが動かずに...
-
コマンドプロンプト実行後に画...
-
VBA コピーが出来ません…!
-
ウィンドウを最前面にできません
-
JSPで<SELECT>の中にDBから持っ...
-
javascriptからjavaを呼び出したい
-
VBPをダブルクリックするとたま...
-
eclipse-Tomcatでのデバッグに...
-
Application.Wait の参照設定
-
エクセルVBAにおけるON TIMEメ...
-
配列のメソッド
-
エクセルのマクロでプリンタを...
-
final修飾子を使っているのに、...
-
drawStringで文字間隔の調整
-
Excel VBA でExcelを終了したい...
-
worksheets & rows メソッドは...
-
CALLされていないメソッドを見...
-
vbaエクセルマクロ RemoveDupli...
おすすめ情報