• 締切済み

選択セルの中身が変わる理由

4月 5月 6月 商品A 87 58 210 商品B 85 90 117 商品C 100 54 130 商品D 76 210 325 合計 348 412 782 Sub 数値条件セル選択() Dim 対象セル As Range Dim 選択セル As Range 'シート内の数値セルを選択 ActiveSheet.UsedRange.Select ActiveCell.SpecialCells(xlCellTypeConstants, xlNumbers).Select '「100以上」のセルを選択 1 For Each 対象セル In Selection 2 If Val(対象セル.Value) >= 100 Then 3 If 選択セル Is Nothing Then 4 Set 選択セル = 対象セル Else 5 Set 選択セル = Union(選択セル, 対象セル) End If End If Next '検索結果の表示 If 選択セル Is Nothing Then ActiveCell.Select MsgBox "該当セルはありませんでした" Else 選択セル.Select End If End Sub 教えてください 3,4の所なのですが、最初に見つけた100以上の値(6月の210)なので 選択セルに210が入るのですが、コレは分かりました。が最後までコードを進めていくと選択セルが(4月の100)になっています。 コレはなぜでしょうか。分かりません。教えてくださいお願いします。 VBAの勉強(初心者です)

みんなの回答

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.1

>最初に見つけた100以上の値(6月の210)なので >選択セルに210が入るのですが、コレは分かりました >が最後までコードを進めていくと選択セルが(4月の100)になっています >コレはなぜでしょうか。 それは、Unionメソッドがある規則に沿ってセルを結合しているからです。 所謂、Unionメソッドの仕様ということです。 「ある規則」については、自分で見つけてくだされ。 下記のように●MsgBox●を入れてみればそれを確認できます。 '----------------------------------------- Set 選択セル = Union(選択セル, 対象セル) End If   ●●●   MsgBox 対象セル.Address(0, 0) & " @ " & 選択セル.Address(0, 0)   ●●● End If Next '---------------------------------------- ただ、この結合の順番が何か問題になるのでしょうか。 それとも単に疑問に思った程度でせうか。 以上。  

tom-jm
質問者

お礼

早速お答えありがとうございました。 コード上問題はなく、できるのですが、最初見つけた210が選択セルに格納されているのに途中で、nothingに変わり100が選択セルに格納されるとは思っても見なかった。単に疑問に思った程度でせうか。あなたのレベルではそうかもしれませんが、私のレベルでは大変な疑問です。 これからも低レベルの者の面倒を見てください。一つのプログラムを作るにはあらゆる方向からの知識が必要だと思います。一つの方向じゃァなくて、それにはこと細かく知ることだと思います。教本に載っているのはただの基礎それを超えなければなりません。一人では、難しいです。がこのサイトはそのためにあってほしいです。自分の思ったものが作れて初めて嬉しいのです。(自分のプログラム)またよろしくお願いいたします。

関連するQ&A