当第二个 sheet 打开并选中所有单元格时,Excel 中的图表 sheet 不工作

Chart sheet in Excel not working when second sheet open with all cells selected

excel vba 中的图表 sheet 出现了奇怪的情况。我通常有一个带有数据的 Sheet 和一个带有根据该数据创建图表 sheet 的宏的按钮。像这样:

Set ChartSheet1 = Charts.Add(After:=Sheets(Sheets.Count))

但一些用户在 excel 中有一些代码,它打开时有两个 sheet,其中一个选择了所有单元格,它们都是空的( second sheet with all cells selected)。图表的数据在第一个 sheet 上,而我没有使用第二个 sheet 中的任何数据(反正它是空的)。

在这种情况下,当我想要创建图表时,什么也没有发生,并且焦点更改为第二个 sheet。如果我取消选择单元格,则图表有效。此外,如果选择了随机范围的单元格,则图表可以正常工作。只有当所有内容都被选中时才会出现这种情况。

您是否知道为什么会发生这种情况?除了在 运行 创建图表之前取消选择所有内容之外,还有其他解决方案吗?

编辑添加代码:

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         

作为解决方法,请执行类似的操作:

Dim OldSelection As Range
Set OldSelection = Selection

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

'run your code here …

OldSelection.Select 're-select it

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