2

2 つの列があります。1 つはいくつかのテーブルの名前を持ち、2 つ目はその値を持ちます。

Dim rng As Range
    Set rng = [AH3:AH50]  ' <-- adjust to your requirements    
    If Application.WorksheetFunction.Max(rng) > 95 Then    
    MsgBox "tables has sixe more than 95"    
End If   

必要なヘルプ:
1. Msgbox は、95 を超えるセルの実際の値も表示する必要があります。
2. また、ステップ 1 で値を表示している対応するテーブルの名前も表示する必要があります。

msgbox の出力は次のようになります:
"ABCD table has current size:96.6"

4

2 に答える 2

2

このコードは、テーブル名がテーブル値の前の列にあることを前提としています。そうでない場合は、Offsetパラメータを変更してください。-1

Sub TestRange()
    Dim rngValues As Range
    Dim strTableName As String
    Dim cell As Range

    ' Adjust ranges to suit
    Set rngValues = [C2:C8]

    For Each cell In rngValues
        If cell.Value > 95 Then
            MsgBox Range(cell.Address).Offset(0, -1).Value _
                & " table has current size: " & cell.Value
        End If
    Next
End Sub
于 2012-10-09T08:36:24.350 に答える
0

これを試して

すべてのインスタンスを検出するように更新 > しきい値

Sub TestRange()
    Dim rngValues As Range
    Dim rngTables As Range
    Dim mxVal As Variant
    Dim idx As Long

    ' Adjust ranges to suit
    Set rngValues = [F1:F10]
    Set rngTables = [E1:E10]
    mxVal = Application.WorksheetFunction.Max(rngValues)
    Do While mxVal > 95
        idx = Application.Match(mxVal, rngValues, 0)
        MsgBox Application.Index(rngTables, idx) & " table has current size: " & mxVal

        If idx < rngValues.Rows.count Then
            Set rngValues = rngValues.Offset(idx, 0).Resize(rngValues.Rows.count - idx)
            Set rngTables = rngTables.Offset(idx, 0).Resize(rngTables.Rows.count - idx)
            mxVal = Application.WorksheetFunction.Max(rngValues)
        Else
            mxVal = 0
        End If
    Loop
End Sub
于 2012-10-09T05:19:40.213 に答える