エクセル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も見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
【excelVBA】Findメソッドで検索対象を複数列
Excel(エクセル)
-
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
-
4
別のシートから値を取得するとき
Visual Basic(VBA)
-
5
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
6
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
7
Excel VBA:フォーム←→セルのアクティブ切り替え
Excel(エクセル)
-
8
EXCEL VBAのユーザーフォームに引数を渡す方法について
Excel(エクセル)
-
9
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
10
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
11
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
12
Excelに埋め込んだVBAのプログラムが消えた。
その他(Microsoft Office)
-
13
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
14
VBA データ(特定値)のある最終行を取得したい
Excel(エクセル)
-
15
マクロの「Rangeメソッドは失敗しました’Globalオブジェクト」エラーの解決方法について
Excel(エクセル)
-
16
2画面表示でのVBAのボタン押下後のform表示の位置
Excel(エクセル)
-
17
excel VBA ユーザーフォームを消すとTextBoxから反映させたセルの値も戻ってしまう
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
mainメソッドのthrows節で設定...
-
onClickで関数呼出し後に、結果...
-
Labelコントロールに数字を代入...
-
final修飾子を使っているのに、...
-
Excel VBA でExcelを終了したい...
-
引数で日付を2つ与え、その間の...
-
ExcelのxlDialogInsertPictureで。
-
DataGridViewの行追加について。
-
Excel VBA シェイプの原型のサ...
-
Refreshメソッドの使い方
-
javascriptからjavaを呼び出したい
-
c#でVBのcall的役割を果たすコ...
-
エクセルVBAにおけるON TIMEメ...
-
【sendkeysメソッドが動かずに...
-
FEM解析の読み方は?
-
配列のメソッド
-
{}の意味は
-
処理内容がほぼ同じメソッドの...
-
VBAでSaveAs使用し、指定してい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
Labelコントロールに数字を代入...
-
final修飾子を使っているのに、...
-
エクセルVBAにおけるON TIMEメ...
-
コマンドプロンプト実行後に画...
-
mainメソッドのthrows節で設定...
-
DataGridViewでセルクリックイ...
-
javascriptからjavaを呼び出したい
-
VBPをダブルクリックするとたま...
-
onClickで関数呼出し後に、結果...
-
ExcelのxlDialogInsertPictureで。
-
Refreshメソッドの使い方
-
JSPで<SELECT>の中にDBから持っ...
-
【sendkeysメソッドが動かずに...
-
ウィンドウを最前面にできません
-
(String args[])というメッソ...
-
C# 演算 最大値 最小値 表現の仕方
-
Excel VBA シェイプの原型のサ...
-
VB.netで、シリアル通信のタイ...
-
boolean型のフィールドとゲッタ...
おすすめ情報