【问题标题】:Chart sheet in Excel not working when second sheet open with all cells selected当第二张工作表打开并选择所有单元格时,Excel 中的图表工作表不起作用
【发布时间】: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         

【问题讨论】:

  • 请显示所有相关代码。问题不在您显示的代码行中。你的代码中有.SelectSelection 语句吗?
  • 当您创建图表时,它通常会尝试使用任何已选择的数据。如果选择了整个工作表,则可能会导致问题。确保不选择整个工作表将是一个很好的解决方案。
  • @Pᴇʜ 感谢您抽出宝贵的时间。代码比较复杂,我尽量简化情况。我使用命名范围来构建图表,我不使用选定范围。我不使用任何选择或 .Selects,只使用“直接”对象。我会尝试通过代码来寻找一些相关的部分。
  • @AnastasiaV 好吧,看起来就像蒂姆所说的那样。在开始添加图表表之前,请输入ActiveSheet.Range("A1").Select 之类的内容。所以整个单元格选择消失了。
  • @Pᴇʜ 谢谢解答。我希望找到一个解决方案,而不必取消选择用户可能需要的范围。在第二张表中选择的任何其他范围都没有问题,只有在选择所有内容时:/

标签: excel vba excel-charts


【解决方案1】:

作为一种解决方法,请执行以下操作:

Dim OldSelection As Range
Set OldSelection = Selection

ActiveSheet.Range("A1").Select 'de-select old selection

'run your code here …

OldSelection.Select 're-select it

所以最终选择了与执行代码之前相同的单元格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多