![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
Excelでセルに任意の文字列をペーストします。そのセルは別のブックにリンクしているのでペーストする度にリンク先のセルでは文字列が更新されます。リンク先のブックにはワークシートが10あっていづれかのシートのA列にその文字列がある事になっています。更新された文字列を検索する作業を繰り返すのでマクロで組み込もうと思ったのですがFIND関数にしても、VBでCell.Find(What:=....と書くにも参照する文字列を直接指定してやらないと動きません。参照する文字列が相対的に変化するので「特定のセルの中に入力された文字列」を参照してブック内を検索したいということなのですが、実現するにはどうしたらようでしょうか?と質問して
moji = "B1"
Set c = Range("A:A").Find(What:=moji, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then c.Select
というコードをしめしていただきました。このままだと検索対象がRangeオブジェクトになっているのでActivesheet上でしか検索がかからないのでCellsにすればブック内のすべてのシートに検索がかけられるかな?と思っていたのですがエラーがでます。ブック内を検索範囲に入れるためにはどうしたらよいでしょうか?
No.1ベストアンサー
- 回答日時:
全てのワークシートを検索するのなら、
Sub test()
Dim ws As Worksheet
Dim moji As String
Dim c As Range
moji = "B1"
For Each ws In Worksheets
With ws
Set c = .Range("A:A").Find(What:=moji, After:=.Range("A" & Rows.Count), _
LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
.Activate
c.Select
Exit Sub
End If
End With
Next
MsgBox "なかったよ"
End Sub
順番に見ていくしかないのでは。
この回答への補足
ありがとうございます。順番に見ていくしかないという一言が一番利きました(笑い)。午後の間、格闘してみましたが
Sub test()
moji = Sheet1("B1")
Set c = Sheet1.Range("A:A").Find(What:=moji, LookIn:=xlValues, LookAt:=xlWhole)
Set b = Sheet2.Range("A:A").Find(What:=moji, LookIn:=xlValues, LookAt:=xlWhole)
Set d = Sheet3.Range("A:A").Find(What:=moji, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then c.Select
ElseIf Not b Is Nothing Then b.Select
ElseIf Not d Is Nothing Then d.Select
End If
End Sub
というようにSheet1のB1を検索文字欄に固定して検索項目を分け、それぞれを条件つきで表示してはどうかと思いました。が、Elseに対応する
Ifがないとエラーが出ます。なぜなんでしょうか?
No.2
- 回答日時:
moji = Sheet1("B1")
ここも変なのですが。
If Not c Is Nothing Then c.Select
ElseIf Not b Is Nothing Then b.Select
ElseIf Not d Is Nothing Then d.Select
End If
1行目の
If Not c Is Nothing Then c.Select
でIF文は終了しています。なので以降のELSEIFに対してのIFが見つからないのです。
(1行で終わるのであれば書き方は問題ないですが、以降にELSEがあるので問題になります。)
If Not c Is Nothing Then
c.Select
ElseIf Not b Is Nothing Then
b.Select
ElseIf Not d Is Nothing Then
d.Select
End If
と言うように改行すれば解決かと。
たびたびありがとうございます。
>moji = Sheet1("B1")
ここも変なのですが。
確かにトンちきなことを書いてますね。
この時間までいろいろ試してエラー400と戦いながら(笑)
Sub test()
'
'test macro
'
Dim moji As String
Dim c As Range
Dim b As Range
Dim d As Range
moji = Sheet1.Range("B1")
Set c = Sheet1.Range("A:A").Find(What:=moji, LookIn:=xlValues, LookAt:=xlWhole)
Set b = Sheet2.Range("A:A").Find(What:=moji, LookIn:=xlValues, LookAt:=xlWhole)
Set d = Sheet3.Range("A:A").Find(What:=moji, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
Sheet1.Select
c.Select
ElseIf Not b Is Nothing Then
Sheet2.Select
b.Select
ElseIf Not d Is Nothing Then
Sheet3.Select
d.Select
End If
End Sub
となりました。これだと指定したシート範囲内にsheet1のB1に入力した文字列を検索できます。朝から四苦八苦していましたが今日中に目処が立ったのもご指導のおかげです。今後は改行の効果についても頭に入れて勉強します。ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Excel(エクセル) エクセルの数式について ブック内の別シートの値の含まれたセルの個数を集計したい 全シート一覧のシート 1 2022/07/21 19:28
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでブックを非表示で開いて処...
-
エクセルを共有するとPCによっ...
-
エクセルの関数 ENTERを押...
-
Excelで複数ブックの同一セルに...
-
他のブックのシートを今のブッ...
-
複数ファイルから特定シートの...
-
Excel起動時に特定のワークシー...
-
Excelで拡張子の後に数字が……何...
-
Excel2007:ふりがな機能で、ひ...
-
Excel 同ブックの他シートを参...
-
エクセルの中で2つ以上のブッ...
-
【VBA】特定シート 名前編集・...
-
VBAで、同一フォルダ内にある複...
-
エクセルの複数シートをCSV...
-
エクセルでブックを比較するや...
-
エクセル:ほかのデータソース...
-
エクセル A列と別ブックにある...
-
WorkBooksをオープンさせずにシ...
-
フォルダ内の複数ファイルから...
-
beckyに届いたメールをエクセル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
エクセルを共有するとPCによっ...
-
エクセルで参照しているデータ...
-
WorkBooksをオープンさせずにシ...
-
Excel(2010)のフィルターが保...
-
フォルダ内の複数ファイルから...
-
Excelでブックの共有を掛けると...
-
複数ファイルから特定シートの...
-
エクセルで「ディスクがいっぱ...
-
Excelで複数ブックの同一セルに...
-
エクセルファイルを開かずにpdf...
-
エクセルで別ブックをバックグ...
-
エクセルで50行ごとに区切った...
-
外部ブック参照が#REF!になって...
-
エクセル2016です。「ブッ...
-
エクセルの関数について教えて...
-
エクセルシートの一部を送りたい
-
ブックのピボットを別ブックに...
-
Excel起動時に特定のワークシー...
おすすめ情報