Excel中的图表工作表在第二个工作表打开并选中所有单元格时不起作用



我在 excel vba 中有一个图表表有一个奇怪的情况。我通常有一个包含数据的工作表和一个带有宏的按钮,可以从该数据创建图表工作表。喜欢这个:

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

但是有些用户在 excel 中有一些代码,它以两张纸打开,其中一张纸选择了所有单元格,它们都是空的( 选中所有单元格的第二张纸(。图表的数据在第一张纸上,我没有使用第二张纸中的任何内容(无论如何都是空的(。

在这种情况下,当我想创建图表时,没有任何反应,焦点更改为第二张工作表。如果我取消选择单元格,则图表有效。此外,如果选择了单元格的随机范围,则图表工作正常。只有当所有内容都被选中时

你对为什么会发生这种情况有任何线索吗?除了在运行图表创建之前取消选择所有内容之外,还有其他解决方案吗?

编辑以添加代码:

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

因此,最终选择与执行代码之前相同的单元格。

相关内容

最新更新