在VBA中循环多个范围时确定值
我正在使用一个macros来设置基于dynamic数据集的图表最大值和最小值。 当用户select他们的组时,图表更新,macros运行将图表最大值和最小值更新为适当的比例。
我希望有人可以帮助我,因为我尝试使用3个范围的variables:
- 根据范围内的单元格值select图表
- 根据范围内的单元格值设置最小值
- 根据范围内的单元格值设置最大值
在这一点上,我能够拉出图表名称,但无法获取范围内的最小值和最大值。
任何帮助,将不胜感激!
Sub rescale() ActiveSheet.Calculate Dim ChrtNmRng As Range Dim ChrtMinRng As Range Dim ChrtMaxRng As Range Dim cell As Range Set ChrtNmRng = Sheets("Data").Range("o5:o20") Set ChrtMinRng = Sheets("Data").Range("z5:z20") Set ChrtMaxRng = Sheets("Data").Range("Aa5:Aa20") For Each cell In ChrtNmRng With Sheets("Dashboard").ChartObjects(cell.Value).Chart.Axes(xlValue) .MinimumScale = ChrtMinRng.Value .MaximumScale = ChrtMaxRng.Value End With Next cell End Sub
像这样做:
Sub rescale() Dim ChrtNmRng As Range, cell As Range ActiveSheet.Calculate Set ChrtNmRng = Sheets("Data").Range("o5:o20") For Each cell In ChrtNmRng With Sheets("Dashboard").ChartObjects(cell.Value).Chart.Axes(xlValue) .MinimumScale = Range("Z" & cell.Row) .MaximumScale = Range("AA" & cell.Row) End With Next cell End Sub
这里的关键在于最小值和最大值( Z
和AA
)的范围与列O
精确alignment,因此您可以使用row
参考来获取所需的相应值。
据我了解你的意见。 O列包含图表的名称,其他图表包含每个图表的最小值和最大值。
Sub rescale() ActiveSheet.Calculate Dim ChrtNmRng As Range Dim ChrtMinRng As Range Dim ChrtMaxRng As Range Dim i As Long Set ChrtNmRng = Sheets("Data").Range("o5:o20") Set ChrtMinRng = Sheets("Data").Range("z5:z20") Set ChrtMaxRng = Sheets("Data").Range("Aa5:Aa20") For i = 1 To 16 With Sheets("Dashboard").ChartObjects(ChrtNmRng(i).Value).Chart.Axes(xlValue) .MinimumScale = ChrtMinRng(i).Value .MaximumScale = ChrtMaxRng(i).Value End With Next i End Sub