VBA Excel组合字符串并转换为图表对象
我正在尝试构建一个函数,该函数循环遍历一行数据,将每个单元格分配给一个变量,然后在函数中使用这些变量复制粘贴图形或范围 我遇到的问题是将图表路径构建为字符串变量的组合,我可以从wb、sheet和chartName字符串变量中创建一个字符串形式的图表路径,但我很难将其转化为图表对象 用VBA Excel组合字符串并转换为图表对象,vba,excel,Vba,Excel,我正在尝试构建一个函数,该函数循环遍历一行数据,将每个单元格分配给一个变量,然后在函数中使用这些变量复制粘贴图形或范围 我遇到的问题是将图表路径构建为字符串变量的组合,我可以从wb、sheet和chartName字符串变量中创建一个字符串形式的图表路径,但我很难将其转化为图表对象 用Dim cht as Chart运行下面的代码,我得到错误(1) 运行时错误“91”:未设置对象变量或带有黑色变量 当我将cht设置为字符串时,我得到了错误(2) “编译错误:ByRef参数类型不匹配” 这是我的代码
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
中的值。刚刚开始工作!这是因为我实际通过了“预测”“而且没有预测,因此它找不到表。谢谢大家的帮助