2012-10-09 51 views
2

有兩列。一個有一些表名,第二個有它的值。需要Excel在msgbox中顯示可變數據

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.還應該顯示對應表的名稱的單元的實際值,它顯示的是在第一步中的值。

MSGBOX輸出應該是:
「ABCD表有電流的大小:96.6」

回答

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 
+0

這工作絕對好。謝謝傑米。努力賞識。 – user1728174

+0

嘿傑米...需要更多的幫助。 – user1728174

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 
+0

克里斯,再次一個很好的代碼,但它不符合我的要求。它所做的是:它在整個列中找到最大值,如果它在95以上,它會向我顯示一次msgbox。但我希望代碼應該顯示msgbox的平均次數,其值大於95.例如,在95以上的整個列中有3個值,它應該顯示msgbox三次。 – user1728174

+0

查看更新代碼 –

+0

@Jamie Bull - 如果您有不同的解決方案,請發表您自己的答案。不要破壞我的 –