Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11292 / 13644 ツリー ←次へ | 前へ→

【16860】findについて hisao 04/8/12(木) 13:43 質問[未読]
【16861】Re:findについて つん 04/8/12(木) 14:37 回答[未読]
【16862】Re:findについて IROC 04/8/12(木) 14:45 回答[未読]
【16863】Re:findについて つん 04/8/12(木) 16:23 発言[未読]
【16873】Re:findについて Asaki 04/8/13(金) 13:15 回答[未読]
【16914】Re:findについて hisao 04/8/16(月) 12:32 お礼[未読]

【16860】findについて
質問  hisao E-MAIL  - 04/8/12(木) 13:43 -

引用なし
パスワード
   findメソッドについてお教え下さい。
E列に例えば1のある位置を見つけoffsaet(-1,3)を選びたいのですが、1が無ければエラーとしたいのです。
しかし当然 E列に10,11が有っても選んでしまいます。1だけを選ぶ方法は無いでしょうか。

dim b as integer
b=1
Columns("E:E").Find(b).Offset(-1, 3).Select

【16861】Re:findについて
回答  つん E-MAIL  - 04/8/12(木) 14:37 -

引用なし
パスワード
   hisao さん、こんにちは

>findメソッドについてお教え下さい。
>E列に例えば1のある位置を見つけoffsaet(-1,3)を選びたいのですが、1が無ければエラーとしたいのです。
>しかし当然 E列に10,11が有っても選んでしまいます。1だけを選ぶ方法は無いでしょうか。

ヘルプを見ていただくとわかると思いますが、
Findメソッドには、いろいろ細かく設定できる引数があります。
その中に、「完全一致」か「部分的に一致」かの設定が出来る引数もあります。
ヘルプを見てください・・と、思ったけど、
あのヘルプじゃ、どれがそーなんだかわかりませんね^^;

「LookAt  省略可能です。バリアント型 (Variant) の値を使用します。使用できる定数は、XlLookAt クラスの xlWhole または xlPart です。」

これですね。
完全一致は「xlWhole」そうじゃなかったら「xlPart」です。
省略したら、「xlPart」になってしまうんだと思います。

【16862】Re:findについて
回答  IROC  - 04/8/12(木) 14:45 -

引用なし
パスワード
   >完全一致は「xlWhole」そうじゃなかったら「xlPart」です。
>省略したら、「xlPart」になってしまうんだと思います。

確認していないので、たぶんですが・・
省略すると、現在の設定が適用されたような気がします。

【16863】Re:findについて
発言  つん E-MAIL  - 04/8/12(木) 16:23 -

引用なし
パスワード
   >確認していないので、たぶんですが・・
>省略すると、現在の設定が適用されたような気がします。

引数 LookIn、LookAt、SearchOrder、および MatchByte の設定は、このメソッドが使われるたびに保存されます。


・・と、あるので、そうですね。
今、ちょっと試してみたんですけど、
私は、プロシージャが終了すると、その設定はクリアされるんだと思ってたんですが、(1つのプロシージャ内でのみ設定が保存されてるのか)
そうじゃなくて、エクセルが終了されるまで保存されるみたいですね?
ファイルを終了して立ち上げなおしても設定が残っていたような・・・
簡単にしか試してないのですが・・・・

【16873】Re:findについて
回答  Asaki  - 04/8/13(金) 13:15 -

引用なし
パスワード
   みなさま、こんにちは。

Find メソッドの場合は、間違いが起こらないように、全ての引数を指定るするのが常套ですね。

ところで、E列の検索される値に重複がなければ、一般数式の Match() ではどうでしょうか?
Sub test()
  Dim i      As Long
  Dim varRet   As Variant
  
  i = 1
  varRet = Application.Match(i, Columns(5), 0)
  If IsError(varRet) Then
    MsgBox i & " は見つかりませんでした"
  Else
    Cells(CLng(varRet) - 1, 8).Select
  End If
End Sub

【16914】Re:findについて
お礼  hisao E-MAIL  - 04/8/16(月) 12:32 -

引用なし
パスワード
   つんさん、IROCさん、asakiさん 大変有難う御座いました。
xlwhole引数で解決いたしました。

▼つん さん:
>hisao さん、こんにちは
>
>>findメソッドについてお教え下さい。
>>E列に例えば1のある位置を見つけoffsaet(-1,3)を選びたいのですが、1が無ければエラーとしたいのです。
>>しかし当然 E列に10,11が有っても選んでしまいます。1だけを選ぶ方法は無いでしょうか。
>
>ヘルプを見ていただくとわかると思いますが、
>Findメソッドには、いろいろ細かく設定できる引数があります。
>その中に、「完全一致」か「部分的に一致」かの設定が出来る引数もあります。
>ヘルプを見てください・・と、思ったけど、
>あのヘルプじゃ、どれがそーなんだかわかりませんね^^;
>
>「LookAt  省略可能です。バリアント型 (Variant) の値を使用します。使用できる定数は、XlLookAt クラスの xlWhole または xlPart です。」
>
>これですね。
>完全一致は「xlWhole」そうじゃなかったら「xlPart」です。
>省略したら、「xlPart」になってしまうんだと思います。

11292 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free