Dynamic Range for Excel Charts - VBA

Dynamic Range for Excel Charts - VBA

今天碰到一個小棘手的問題:為了讓excel的圖表能夠自動變更圖表資料範圍,利用vba寫了巨集, 讓檔
案一開始的時候去判斷是否要重新計算圖表的資料範圍。

原本用了Rows.End 去找到資料起始和結束,但是測試後發現,如果資料表有放入過比較大範圍的資料
,Rows.End 會算錯位置,不得以只好用Offset重新去計算目前資料範圍(幸好資料量不會很大...),
不過這有個壞處,如果中間資料有中斷,就會判斷錯誤。

希望未來能有更好的方法處理...orz

 


Private Sub Workbook_Open()

    Dim curSheet As Worksheet
    Dim curRange As Range
    Dim findRight As Boolean
    Dim findDown As Boolean
    
    
    
    Set curSheet = Sheets("Sheet1")
    Set curRange = curSheet.Cells(1, 1)
    
    If curRange.Text <> "" And MsgBox("是否重新計算圖表範圍?", vbOKCancel, "訊息") = vbOK Then

        findRight = False
        findDown = False
            
        While findRight = False
            If curRange.Text = "" Then
                findRight = True
            Else
                Set curRange = curRange.Offset(0, 1)
            End If
        Wend
        
        Set curRange = curRange.Offset(0, -1)
            
        While findDown = False
            If curRange.Text = "" Then
                findDown = True
            Else
                Set curRange = curRange.Offset(1, 0)
            End If
            
        Wend
        
        Set curRange = curRange.Offset(-1, 0)
    
        Debug.Print curRange.Address
        
        Sheets("Chart1").Select
        Sheets("Chart1").SetSourceData Source:=Sheets("Sheet1").Range("$A$1:" & curRange.Address), PlotBy:=xlRows
        Sheets("Chart1").ApplyLayout (4)
        
    End If
    
    
End Sub

 

DotBlogs 的標籤:,