VB.Net:在某个单元格中插入形状

时间:2016-12-12 16:40:16

标签: excel vb.net vba cell shape

我试图在特定的单元格中插入一个形状,例如(5,5)。我能够将形状变为excel,但无法弄清楚如何将其放入(5,5)。经过研究,我知道形状位于工作表中的单元格顶部。我还了解到.Range在这里可能会有所帮助。

我只是不确定如何将这些拼图拼凑起来以使我的形状变为(5,5)。

xlWorkSheet.Shapes.AddShape(MsoAutoShapeType.msoShapeIsoscelesTriangle, 17, 0, 15, 13)

另外,我是vb.net的初学者,所以如果你能把所有东西都愚蠢我真的很感激!

编辑: 尝试了这段代码..但它将数字7放在(5,5)而不是形状。

Dim aNew As MsoAutoShapeType = MsoAutoShapeType.msoShapeIsoscelesTriangle xlWorkSheet.Cells(5, 5) = anew

也尝试过:

xlWorkSheet.Shapes.AddShape(MsoAutoShapeType.msoShapeIsoscelesTriangle, xlWorkSheet.Range(xlWorkSheet.Cells(5, 5)).Left, xlWorkSheet.Range(xlWorkSheet.Cells(5, 5)).Top, 15, 13)

但收到错误

An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred

编辑:有效的代码......

xlWorkSheet.Shapes.AddShape(MsoAutoShapeType.msoShapeRectangle, (xlWorkSheet.Cells(3, 5)).Left, (xlWorkSheet.Cells(3, 5)).Top, 25, 14)

2 个答案:

答案 0 :(得分:3)

这些内容xlWorkSheet.get_range(xlWorkSheet.cells(5.5)).topcells(5.5).top

未处理的类型' System.Runtime.InteropServices.COMException'发生

调试,使用xlWorkSheet.Range(xlWorkSheet.Cells(5, 5)).Top分解,所以,xlWorkSheet好,xlWorkSheet.Cells(5, 5)好,xlWorkSheet.Range(xlWorkSheet.Cells(5, 5))好,错误在哪里,分解大的陈述,实际上从他们的组成部分开始,然后看看他们的回报和链接在一起,就像你在这里完成xlWorkSheet.Shapes.AddShape(MsoAutoShapeType.msoShapeIsoscel‌​esTriangle, xlWorkSheet.Range(xlWorkSheet.Cells(5, 5)).Left, xlWorkSheet.Range(xlWorkSheet.Cells(5, 5)).Top, 15, 13)我们看不到你的代码/屏幕

答案 1 :(得分:2)

使用VBA我可以在B2中打印,你可以使用高度和宽度来改变按钮的高度和宽度:

Dim button As Shape
Set button = ActiveSheet.Shapes("Button 1")
button.Top = Range("B2").Top
button.Left = Range("B2").left
button.Height = 50
button.Width = 100

或在您的示例中:

xlWorkSheet.Shapes.AddShape(MsoAutoShapeType.msoShapeIsoscelesTriangle, Range("B2").left, Range("B2").Top, 15, 13)