プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になっております
下記のコードは シート内にある A 検索して
一つ一つ選択されます。
ただ
下記のコードを削除すると
MsgBox i & "個目に見つかった場所です"
最後に見つかったセルのみ選択されます。

コマンドボタンを押すたびに
選択することは可能でしょうか
できれば、ワークブック内すべて

Sub try()
Dim r As Range
Dim st As String
Dim i As Long

Set r = Cells.Find(What:="A", LookIn:=xlValues, LookAt:= _
xlPart)
If r Is Nothing Then Exit Sub
st = r.Address

Do

i = i + 1
r.Select

MsgBox i & "個目に見つかった場所です"

Set r = Cells.FindNext(ActiveCell)

Loop Until st = r.Address

MsgBox "全部検索したので終わります"
Set r = Nothing
End Sub

A 回答 (2件)

※この回答は、“締め切られた質問への回答追加”として、2022/12/23 15:56 に回答者の方よりご依頼をいただき、教えて!gooによって代理投稿されたものです。



まず、Sub~End Sub 内で変数の宣言させてると、クリック(移動)させた時に変数の宣言で初期化されてしまいます。
即ち元の位置データは常に初期化された状態で実行されます。
その位置データに使用する変数はSub~End Subの外で宣言しなければなりません。
そうしないとクリックする毎に選択移動できません。

また1クリックで1つ移動をしたいのでしょうから、FindNextは必要ないです。(ループも)
あったらグルっと検索して最初の位置に戻っておしまいですし、それはコードでそうなってますからね。

なのでどうしてこう言うコードに辿り着いたのか?そこが不思議です。
と、検証していない初級者じじぃは感じます。
    • good
    • 1

https://www.helpforest.com/excel/emv_sample/ex10 …
https://www.vba-ie.net/programing/variable-scope …

既に依然このような回答を受けていたかと思いますがどうされたのでしょう?
折角回答を貰ってもその場限りでは伸びないですよ。
3年位前はデータベースへの接続をこなされてましたよね。
その際にも『不明なままで質問を閉じないように』と書かせて頂いたと思いますし、受けた回答は必ず保存し検索しやすく見直し可能にしそこから応用出来るようにされた方が宜しいと。
    • good
    • 0
この回答へのお礼

ご返信ありがとうございます。

なかなか 質問の仕方が悪く

伝わらないです。

この質問はもういたしません。

失礼いたしました。

お礼日時:2022/12/21 08:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!