|
本帖最后由 pp000pp 于 2024-4-15 19:58 编辑
大家帮我看看,我想实现,点击表中任意单元格,然后自动生成一个图表。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim sht, sht2 As Worksheet
Dim objcht As ChartObject
Dim cht As Chart
On Error Resume Next
Application.ScreenUpdating = False
a = Selection.Row() '取当前选中单元格行号
b = Selection.Column() '取当前选中单元格列号
Set sht = Sheet3
With sht
'删除表中已经存在的图表
For Each objcht In .ChartObjects
objcht.Delete
Next objcht
' 新,要生成的图表位置
Set objcht = sht.ChartObjects.Add(Left:=.Cells(a, b + 2).Left, Top:=.Cells(a + 2, b).Top, Width:=280, Height:=230)
'在这一步的时候 ,真加图表特别的慢,不知道 为啥 在表中没有数据的时候 就特别快。我现在有7000行左右数据。就卡的要命了
End With
Set sht2 = Sheet4
Set cht = objcht.Chart
With cht
.SetSourceData sht2.Range("A1:D2") ', xlColumns
.SetElement msoElementLegendBottom
.SetElement msoElementChartTitleAboveChart
.ChartTitle.Text = "2023该品牌销售"
.ChartTitle.Font.Size = 14
.ChartType = xlPie
.SetElement (msoElementDataLabelOutSideEnd)
End With
cht.FullSeriesCollection(1).DataLabels.ShowPercentage = True '设置显示百分比
Set objcht = Nothing
Application.ScreenUpdating = True
End Sub
|
|