【发布时间】:2020-05-15 16:45:13
【问题描述】:
我在 excel vba 中遇到了一个奇怪的情况。我通常有一个带有数据的工作表和一个带有宏的按钮,该宏可以从该数据创建图表工作表。像这样:
Set ChartSheet1 = Charts.Add(After:=Sheets(Sheets.Count))
但是有些用户在 excel 中有一些代码,它打开时有两张纸,其中一张选择了所有单元格,它们都是空的(
second sheet with all cells selected)。图表的数据在第一张纸上,我没有使用第二张纸上的任何东西(无论如何都是空的)。
在这种情况下,当我想创建图表时,什么也没有发生,焦点变为第二张表。如果我取消选择单元格,则图表有效。此外,如果选择了随机范围的单元格,则图表可以正常工作。只有当所有内容都被选中时。
您对为什么会发生这种情况有任何线索吗?除了在运行图表创建之前取消选择所有内容之外,还有其他解决方案吗?
编辑添加代码:
Sub chartSheet()
Dim wb As Workbook
Set wb = ActiveWorkbook
Dim ws As Worksheet
Set ws = wb.ActiveSheet
If ws Is Nothing Then
MsgBox ""
Exit Sub
End If
Set ChartSheet1 = Charts.Add(After:=Sheets(Sheets.Count))
With ChartSheet1
.SetSourceData Source:=ws.Range(namedRange)
.FullSeriesCollection(1).XValues = ws.Range(otherNamedRange)
.FullSeriesCollection(1).Name = ws.Range(namedRange).Item(1)
While (condition)
.SeriesCollection.NewSeries
.FullSeriesCollection(X).Values = ws.Range(namedRange)
.FullSeriesCollection(X).XValues = ws.Range(otherNamedRange)
.FullSeriesCollection(X).Name = ws.Range(namedRange).Item(1)
X = X + 1
wend
end sub
【问题讨论】:
-
请显示所有相关代码。问题不在您显示的代码行中。你的代码中有
.Select或Selection语句吗? -
当您创建图表时,它通常会尝试使用任何已选择的数据。如果选择了整个工作表,则可能会导致问题。确保不选择整个工作表将是一个很好的解决方案。
-
@Pᴇʜ 感谢您抽出宝贵的时间。代码比较复杂,我尽量简化情况。我使用命名范围来构建图表,我不使用选定范围。我不使用任何选择或 .Selects,只使用“直接”对象。我会尝试通过代码来寻找一些相关的部分。
-
@AnastasiaV 好吧,看起来就像蒂姆所说的那样。在开始添加图表表之前,请输入
ActiveSheet.Range("A1").Select之类的内容。所以整个单元格选择消失了。 -
@Pᴇʜ 谢谢解答。我希望找到一个解决方案,而不必取消选择用户可能需要的范围。在第二张表中选择的任何其他范围都没有问题,只有在选择所有内容时:/
标签: excel vba excel-charts