Excel-VBA初心者です。だから、私は赤ちゃんのステップを自分自身に教えるために小さなプロジェクトを試みています. 作成したユーザーフォームでユーザーがクリックしたボタンに応じて、sin (x)、cos (x)、または tan (x) の曲線を表示するインタラクティブなグラフを作成したいと考えています。
以下は、モジュール 1 の VBA コードです。このコードは、グラフを作成し、ワークシートにグラフを配置し、x 値を生成し、sin (x) セットの y 値を生成します。これまでのところ、sin (x) セットの y 値のみを作成しました。これは、ユーザー フォーム ボタンに実行させたいことを実行させることに関心があるためです。また、急いでこの質問を投稿したかったのです!
Option Explicit
---------------------------------------------------------------------------------
Sub one()
'VARIABLES
Dim Row As Integer
Dim j As Single
Dim pi As Single
pi = 3.14159265359
'LABEL X SET
Cells(1, 38).Value = "X"
'GENERATE X VALUES
j = -4 * pi
For Row = 2 To 82
Cells(Row, 38).Value = j
j = j + 0.025 * pi
Next Row
'LABEL / GENERATE Y VALUES = SIN ( X )
Cells(1, 39).Value = "SIN ( X )"
For Row = 2 To 82
Cells(Row, 39).Value = Sin(Cells(Row, 38).Value)
Next Row
'CREATE CHART 1
Dim c As Chart
Set c = ActiveWorkbook.Charts.Add
Set c = c.Location(where:=xlLocationAsObject, Name:="Sheet1")
With c
.ChartType = xlXYScatter
.Axes(xlValue).MajorGridlines.Delete
.Legend.Delete
End With
'POSITION CHART 1
Dim cobject As ChartObject
Dim r As Range
Set cobject = ActiveSheet.ChartObjects(1)
Set r = ActiveSheet.Range(Cells(1, 1), Cells(37, 22))
cobject.Left = r.Left
cobject.Top = r.Top
cobject.Width = r.Width
cobject.Height = r.Height
'DISPLAY USERFORM 1
Userform1.Show
End Sub
私が作成した単純なユーザーフォームには、3 つのコマンド ボタンがあります。ボタン 1 は Sin (x)、ボタン 2 は Cos (x)、ボタン 3 は Tan (x) です。以下は、Button1_Click 用に作成したコードです。モジュール 1 の一部ではありません。これは、プロジェクト エクスプローラーの独自のセクションの下にあります。VBAProject/Forms/Userform1
Option Explicit
---------------------------------------------------------------------------------------
Private Sub CommandButton1_Click()
Dim sinx As Series
Set sinx = c.SeriesCollection.NewSeries :::ERROR
With sinx
.Values = Range(Cells(2, 39), Cells(82, 39))
.XValues = Range(Cells(2, 38), Cells(82, 38))
.Format.Fill.ForeColor.RGB = rgbBlack
c.SeriesCollection(1).MarkerSize = 2
End With
End Sub
そこで... モジュール 1 を実行します。x 値をそれぞれの範囲に正常に生成し、sin (x) 値をそれぞれの範囲に生成し、グラフを作成して配置し、UserForm1 を表示します。でも!ユーザーフォームのボタン 1 をクリックすると、エラーが発生します...
コンパイル エラー: 変数が定義されていません
エラーの原因となっているコード行が強調表示されます。このコード行を :::ERROR で示しました。モジュール 1 でチャートとして定義した "c" をエラーが参照していると仮定します。定義された変数はモジュール 1 から userform1 に転送されないと思います。
私の目的は、ユーザーがユーザーフォームのsin(x)別名ボタン1またはcos(x)ボタン2またはtan(x)ボタン3をクリックできるようにすることであり、その後、sin、cos、またはtanのいずれかの曲線が上がるはずですチャート上。この問い合わせに対してコメントをくださったstackoverflowのすべてのメンバーに事前に感謝します。助けていただければ幸いです。