プロが教えるわが家の防犯対策術!

dim base8 as range
set base8 = range("B2:J10")

のようにbase8の範囲を決め、
この中に特定の数字があるかを調べようとしています。

今は
単純に
for n = 1 to 81
if base8(n) = x then goto ari8
next
の様に81回ループさせています。

時間が掛かる※ので for each にしてみましたが、
たいして変わりませんでした。

ココで質問です。
 「find」みたいな命令で一発で見付けられるような命令はないでしょうか。

※ココに書いた例はあくまで例であり、
 実際はもっと大きなエリアで、何回も同じ様なことをやっています。
 なので、今は5分くらい掛かっています。

環境はexcel2003です。

宜しくお願いします。

A 回答 (4件)

findはRangeオブジェクト(base8)で使用できますが遅いです。

今回の目的では使用しないほうがよいかと。
下記URLを参照ください。
https://excel-ubara.com/excelvba4/EXCEL225.html
    • good
    • 0
この回答へのお礼

確かに全く速さが違いますね、驚きでした。
「find」しか頭にありませんでした。
配列は先ず難しいが先に立ってしまいます。

早速、「match」を使うべく検討してみます。
お世話になりました。

お礼日時:2019/09/17 06:34

こんばんは!



B2~J10セル内に「特定の数字」があるか?ないか?の処理でよいのですね。

Sub Sample1()
 Dim myRng As Range, c As Range
  Set myRng = Range("B2:J10")
   Set c = myRng.Find(what:="特定の数字", LookIn:=xlValues, lookat:=xlWhole)
    If Not c Is Nothing Then
     '「特定の数字」がある場合の処理
    Else
     '「特定の数字」がない場合の処理 '←不要かも・・・
    End If
End Sub

こんな感じではどうですか?m(_ _)m
    • good
    • 0
この回答へのお礼

早速有り難うございました。
昨日質問して夜勤になってしまったので、
お礼が遅くなりました。

「find」でも出来たのですね、
具体的なコードまで頂き恐縮です。
サラッと見ましたが、「match」でも出来そうなので
そちらを検討したいと思っています。

お世話になりました。

お礼日時:2019/09/17 06:36
    • good
    • 0
この回答へのお礼

有り難うございました。

お礼日時:2019/09/17 06:32

scripting.dictionaryを使えば圧倒的に早くなります。


1)各セルには同じ値がありますか。同一値の有無により、処理が異なります。
2)見つけた後、何をしたいのでしょうか?
    • good
    • 0
この回答へのお礼

早速有り難うございました。
昨日質問して夜勤になってしまったので、
お礼が遅くなりました。

scripting.dictionary
検索してみましたが、全く初めてのことで難しく感じました。
今回は別途貼っていただいたリンクを読んだところ、
「match」が良さそうなのでそちらを勉強してみたいと思っています。

お礼日時:2019/09/17 06:32

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