3

VBを使用してExcelシートにグラフをプロットしようとしています。

だから今私は ここに与えられた指示に従っています

1-私はVS2010でExcelgraphと呼ばれる新しいVBプロジェクトを開始しました。

2-デフォルトでForm1.vb[Design]を取得しました。

3-このフォームで、ツールボックスからボタンをドラッグしてボタンを作成しました。

4-ダブルクリックすると、新しいForm1.vbが開きます。

5-このファイル、つまりForm1.vbファイルで自動的に生成されたものをすべて削除し、次のコードを貼り付けました。

更新されたコード

これは別のコードであり、VisualBasic6.0と互換性のある最新のコードです。

 Public Class Form1



  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As 
  System.EventArgs) Handles Button1.Click

    Dim oXL As Object        ' Excel application
    Dim oBook As Object      ' Excel workbook
    Dim oSheet As Object     ' Excel Worksheet
    Dim oChart As Object     ' Excel Chart

    Dim iRow As Integer      ' Index variable for the current Row
    Dim iCol As Integer      ' Index variable for the current Row

    Const cNumCols = 10      ' Number of points in each Series
    Const cNumRows = 2       ' Number of Series


    ReDim aTemp(0 To cNumRows, 0 To cNumCols)

    'Start Excel and create a new workbook
    oXL = CreateObject("Excel.application")
    oBook = oXL.Workbooks.Add
    oSheet = oBook.Worksheets.Item(1)

    ' Insert Random data into Cells for the two Series:
    Randomize(Now().ToOADate())
    For iRow = 1 To cNumRows
        For iCol = 1 To cNumCols
            aTemp(iRow, iCol) = Int(Rnd() * 50) + 1
        Next iCol
    Next iRow
    oSheet.Range("A1").Resize(cNumRows, cNumCols).Value = aTemp

    'Add a chart object to the first worksheet
    oChart = oSheet.ChartObjects.Add(50, 40, 300, 200).Chart
    oChart.SetSourceData(Source:=oSheet.Range("A1").Resize(cNumRows, cNumCols))

    ' Make Excel Visible:
    oXL.Visible = True

    oXL.UserControl = True

    End Sub



End Class

アップデート

上記のようにコードを更新しました。

エラー

    'aTemp' is not declared. It may be inaccessible due to its protection level.    
     c:\users\ybf4 \documents\visual studio 2010\Projects\Excelgraph2
     \Excelgraph2\Form1.vb

私がなんとか取り除くことができたさらに2つのエラーがありました。このエラーを取り除くにはどうすればよいですか?

上記のコードをVisualStudio2010でコンパイルしており、OfficeはOffice2007です。

4

3 に答える 3

3

シンプルで些細なプログラムで、私が推測したとおりのエラーが明らかになりました。存在しないもののサイズを変更することはできません!

Derek が言ったように、ReDim を Dim に変更する必要があります。または、最初に宣言する必要があります。

失敗:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Const cNumCols = 10      ' Number of points in each Series
    Const cNumRows = 2       ' Number of Series

    ReDim aTemp(0 To cNumRows, 0 To cNumCols)
End Sub

パス:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Const cNumCols = 10      ' Number of points in each Series
    Const cNumRows = 2       ' Number of Series
    Dim aTemp

    ReDim aTemp(0 To cNumRows, 0 To cNumCols)
End Sub

パス:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Const cNumCols = 10      ' Number of points in each Series
    Const cNumRows = 2       ' Number of Series

    Dim aTemp(0 To cNumRows, 0 To cNumCols)
End Sub

aTemp にカーソルを合わせると、これがわかるはずです。また、問題を示す青い波線で下線が引かれているはずです。

于 2012-10-08T00:53:39.487 に答える
1

私がこれを行ってから長い時間が経ちましたが、コードを見るだけで、変更する必要があると思います。

ReDim aTemp(0 To cNumRows, 0 To cNumCols) 

に:

Dim aTemp(0 To cNumRows, 0 To cNumCols)

ReDimは、配列のディメンション化後に配列のディメンションを再設定するために使用されます(Dimステートメントを使用)

于 2012-10-08T00:27:40.300 に答える
0

それは非常に古いコードです (VB3 用なので、最初の VB.Net の 4 世代前、および Excel 5 です)。

ただし、示されている 2 行をコメントアウトするだけで、コードは正常に動作するはずです。

ワークシートに追加されるエントリのランダム性は異なる場合がありますが、とにかくそのコードを置き換えることになるため (どこでRnd()が使用されているか)、問題にはなりません。(あなたの目的はランダムなグラフを生成することではないと思います)

に関してはDoEvents、それが必要だったかどうかはわかりません。

于 2012-10-05T07:04:24.123 に答える