Excel VBA質問箱 IV

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

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


3291 / 13645 ツリー ←次へ | 前へ→

【63053】Rangeの使用方法。 Pos-Ca 09/10/4(日) 15:11 質問[未読]
【63054】Re:Rangeの使用方法。 脱初心者 09/10/4(日) 16:07 回答[未読]
【63057】Re:Rangeの使用方法。 Pos-Ca 09/10/4(日) 21:20 お礼[未読]
【63058】Re:Rangeの使用方法。 kanabun 09/10/4(日) 22:10 発言[未読]
【63059】Re:Rangeの使用方法。 脱初心者 09/10/4(日) 23:00 発言[未読]
【63079】Re:Rangeの使用方法。 Pos-ca 09/10/5(月) 19:20 お礼[未読]
【63056】Re:Rangeの使用方法。 ichinose 09/10/4(日) 16:58 発言[未読]

【63053】Rangeの使用方法。
質問  Pos-Ca  - 09/10/4(日) 15:11 -

引用なし
パスワード
   初心者ですがVBAに関するコードの事で、質問があります。

セル"A1"〜"E10"までをRangeオブジェクト(Range1)へ格納し、
「.Findメソッド」で検索条件に一致した、Rangeを(Range2)へ格納します。

質問:
格納されたRangeオブジェクト(Range2)から、別のRangeオブジェクト(Range3)へ、"C3"〜"C10"をセットしたいと思いますが、難航しています。

---------コード--------------------------------------------
Set Range1 = Worksheets1.Range("A1:E10")

Set Range2 = Range1.Find([検索条件], LookAt:=xlWhole)

If Not Range2 Is Nothing Then

  Set Range3 = Range2.Offset(0).EntireRow
    ↑ここでは「C行」の行全体(C1〜C10)となる

End If
-----------------------------------------------------------

「.EntireRow」を用いた場合、行すべてになってしまい希望の処理に沿いません。
尚、Range1はどうしても、Worksheets1.Range("A1:E10")を格納しておきたいのです。

"C3"〜"C10"を指定しRange3へセットする、
Rangeオブジェクトの便利なプロパティなど、よい方法はありますか?

【63054】Re:Rangeの使用方法。
回答  脱初心者  - 09/10/4(日) 16:07 -

引用なし
パスワード
   Set Range3 = Range2.range("C3:C10")
ということですか?

【63056】Re:Rangeの使用方法。
発言  ichinose  - 09/10/4(日) 16:58 -

引用なし
パスワード
   こんにちは。
Sub test()
  Dim range1 As Range
  Dim range2 As Range
  Dim range3 As Range
  Dim rw As Long
  dim 検索条件 as variant
  Set range1 = Worksheets(1).Range("A1:E10")
  rw = range1.Row - Worksheets(1).Range("A1").Row
  Set range2 = range1.Find(検索条件, LookAt:=xlWhole)
  If Not range2 Is Nothing Then
    Set range3 = range1.Rows(range2.Row - rw)
    range3.Select
  End If
End Sub

rwは、検索範囲がWorksheets(1).Range("A1:E10")が、

Worksheets(1).Range("A11:E20")
となっても良いように付けました。


ichinose@本日地区の運動会50代でリレー出た

【63057】Re:Rangeの使用方法。
お礼  Pos-Ca  - 09/10/4(日) 21:20 -

引用なし
パスワード
   ▼脱初心者 さん:
>Set Range3 = Range2.range("C3:C10")
>ということですか?

お世話になります、おかげさまで解決致しました。
ありがとうございました。

【63058】Re:Rangeの使用方法。
発言  kanabun  - 09/10/4(日) 22:10 -

引用なし
パスワード
   ▼Pos-Ca さん:
よこからすみません。

>>Set Range3 = Range2.range("C3:C10")
>お世話になります、おかげさまで解決致しました。

あれ?
解決されたようですが、すこし解せない点が?

> セル"A1"〜"E10"までをRangeオブジェクト(Range1)へ格納し
>「.Findメソッド」で検索条件に一致したRangeを(Range2)へ格納します。
> (Range2)から、別のRangeオブジェクト(Range3)へ、"C3"〜"C10"をセットしたい

たとえば、シートが
  A  B  C  D  E
1 あ  い  う  え  お
2 か  き  く  け  こ
3 さ  し  す  せ  そ
4 た  ち  つ  て  と
5 な  に  ぬ  ね  の
:          :
のようで、Findメソッドで 「き」を検索した場合、
Range2 には シート全体の座標(アドレス)で言うと
[B2]セルがセットされますが、
> Range2.range("C3:C10")
ということは、[B2]セルを起点とするRangeですから
  [D4:D11]
いうシートのセル範囲を指します。
この列範囲が目的とする行範囲なんですか?

私は、
ichinose@本日地区の運動会50代でリレー出た
さんの解法で、一件落着と合点していましたが、
そういう意味ではなかったということですか?

【63059】Re:Rangeの使用方法。
発言  脱初心者  - 09/10/4(日) 23:00 -

引用なし
パスワード
   私が言うのも何ですが・・・
私も、私が Pos-Ca さんの質問の意図を読み違えていて、
説明不足のままの回答をUPしてしまい、ichinose さん
の回答を見てなるほどと思っていたのですが、
違うんですかね?

【63079】Re:Rangeの使用方法。
お礼  Pos-ca  - 09/10/5(月) 19:20 -

引用なし
パスワード
   kanabunさん

ご指摘、有難うございます。

私の記述があいまいな文面になっており、
混乱させてしまい申し訳ありません。

今回の目的として、

  A  B  C  D  E
1 あ  い  う  え  お
2 か  き  く  け  こ
3 さ  し  す  せ  そ
4 た  ち  つ  て  と
5 な  に  ぬ  ね  の
:          :

A列は常時検索列としています。
その為、「さ」を.Findとした場合、
[C5:C12]の「ぬ〜…」の”列”を取得したいと思っていました。

> ということは、[B2]セルを起点とするRangeですから
>  [D4:D11]
なるほど。「き」を.Findとした場合、
おっしゃる通りD列を選択しました。

今後は目的を始めとした、「起承転結」を盛り込んだ
質問内容にするように心がけると同時に、勉強させて
いただきたいと思います。

kanabunさん、脱初心者さん、ichinoseさん、
多々ご指摘ありがとうございました。

>▼Pos-Ca さん:
>よこからすみません。
>
>>>Set Range3 = Range2.range("C3:C10")
>>お世話になります、おかげさまで解決致しました。
>
>あれ?
>解決されたようですが、すこし解せない点が?
>
>> セル"A1"〜"E10"までをRangeオブジェクト(Range1)へ格納し
>>「.Findメソッド」で検索条件に一致したRangeを(Range2)へ格納します。
>> (Range2)から、別のRangeオブジェクト(Range3)へ、"C3"〜"C10"をセットしたい
>
>たとえば、シートが
>  A  B  C  D  E
>1 あ  い  う  え  お
>2 か  き  く  け  こ
>3 さ  し  す  せ  そ
>4 た  ち  つ  て  と
>5 な  に  ぬ  ね  の
>:          :
>のようで、Findメソッドで 「き」を検索した場合、
>Range2 には シート全体の座標(アドレス)で言うと
>[B2]セルがセットされますが、
>> Range2.range("C3:C10")
> ということは、[B2]セルを起点とするRangeですから
>  [D4:D11]
>いうシートのセル範囲を指します。
>この列範囲が目的とする行範囲なんですか?
>
>私は、
>ichinose@本日地区の運動会50代でリレー出た
>さんの解法で、一件落着と合点していましたが、
>そういう意味ではなかったということですか?

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