在Visual Basic中引用工作表

时间:2016-02-04 15:15:04

标签: vb.net excel

我正在研究一个工作项目,我正在尝试在条形图中着色条。制作了具有不同图表的多个工作表,但它们都遵循相同的颜色方案。我是VB的新手(刚刚在2天前拿起它)我有可能是一个基本的问题,但我无法在任何地方找到答案。我有一个单独的功能来为每个图表着色,但我想压缩我的代码,使它们引用一个函数。这是我的一个例子:

Private Sub color_chart()

Dim chartIterator As Integer, pointIterator As Integer, _
    seriesArray() As Variant

For chartIterator = 1 To ActiveSheet.ChartObjects.Count
    seriesArray = ActiveWorkbook.Sheets("Chart").ChartObjects(chartIterator). _
                   Chart.SeriesCollection(1).Values

    For pointIterator = 1 To UBound(seriesArray)

        ' ***** If percent is greater than or equal to 90, color is green. *****
       If seriesArray(pointIterator) >= 0.9 Then
           ActiveWorkbook.Sheets("Chart").ChartObjects(chartIterator). _
           Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _
           RGB(0, 153, 0)

       ' ***** If percent is greater than or equal to 50, color is yellow. *****
       ElseIf seriesArray(pointIterator) >= 0.5 Then
           ActiveWorkbook.Sheets("Chart").ChartObjects(chartIterator). _
           Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _
           RGB(239, 226, 42)

       ' ***** If percent is less than 50, color is red *****
       Else
           ActiveWorkbook.Sheets("Chart").ChartObjects(chartIterator). _
           Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _
           RGB(229, 41, 41)
       End If

    Next pointIterator

Next chartIterator

End Sub

这是我想用来引用所有图表的代码。但是我得到了其他的错误,因为工作表名称不是所有这些的“图表”。如何更改此代码以便多个工作表可以调用此函数?有没有办法在不明确使用其名称的情况下对工作表进行更改?

1 个答案:

答案 0 :(得分:0)

“表格”属性只是工作表项的集合,因此可以通过特定名称或其序号引用,例如ActiveWorkbook.Sheets(0).Chartobjects

https://msdn.microsoft.com/en-us/library/office/ff822101.aspx

编辑以扩展您的案例,因为您说您最近刚刚使用了VB:

使用For Each迭代工作表集合,例如:

For Each wsheet As WorkSheet in ActiveWorkbook.Sheets
  wsheet.ChartObjects(chartIterator). _
           Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _
           RGB(239, 226, 42)
Next