2016-12-06 3 views
1

これはExcel VBAクラスの最終プロジェクトの一部です。私は式と結果をMathResultsシートに書き込む電卓アプリを作成しました。私の次のタスクは、結果を受け取り、それらを使ってチャートシートを作成することです。私が下のコードから得ている問題は、添え字が範囲外であることです。ws = Sheets( "MathResults")です。このコードは、ワークシートを選択してデータを書き込むときにうまくいきました。フォーム上のボタンとワークシート上のデータからチャートを作成する方法

Private Sub bttnAddChart_Click() 
    'variables 
    Dim dataRange As Range 
    Dim endRow As Integer 
    Set ws = Sheets("MathResults") 

    'find the end of the row 
    endRow = ws.Range("A:A").Find(What:="", After:=Range("A1")).Row 

    'set the data range 
    Set dataRange = ws.Range("B2:B" & endRow) 

    Charts.Add 
    With ActiveChart 
     .ChartType = xlColumnClustered 
     .Legend.Position = xlRight 
     .Axes(xlCategory).MinorTickMark = xlOutside 
     .Axes(xlValue).MinorTickMark = xlOutside 
    End With 
End Sub 

答えて

0

明らかに、ブックには"MathResults"という名前のシートがありません。あなたが欲しいものはそれを作成してを作成してください。

に変更

Set ws = Sheets("MathResults")

:それはまだ存在していない場合はいっそ

Set ws = Sheets.Add 
ws.Name = "MathResults" 

、あなたはシートを見つけ、それを作成しようとすることができます

On Error Resume Next 
Set ws = Sheets("MathResults") 
If ws Is Nothing Then ' <~~ the sheet is not there yet, we need to create it 
    Set ws = Sheets.Add 
    ws.Name = "MathResults" 
End If 
On Error GoTo 0 
+0

これはMathResultsという名前のシートを持っています。すでに述べたように、私はすでにシートにデータを書き込んでおき、ここで問題を引き起こした同じコードでシートを選択しました。 – codingYogi

+0

@codingYogiシート「MathResults」が既に存在する場合、それを含むブックはアクティブなものではない可能性があります。このルーチンを呼び出すときにブック以上のものを開いていますか? –

+0

あなたは正しいです、私は複数のワークブックを開いていますありがとう!何らかの理由で、私は今すぐコードシートを追加しますが、フリーズは空白のチャートにExcelを実行します。これが起こる何らかの理由を考えることができますか? – codingYogi

関連する問題