【发布时间】:2021-01-28 07:59:43
【问题描述】:
我有一些项目正在通过用户表单填充到工作表中。当我打开工作簿时,我试图让工具转到工作表并获取数据并在主登录表上生成图表/仪表板。
在数据范围内包含状态。我希望 VBA 浏览一列数据并创建一个图表来计算每个不同的状态并将其放入条形图中。
yaxis = 不同的状态
xaxis = 计数
到目前为止我的代码
Sub populatecharts()
Dim ws As Worksheet
Dim ch As Chart
Dim tablerng As Range
Dim rng1 As Range
Dim rng2 As Range
Dim rng3 As Range
Dim sh As String
Set ws = ActiveSheet
'When the workbook opens it should always check the data and populate the BA Dashboard
'I need to check for sheets and if they exist generate a chart from the data
sh = "Action"
On Error Resume Next
Worksheets("Action").Visible = True
If CheckSheetExist(sh) = False Then
GoTo nextchart1
Else
Worksheets(sh).Activate
'Set ws = ActiveSheet
Set rng1 = Range("G4", Range("G4", "G4").End(xlDown))
rng1.Select
'Set rng2 = Range("B2")
'Set rng3 = Range("C3")
'Set tablerng = rng1 '& rng2 & rng3
Set ch = ws.Shapes.AddChart2(Width:=200, Height:=200, Left:=Range("B4").Left, Top:=Range("B4").Top).chart
With ch
.SetSourceData Source:=rng1
.ChartType = xlBarClustered
.ChartTitle.Text = "Action Items by Status"
End With
ws.Activate
Worksheets("Action").Visible = False
End If
看起来很简单,但我无法考虑清楚,即使我定义了顶部和底部以及大小,位置也会受到影响。有时它在我选择作为左侧的单元格的右侧。
【问题讨论】:
-
首先删除
On Error Resume Next这一行隐藏了所有错误信息,但错误仍然出现。这就像说 VBA “如果有错误不要告诉任何人”,但是如果您没有看到错误,您将无法修复它们,因此您的代码将无法工作。 • 删除它,看看你得到了哪些错误,然后修复它们(或告诉它们是什么以及你在哪一行得到它们)。 • 您可能会从阅读VBA Error Handling – A Complete Guide 中受益。 -
感谢关于 on 错误的提示。我想我可能已经发布了未保存的版本。 tablerng 不应该等于 range() 并且我将 .chart 添加到设置图表对象的末尾。代码执行,但图表不是我想要的,(见图)一列数据多个状态,我想要一列代表每个状态,y 轴提供每个状态有多少的计数。谢谢
-
看什么图片?要看到什么“保存”版本?您是否编辑了您的问题并进行了上述更改?我看不出有什么改变。如果您尝试编辑,您是否保存了它?
-
找到了编辑按钮。并进行了编辑。图像有状态和一些数据选项“打开”、“关闭”、“进行中”,这些将是 y 轴
-
我仍然看不到任何图表图像......无论如何,在你这样做之前,我发布了一个答案代码。你测试了吗?它不会返回您需要的东西吗?
标签: excel vba unique excel-charts