Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何在Microsoft Visual Basic Express 2010中创建和删除(或移动)自由形状_Vb.net_Excel_Basic_Vba - Fatal编程技术网

Vb.net 如何在Microsoft Visual Basic Express 2010中创建和删除(或移动)自由形状

Vb.net 如何在Microsoft Visual Basic Express 2010中创建和删除(或移动)自由形状,vb.net,excel,basic,vba,Vb.net,Excel,Basic,Vba,我已经通过一组VBA命令在Microsoft Excel中创建和删除了多个自由形式的形状,并且希望在Microsoft Visual Basic Express 2010中也这样做,但我真的一事无成!Excel中的创建代码如下所示: With Sheet1.Shapes.BuildFreeform(msoEditingAuto, triXArray(1), triYArray(1)) For cnt = 2 To 4 .AddNodes msoSegmentLine, m

我已经通过一组VBA命令在Microsoft Excel中创建和删除了多个自由形式的形状,并且希望在Microsoft Visual Basic Express 2010中也这样做,但我真的一事无成!Excel中的创建代码如下所示:

With Sheet1.Shapes.BuildFreeform(msoEditingAuto, triXArray(1), triYArray(1))
    For cnt = 2 To 4
        .AddNodes msoSegmentLine, msoEditingAuto, triXArray(cnt), triYArray(cnt)
    Next
End With

triXArray()和triYArray()是点的X和Y坐标的数组,cnt是循环通过项的计数器(它是一个三角形)。

这就是如何在Excel中从VB.Net创建和删除自由形状的方法

.ConvertToShape()
之后,需要将自由形式指定给形状。这样,您就可以使用它(删除、移动)


但这并没有告诉我如何在Visual Basic Express中创建它,否则我已经解决了这个问题,老实说。啊,对了-谢谢!我这边有误解。你的问题解决了吗?我一直在抱怨,但运气不好。我使用的是Visual Basic Express 2010,这可能是一个错误的应用程序。有很多,但类似于“MsoEd”的应用程序没有声明,或者“MsoEditingAuto”没有声明。我确实从3个导入开始…您是否添加了对Excel对象库的引用?
Imports Excel = Microsoft.Office.Interop.Excel
Imports MsoEd = Microsoft.Office.Core.MsoEditingType
Imports MsoSg = Microsoft.Office.Core.MsoSegmentType

Public Class Form1
    '~~> Define your Excel Objects
    Dim xlApp As New Excel.Application
    Dim xlWorkBook As Excel.Workbook
    Dim xlWorkSheet As Excel.Worksheet
    Dim shpFF As Excel.FreeformBuilder
    Dim Shp As Excel.Shape

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        '~~> Add a New Workbook
        xlWorkBook = xlApp.Workbooks.Add
        '~~> Work with first sheet
        xlWorkSheet = xlWorkBook.Sheets(1)

        '~~> Create the Freeform shape
        shpFF = xlWorkSheet.Shapes.BuildFreeform(MsoEd.msoEditingCorner, 360, 200)

        With shpFF
            '~~> Add the nodes. You can use your array method as well
            .AddNodes(MsoSg.msoSegmentCurve, MsoEd.msoEditingCorner, _
             380, 230, 400, 250, 450, 300)
            .AddNodes(MsoSg.msoSegmentCurve, MsoEd.msoEditingAuto, 480, 200)
            .AddNodes(MsoSg.msoSegmentLine, MsoEd.msoEditingAuto, 480, 400)
            .AddNodes(MsoSg.msoSegmentLine, MsoEd.msoEditingAuto, 360, 200)

            '~~> Convert it to shape and assign it
            Shp = .ConvertToShape()

            '~~> Display Excel
            xlApp.Visible = True
        End With

        MessageBox.Show ("Wait")

        '~~> Delete the shape
        Shp.Delete()
    End Sub
End Class