0
strCode = "Private Sub AcclvsTime() " & vbCr _
 & "Set myChtObj = oExcelWriteWorkSheet.ChartObjects.Add(100,375,75,225) "& vbCr _
 & "myChtObj.Chart.ChartType = 4 " & vbCr _
 & "myChtObj.Chart.SetSourceData  objWriteWorkbook.Sheets("sheet2").Range("A1:B15")" & vbCr _
& "End Sub"
objWriteExcel.VBE.ActiveVBProject.VBComponents.Item("Sheet1").CodeModule.AddFromString(strCode)

このコードを実行すると、「4行目にあるステートメントの終わり」というエラーが発生しました(& "myChtObj.Chart.SetSourceData objWriteWorkbook.Sheets("sheet2").Range("A1:B15")" & vbCr _

誰かが私を助けてくれますか?間違いはどこにありますか?

4

3 に答える 3

0
" ... Range("A1:B15")" & vbCr

"sheet2"4行目の引用符内の引用符に注意してください(との両方"A1:B15")-修正する必要があります。

引用符の中に引用符を入れたい場合は、エスケープすることで実行できます。二重引用符で囲まれた文字列内の 2 つの連続"する文字は、単一の に変換されます"

"the word ""xyzzy"" is quoted"

chr(34)または、見積もりを取得するために使用することもできます。

"the word " & chr(34) & "xyzzy" & chr(34) & " is quoted"

これは、より複雑なケースでは好ましいかもしれませんが、私はめったに必要としませんでした。

于 2013-03-21T12:58:29.197 に答える
0

連結による文字列の作成は面倒で、エラーが発生しやすくなります。特に、結果が複数行の文字列の場合は、Join を使用します。

strCode = Join( Array( _
        "Private Sub AcclvsTime()" _
      , "  Set myChtObj = oExcelWriteWorkSheet.ChartObjects.Add(100,375,75,225)" _
      , "  myChtObj.Chart.ChartType = 4" _
      , "  myChtObj.Chart.SetSourceData objWriteWorkbook.Sheets(""sheet2"").Range(""A1:B15"")" _
      , "End Sub" _
), vbCrLf)
WScript.Echo strCode

出力:

Private Sub AcclvsTime()
  Set myChtObj = oExcelWriteWorkSheet.ChartObjects.Add(100,375,75,225)
  myChtObj.Chart.ChartType = 4
  myChtObj.Chart.SetSourceData objWriteWorkbook.Sheets("sheet2").Range("A1:B15")
End Sub

&と繰り返しのものによって引き起こされるノイズを減らしvbCr(Lf)ます。これにより、問題/間違いを確認する機会が向上します。(正確に2 つのリテラル - "sheet2"、"A1:B15" - 引用)。

追記:

犯人は次のとおりです。

"whatever("sheet2").Range("A1:B15")"

それは明らかです、その救済策

"whatever(""sheet2"").Range(""A1:B15"")"

よりも読み取り/チェック/書き込みが容易で、エラーが発生しにくい

"whatever(" & Chr(24) & "sheet2" & Crh(34) & ").Range(" & Chr(34) + "A1:B15" & Chr(32) & ")"

& Chr(34) &s でスプライシングしてリテラル内の "" を回避することは、悪い戦略です。

于 2013-03-21T13:26:22.647 に答える
0

@paxdiablo: コメントしますが、コメント ボタンが表示されません。

ただし、Range("A1:B15")"& vbCr からの 2 番目の引用は、"myChtObj.Chart.SetSourceData

どの種類の end ステートメントが必要になるかわからないため、コードの完全なブロックがあるとより効果的です。つまり、あなた"End Sub"は二重引用符で囲まれています。それがサブの終わりである場合は、それらを取り出す必要があります。

于 2013-03-21T13:08:12.247 に答える