Excel 单元格范围内的VBA图表空白值
购物车应如何显示信息,它显示正确,因为我在单元格B16中添加了一个零值 错误图表,未正确显示,因为mortgage1的单元格中没有零值 宏的运行方式和来自用户窗体的信息 我的信息来自用户表单 我有一个图表,它是由一系列单元格的宏生成的。有时,该范围内会存在一些空白单元格。当使用空单元格值生成图表时,我遇到一个问题,图表将在第一个非空单元格处开始打印,导致类别轴报告不正确。如何使用VBA使图表在图表上显示空白值。我不想在我的手机范围内使用公式 这是我的密码:Excel 单元格范围内的VBA图表空白值,excel,vba,charts,Excel,Vba,Charts,购物车应如何显示信息,它显示正确,因为我在单元格B16中添加了一个零值 错误图表,未正确显示,因为mortgage1的单元格中没有零值 宏的运行方式和来自用户窗体的信息 我的信息来自用户表单 我有一个图表,它是由一系列单元格的宏生成的。有时,该范围内会存在一些空白单元格。当使用空单元格值生成图表时,我遇到一个问题,图表将在第一个非空单元格处开始打印,导致类别轴报告不正确。如何使用VBA使图表在图表上显示空白值。我不想在我的手机范围内使用公式 这是我的密码: Sub createchart
Sub createchart()
Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws As Worksheet: Set ws = wb.Sheets("contactunder")
Dim CellRow As Integer
wb.Sheets("ContactsFront").Select
CellRow = ActiveCell.Row
Worksheets("samplesheet").Activate
ActiveSheet.Shapes.AddChart2(251, xlBarClustered).Select
ActiveChart.DisplayBlanksAs = xlNotPlotted
ActiveChart.SetSourceData Source:=ws.Range("BY" & CellRow & ",CB" & CellRow & ",CH" & CellRow & ",CJ" & CellRow & ",CL" & CellRow & ",CN" & CellRow & ",CP" & CellRow)
ActiveChart.FullSeriesCollection(1).XValues = "contactunder!$BY$10,contactunder!$CB$10,contactunder!$CH$10,contactunder!$CJ$10,contactunder!$CL$10,contactunder!$CN$10,contactunder!$CP$10"
ActiveChart.SetElement (msoElementDataLabelOutSideEnd)
ActiveChart.SetElement (msoElementPrimaryCategoryGridLinesNone)
ActiveChart.Axes(xlValue).MajorGridlines.Format.Line.Visible = msoFalse
ActiveChart.FullSeriesCollection(1).DataLabels.ShowCategoryName = False
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Analysis for " & ws.Range("D" & CellRow)
ActiveChart.HasAxis(xlValue) = False
ActiveChart.HasLegend = False
End With
End Sub
由于您使用的是联合范围作为图表的源数据,因此在使用
SetSourceData
将该联合范围设置为图表的源数据后,该联合范围中的第一个空白单元格将不会进入源
所以第一个单元格在该并集范围内不能为空。没有值的单元格必须为#N/A
您可以在代码中用#N/A
替换空白,如下所示:
...
Set oChartRange = ws.Range("BY" & CellRow & ",CB" & CellRow & ",CH" & CellRow & ",CJ" & CellRow & ",CL" & CellRow & ",CN" & CellRow & ",CP" & CellRow)
For Each oCell In oChartRange
If Not IsError(oCell.Value) Then
If oCell.Value = "" Then oCell.Value = CVErr(2042)
End If
Next
ActiveChart.SetSourceData Source:=oChartRange
...
当然,您需要记住,在公式中使用该单元格时,该单元格中可能存在错误值。因此,也许您必须使用
IFERROR
。但无论如何,我不会使用0,因为0是一个有价值的数字,它的含义不同于空白。空白表示不可用,而不是0。因此,我真的要在这里使用#N/A
。因为您使用union range作为图表的源数据,所以在使用SetSourceData
将union range设置为图表的源数据后,该union range中的第一个空白单元格将不会进入源
所以第一个单元格在该并集范围内不能为空。没有值的单元格必须为#N/A
您可以在代码中用#N/A
替换空白,如下所示:
...
Set oChartRange = ws.Range("BY" & CellRow & ",CB" & CellRow & ",CH" & CellRow & ",CJ" & CellRow & ",CL" & CellRow & ",CN" & CellRow & ",CP" & CellRow)
For Each oCell In oChartRange
If Not IsError(oCell.Value) Then
If oCell.Value = "" Then oCell.Value = CVErr(2042)
End If
Next
ActiveChart.SetSourceData Source:=oChartRange
...
当然,您需要记住,在公式中使用该单元格时,该单元格中可能存在错误值。因此,也许您必须使用
IFERROR
。但无论如何,我不会使用0,因为0是一个有价值的数字,它的含义不同于空白。空白表示不可用,而不是0。因此,我真的想在这里使用#N/A
。您是否尝试过将ActiveChart.displaybanksas
设置为xlInterpolated
或xlZero
?@controlnetic.nomad不幸的是,这两个选项都没有提供解决方案。您能否发布一个示例,说明预期的结果和您得到的结果,所以我们可以比较?@controlnetic.nomad请查看我的帖子以获取包含的图片。希望这有帮助。再次感谢您的持续帮助!由于您使用的是联合区域作为图表的源数据,因此该联合区域中的所有空单元格都不会被放入源中。因此,在该并集范围内不能有空单元格。没有值的单元格必须是#N/A
。您是否尝试过将ActiveChart.DisplayBlanksAs
设置为xlInterpolated
或xlZero
?@controlnetic.nomad不幸的是,这两个选项都没有提供解决方案。您能否发布一个示例,说明预期的结果和您得到的结果,所以我们可以比较?@controlnetic.nomad请查看我的帖子以获取包含的图片。希望这有帮助。再次感谢您的持续帮助!由于您使用的是联合区域作为图表的源数据,因此该联合区域中的所有空单元格都不会被放入源中。因此,在该并集范围内不能有空单元格。没有值的单元格必须是#N/A
。在我将我的用户表单调整为使用.text
读取#N/A后,您的解决方案开始工作。现在需要弄清楚如何让我的userform在加载时不显示#N/A
值。在我将我的userform调整为使用.text
读取#N/A后,您的解决方案可以正常工作。现在需要弄清楚如何让我的userform在加载时不显示#N/A
值