VBA – 通过工作表循环查找用户select范围内的最大值

我正在尝试为我的工作簿中的每个工作表取决于用户所选范围的最大值。 我希望用户只select一个范围,并根据该范围查找每个工作表的最大值。

换句话说,用户select范围B1:B100。 macros应循环遍历每张纸,并在每张纸的B1:B100范围内find最大值。

最终,每个工作表都有一组数据点,我想用用户select范围内的最大值来划分。

这是我的代码(以及相关部分):

Sub Plot() Dim i, ws_count As Integer Dim userng, brng As Range Dim maxval As Double On Error GoTo Canceled Set userng = Excel.Application.InputBox("Please input range.", "Input", Selection.Address, , , , , 8) ws_count = ActiveWorkbook.Worksheets.Count For i = 1 To ws_count Worksheets(i).Activate maxval = userng.Cells(1, 1).Value For Each Cell In userng.Cells If Cell.Value > maxval Then maxval= Cell.Value End If Next Cell Set brng = Worksheets(i).Range("B1:B1869") ''brng will always be B1:B1869 for each worksheet 'Each cell in B1:B1869 should be divided by maxval. For Each Cell In brng Cell.Value = Cell.Value / maxval Next Cell Next i Canceled: End Sub 

不幸的是,macros只能find第一个工作表的最大值并将此值应用于所有其他工作表。 理想情况下,每个工作表将被其独特的maxval分开。

我当然会感谢任何帮助!

您可以直接从用户获取用户范围,然后按如下所示应用它:

 Sub Test() Dim rng1 As Range Dim ws As Worksheet On Error Resume Next Set rng1 = Application.InputBox("Pls select range to examine (on all sheets)", "User Input", Selection.Address, , , , , 8) On Error GoTo 0 If rng1 Is Nothing Then Exit Sub For Each ws In ActiveWorkbook.Sheets Debug.Print ws.Name, Application.WorksheetFunction.Max(ws.Range(rng1.Address)) Next End Sub 

以下是如何获得每张表中当前范围的最大值的示例:

 Sub MaxInSheets() Dim MyRange As String, WS As Worksheet MyRange = Selection.Address For Each WS In Worksheets MsgBox WS.Name & " - " & WorksheetFunction.Max(WS.Range(MyRange)) Next MsgBox MyMaxValue End Sub 

如果您需要帮助将其实施到自己的代码中,请发回。

我试图让MyRange的范围,但它不喜欢它,我不是100%肯定,但我认为它可能会保留该表作为范围内的参考? 对这个对象有更多的了解的人将能够确认这一点。