Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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
VBA Excel组合字符串并转换为图表对象_Vba_Excel - Fatal编程技术网

VBA Excel组合字符串并转换为图表对象

VBA Excel组合字符串并转换为图表对象,vba,excel,Vba,Excel,我正在尝试构建一个函数,该函数循环遍历一行数据,将每个单元格分配给一个变量,然后在函数中使用这些变量复制粘贴图形或范围 我遇到的问题是将图表路径构建为字符串变量的组合,我可以从wb、sheet和chartName字符串变量中创建一个字符串形式的图表路径,但我很难将其转化为图表对象 用Dim cht as Chart运行下面的代码,我得到错误(1) 运行时错误“91”:未设置对象变量或带有黑色变量 当我将cht设置为字符串时,我得到了错误(2) “编译错误:ByRef参数类型不匹配” 这是我的代码

我正在尝试构建一个函数,该函数循环遍历一行数据,将每个单元格分配给一个变量,然后在函数中使用这些变量复制粘贴图形或范围

我遇到的问题是将图表路径构建为字符串变量的组合,我可以从wb、sheet和chartName字符串变量中创建一个字符串形式的图表路径,但我很难将其转化为图表对象

Dim cht as Chart
运行下面的代码,我得到错误(1)

运行时错误“91”:未设置对象变量或带有黑色变量

当我将cht设置为字符串时,我得到了错误(2)

“编译错误:ByRef参数类型不匹配”

这是我的代码-我已经注释了错误位置

Sub RollingCode()

    Dim height As Double
    Dim weight As Double
    Dim gender As String
    Dim newWeight As Double
    Dim ImageType As String
    Dim wB As String
    Dim sH As String
    Dim NameRange As String
    Dim Sld As Integer
    Dim DataTyp As Integer
    Dim TopPos As Integer
    Dim LeftPos As Integer
    Dim WidthPos As Integer
    Dim HeightPos As Integer
    Dim rng As Range
    Dim cht As String 'WHEN CHART ERROR 1, WHEN STRING ERROR 2

    'Open powerpoint
    'Call Module2.OpenPowerpoint


    Dim lastRow As Integer
    lastRow = ThisWorkbook.Sheets("Graphs").Range("A" & Rows.Count).End(xlUp).Row

    For i = 2 To lastRow

        ImageType = Range("A" & i).Value
        wB = Range("B" & i).Value
        sH = Range("C" & i).Value
        NameRange = Range("D" & i).Value
        Sld = Range("E" & i).Value
        DataTyp = Range("F" & i).Value
        TopPos = Range("G" & i).Value
        LeftPos = Range("H" & i).Value
        WidthPos = Range("I" & i).Value
        HeightPos = Range("J" & i).Value

        If wB = "Active" Then
            Select Case ImageType

                   Case "chart", "Chart"

                        cht = "ThisWorkbook.Worksheets(" & sH & ").ChartObjects(" & NameRange & ").Chart" 'ERROR 1 HERE

                        'MsgBox cht
                        CopyPasteChartFull Sld, cht, LeftPos, TopPos, WidthPos, HeightPos 'ERROR 2 HERE

                   Case "Range", "range"
                        MsgBox "Range"
                   Case Else
                        MsgBox "Incorrect"
                   End Select

        Else
            Select Case ImageType

             'Irrelevant code here

            End If

    Next i

End Sub
总之,如何将字符串转换为图表对象,其中wb=active、sh=“Forecast”和NameRange=“chart 1”


感谢

无需“设置cht=是否为自定义项?如果是,代码在哪里?如果声明为
Dim cht as Chart
它应该类似于
set cht=This工作簿。工作表(sH)。图表对象(名称范围).Chart
@tisbutascartch这意味着工作表或chartobject不存在。调试代码,并通过使用F8逐步检查
sH
NameRange
中的值。刚刚开始工作!这是因为我实际通过了“预测”“而且没有预测,因此它找不到表。谢谢大家的帮助