A列に名前が入力されています。
同姓同名のセルを把握し、その行の情報を取得したいと思い、下記のコードを作成しました。
しかしなぜか、行の情報が上から表示してくれず、途中の情報から表示が始まり、その後上から表示されます。
上から順に表示される様にしたいのですが、コードをご教授願えませんでしょうか。
Private Sub CommandButton1_Click()
Dim 人物名 As Range
Dim 最初に見つかった人物 As Range
Dim 結果 As Range
Set 人物名 = Cells.Find(What:="佐藤 太郎", SearchOrder:=xlByColumns) ’上から検索としてみたのですが・・・
Set 最初に見つかった人物 = 人物名
Set 結果 = 人物名
Do
Set 人物名 = Columns(1).FindNext(人物名)
If 人物名.Address = 最初に見つかった人物.Address Then
MsgBox 最初に見つかった人物.Row
Exit Do
Else
Set 結果 = 人物名
MsgBox 結果.Row
End If
Loop
End Sub
No.3ベストアンサー
- 回答日時:
No.1です。
例えばこんなデータで
行 A列
1 a
2 a
3 a
4 a
5 a
Sub megu()
Dim r As Range
Dim st As String
Set r = Range("A:A").Find("a") '無指定
If Not r Is Nothing Then
st = r.Address
Do
Debug.Print r.Row
Set r = Range("A:A").FindNext(r)
If r.Address = st Then Exit Do
Loop
End If
Set r = Nothing
Debug.Print "---"
Set r = Range("A:A").Find("a", After:=Range("A" & Rows.Count)) '指定あり
If Not r Is Nothing Then
st = r.Address
Do
Debug.Print r.Row
Set r = Range("A:A").FindNext(r)
If r.Address = st Then Exit Do
Loop
End If
Set r = Nothing
End Sub
結果:
2
3
4
5
1
---
1
2
3
4
5
この違いって事ですよね?
そうです。これが実現したかった事です。「FindNext」を使うのがポイントだったんですね。調べたら「FindNextメソッドは引数で指定したセルの直後のセルから検索」と書いてありました。
ご指導ありがとう御座いました。
No.2
- 回答日時:
こんにちは
多分仕様を勘違いなさっているものと思います。
FINDメソッドの場合、afterが無指定の場合は範囲の最初のセルとみなしますので、最初のセルがヒットしている場合は、「2番目のヒットが最初にヒット」することになります。
最初のセルがヒットしていない場合は、実質的に「最初のセルがヒット」することになるので、多分、ご期待通りになるものと思います。
https://docs.microsoft.com/ja-jp/office/vba/api/ …
※ どうせなら直感的な仕様にして欲しいものですが、そこがM$さんお得意の「仕様です」なので・・・
No.1
- 回答日時:
>Set 人物名 = Cells.Find(What:="佐藤 太郎", SearchOrder:=xlByColumns)
Findメソッドは余り省略すると予期しない動きをしますからね。
検索開始セルを指定するとその次のセルから検索しますから、この場合(指定してない)正常に動いてはいますけどね。
Set 人物名 = Cells.Find(What:="佐藤 太郎", After:=Range("A" & Rows.Count), SearchOrder:=xlByColumns)
かな?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/2】 国民的アニメ『サザエさん』が打ち切りになった理由を教えてください
- ・ちょっと先の未来クイズ第5問
- ・【お題】ヒーローの謝罪会見
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA 配列からセルに「...
-
VBAマクロ実行時エラーの修正に...
-
複数指定セルの可視セルのみを...
-
Excel UserForm の表示位置
-
EXCEL VBA 文中の書式ごと複写...
-
ExcelのVBAコードを教えて頂け...
-
Excelで空白セル直前のセルデー...
-
VBA セルに年月を書いてあり、...
-
DataGridViewのフォーカス遷移...
-
C# DataGridViewで複数選択した...
-
VBA deleteをクリックすると型...
-
VBAで3の倍数の乱数を取得する
-
データのある範囲を選択するVBA...
-
VBA:日付を配列に入れ別セルに...
-
EXCEL 2010 VBAでピボットで複...
-
VBA 検索結果の行を取得。上か...
-
Excel VBAで特定の範囲の空白セ...
-
エクセルのカーソルを非表示に...
-
VBA 特定のセルからoffsetされ...
-
VBAのTIMER関数で返された値を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
Excelで空白セル直前のセルデー...
-
エクセルVBA 配列からセルに「...
-
Excel UserForm の表示位置
-
【VBA】【ユーザーフォーム_Lis...
-
特定の色のついたセルを削除
-
CellEnterイベント仕様について
-
VBA:日付を配列に入れ別セルに...
-
Excel VBAでCheckboxの名前を変...
-
【Excel VBA】一番右端セルまで...
-
エクセルのカーソルを非表示に...
-
EXCEL VBA 文中の書式ごと複写...
-
DataGridViewでグリッド内に線...
-
下記のマクロの説明(意味)を...
-
C# DataGridViewで複数選択した...
-
Excel 範囲指定スクショについ...
-
【VBA】写真の貼り付けコードが...
-
VBA にて、条件付き書式で背景...
-
DataGridViewのフォーカス遷移...
-
Excel VBAで特定の範囲の空白セ...
おすすめ情報