• 締切済み

VBA  FOR・・・・NEXについて

★から★までのコードがどうしても成立しません、★以外は線分としてコードが成立するのですが ★から★を入れると成立しません。どう構築したいいのでしょうか、宜しくお願いします。 エクセルでCVSファイルの数値を線分として図面に記入するためのコードになります。 説明不足ですが、宜しくお願いします。 Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click ' LineData用の変数です。 Dim cadLineData As New zwDrawCAD.LineData Dim cadStartPoint As zwDrawCAD.DPoint = cadLineData.Start Dim cadEndPoint As zwDrawCAD.DPoint = cadLineData.End 'とりあえず線のスタート点は(100,100)にしてます。 Const X As Integer = 100 'cadStartPoint.x = 100 Const Y As Integer = 100 'cadStartPoint.y = 100 Const xx As Integer = 5 Const yy As Integer = 6 Dim len As Integer 'TextBox1に入力された線の長さ Dim angle As Double 'TextBox2に入力された角度 単位は度 Dim ansx As Integer '計算された、xの座標 Dim ansy As Integer '計算された、yの座標  ★ Dim ddd(5, 6) As Integer 'TEXTの階数 xx = 5 yy = 6 FILETIME = "c:\DummyData.csv" Open Filename For Input As #1 For i = 1 To yy For j = 1 To xx Input #1, ddd(xx, yy) Next j Next i ★ Close #1 len = CDbl(TextBox5.Text / 2) angle = CDbl(TextBox2.Text + 90) ansx = X + len * (Math.Cos(angle / 180 * Math.PI)) '終点のx座標 ansy = Y + len * (Math.Sin(angle / 180 * Math.PI)) '終点のy座標 cadStartPoint.x = 100 cadStartPoint.y = 100 cadEndPoint.x = ansx cadEndPoint.y = ansy ' 参照したオブ ジェクトを解放します。 System.Runtime.InteropServices.Marshal.ReleaseComObject(cadStartPoint) ' アクティブなDocumentを参照します。 Dim cadDocument As zwDrawCAD.Document = cadApplication.ActiveDocument ' 現在の作図属性を参照します。 Dim cadCurrentDraw As zwDrawCAD.DrawData = cadDocument.CurrentDraw ' 現在のレイヤ、線種、線幅、線色を設定します。 cadLineData.LayerNo = cadCurrentDraw.LayerNo cadLineData.PenStyle = cadCurrentDraw.PenStyle cadLineData.PenWidth = cadCurrentDraw.PenWidth cadLineData.PenColor = cadCurrentDraw.PenColor ' 参照したオブジェクトを解放します。 System.Runtime.InteropServices.Marshal.ReleaseComObject(cadCurrentDraw) ' データベースを参照します。 Dim cadDataBase As zwDrawCAD.CADDB = cadDocument.DataBase ' Undo情報を設定します。 cadDataBase.SetDelimitter("始点座標(100,100) 終点座標((ansx,ansy) の線分") ' 追加した要素の参照用変数です。 Dim cadAddPrimitive As zwDrawCAD.Primitive ' 要素を追加します。 cadAddPrimitive = cadDataBase.Add(cadLineData) ' 参照したオブジェクトを解放します。 System.Runtime.InteropServices.Marshal.ReleaseComObject(cadAddPrimitive) System.Runtime.InteropServices.Marshal.ReleaseComObject(cadLineData) System.Runtime.InteropServices.Marshal.ReleaseComObject(cadDataBase) System.Runtime.InteropServices.Marshal.ReleaseComObject(cadDocument)

みんなの回答

  • DUDDLAY
  • ベストアンサー率66% (136/203)
回答No.1

Duddlay と申します。 Input で配列 ddd(,) に入力するとき、 Input #1, ddd(xx, yy) だと、変数 xx と yy は固定値であるため、配列 ddd(5, 6) にのみ値が 入ってしまうので、 Input #1, ddd(i, j) とするのが正解ではないのでしょうか。 以上、ご参考までに。

関連するQ&A