ExcelVBA 非連続域の扱い(01)
お世話になります。
添付映像の、ような
非連続域の、扱いに
困って、います
下記に、記載の
コードに、おいて
2回目、以降に
Function 最小値域(…
に、
制御が、回た
際の
>フィールド.Rows.Count
が、
1に、成り
困って、います。
と、言うか
抑も、
非連続域の、扱い方が
全く
解って、いません
どう、取得し、
どう、扱い、
どう、指定し、
どう、渡す、
のか… 等、
なので
>Evaluate("MIN(" & フィ…
や、
>For Each カウンター In フィールド.Range(Cells(…
等の、
Range指定、等も
間違えて、いる
と、思います
其処で、
非連続域の、扱い
に、ついて
どうぞ、ご指南を
宜しく、お願いします。
記
Option Base 1
Option Explicit
Type ランゲポイント形式
左 As Long
右 As Long
上 As Long
下 As Long
End Type
Function 最小値域(ByVal フィールド As Range, ByVal 列 As Long, Optional ByVal 指標値 As Variant) As Range
Dim ポイント As ランゲポイント形式, ランゲ As Range, カウンター As Range, 注目行 As Long
Let ポイント.上 = 1
Let ポイント.左 = 1
Let ポイント.下 = フィールド.Rows.Count
Let ポイント.右 = フィールド.Columns.Count
Set ランゲ = Nothing
Set カウンター = Nothing
If IsMissing(指標値) _
Then
Set 指標値 = Evaluate("MIN(" & フィールド.Range(Cells(列, ポイント.上), Cells(列, ポイント.下)).Value & ")")
End If
For Each カウンター In フィールド.Range(Cells(列, ポイント.上), Cells(列, ポイント.下))
If カウンター.Value = 指標値 _
Then
Let 注目行 = カウンター.Row
If ランゲ Is Nothing _
Then
Set ランゲ = フィールド.Range(Cells(注目行, ポイント.左), Cells(注目行, ポイント.右))
Else
Set ランゲ = Union(ランゲ, フィールド.Range(Cells(注目行, ポイント.左), Cells(注目行, ポイント.右)))
End If
End If
Next
Set 最小値域 = ランゲ
End Function
Sub main()
Dim ダミー As Range
Set ダミー = 最小値域(最小値域(最小値域(Range("sheet2!B2:e9"), 2, "A"), 3), 4)
End Sub
以上
お礼
有り難うございます。 … … … ・ ・ は!! 一端ダミーででも、他のオブジェを入れて オブジェを構築させる訳ですか? excellenc様のページ クラスの解説に記載があるところの http://www.excellenceweb.net/vba/class/what_vba_class.html Dim Apple As 果物売上 Set Apple AS New 果物売上 これはクラスに対する操作ですが、 これに似た操作が必要。 と、云う認識で良いのですか?