Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 编辑代码时出现问题(调用错误的工作表)-错误(运行时错误';1004';)无效参数_Excel_Vba - Fatal编程技术网

Excel 编辑代码时出现问题(调用错误的工作表)-错误(运行时错误';1004';)无效参数

Excel 编辑代码时出现问题(调用错误的工作表)-错误(运行时错误';1004';)无效参数,excel,vba,Excel,Vba,此代码是从中找到的 我试图通过将表放在一个表中,将图形放在另一个表中来编辑它 原件: Sub PieMarkers() Dim chtMarker As Chart Dim chtMain As Chart Dim intPoint As Integer Dim rngRow As Range Dim lngPointIndex As Long Application.ScreenUpdating = False Set chtMarker = ActiveSheet.ChartObject

此代码是从中找到的

我试图通过将表放在一个表中,将图形放在另一个表中来编辑它

原件:

Sub PieMarkers()

Dim chtMarker As Chart
Dim chtMain As Chart
Dim intPoint As Integer
Dim rngRow As Range
Dim lngPointIndex As Long

Application.ScreenUpdating = False
Set chtMarker = ActiveSheet.ChartObjects(“chtMarker”).Chart
Set chtMain = ActiveSheet.ChartObjects(“chtMain”).Chart

Set rngRow = Range(ThisWorkbook.Names(“PieChartValues”).RefersTo)

For Each rngRow In Range(“PieChartValues”).Rows

chtMarker.SeriesCollection(1).Values = rngRow
chtMarker.Parent.CopyPicture xlScreen, xlPicture
lngPointIndex = lngPointIndex + 1
chtMain.SeriesCollection(1).Points(lngPointIndex).Paste

Next

lngPointIndex = 0

Application.ScreenUpdating = True

End Sub 
我的编辑是添加一个

 Dim wk As Worksheet

Set wk = Worksheets("Sheet1")
图表的位置(在表1中)

Set chtMain = wk.ChartObjects("chtMain").Chart
这行代码就是问题所在

chtMarker.SeriesCollection(1).Values = rngRow

感谢所有帮助过你的人

我附上了一个解决方案,该方案是在所有人的帮助下建立的。干杯

Sub PieMarkers()

    Dim chtMarker As Chart
    Dim chtMain As Chart
    Dim intPoint As Integer
    Dim rngRow As Range
    Dim lngPointIndex As Long
    Dim wk As Worksheet

     Application.ScreenUpdating = False

    Set wk = Sheets("Sheet1")
    Set chtMarker = ActiveSheet.ChartObjects("chtMarker").Chart
    Set chtMain = wk.ChartObjects("chtMain").Chart

    Set chtMain = wk.ChartObjects("chtMain").Chart
    Set rngRow = Range(ThisWorkbook.Names("PieChartValues").RefersTo)

    For Each rngRow In Range("PieChartValues").Rows
        chtMarker.SeriesCollection(1).Values = rngRow
        chtMarker.Parent.CopyPicture xlScreen, xlPicture
        lngPointIndex = lngPointIndex + 1
        chtMain.SeriesCollection(1).Points(lngPointIndex).Paste
    Next

    lngPointIndex = 0

    Application.ScreenUpdating = True

End Sub

请注意,VBA中不允许使用
的花哨引号。您必须在代码中将它们更改为直接的
。替换它们。@TimStack它已被编辑。这是我的一个错误。这个
Set rngRow=Range(ThisWorkbook.Names(“PieChartValues”).referesto)
似乎也没有必要,因为您以后将
rngRow
用作每个
循环的
变量。同样,图表的
工作表
无法通过
工作表
对象访问,但是应该通过
工作表
而不是=>
设置wk=Sheets(“Sheet1”)
@StavrosJon我按照您的建议做了,发现错误仍然存在,问题仍然相同请注意,这一行仍然有两次
设置chtMain=wk.ChartObjects(“chtMain”).Chart
删除其中一个。还可以删除不需要的
Set rngRow=Range(thishworkbook.Names(“PieChartValues”).referesto)
,因为您已经在
中为每个
循环设置了
rngRow