如何使用C#在Excel中突出显示数据范围?

我不知道是否有一种方法来复制插入图表对话框function使用C#。 我需要的是显示一个popup窗口,但更重要的是让用户select数据范围。

我也想用Excel的彩色方块突出显示范围。 插入图表时,这是一个如何突出显示范围的图像。 我希望能够从我的C#加载项中获得这些框。

Excel范围突出显示http://img696.imageshack.us/img696/5290/excel.png

在VBA中有一个RefEdit控件,可以让你做到这一点,并有一个详细的演练如何在这里使用它: 如何使用RefEdit控件与UserForm 。

不幸的是,没有内置的控件可以让你在C#中做到这一点。 您可以使用VBA作为您的前端 – 我非常怀疑您希望这么做 – 或者您可以使用C#创buildRefEdit控件等效项。 有关于如何做到这一点的文章,以及一个function齐全的C#代码示例,在这里: 如何编写Gabhan Berry 的RefEdit控件 。

根据zzandy的评论更新:

“其实问题是如何突出select的范围,而不是如何select范围。InputBox(csharp-examples.net/inputbox)可以从C#中获得,并允许select范围。

使范围以多色显示是不可能的。 这种突出显示只在Excel中在工作表上创build公式时发生,而不是在为其他目的select范围时发生。 唯一的方法来创build这将需要英雄的数量的子类,或挂钩,我不会推荐它。

但是,有些解决scheme可以让你至less有一个select框(又名“行军ant”)。 如果您使用VBA作为前端,您可以使用上面提到的内置RefEdit控件 ,它将选取框带到所选范围的周围。

上面给出的C#示例将允许您在C#表单中使用类似RefEdit的控件,但是在进行select时不会包含选取框 – 当通常select范围时,它将简单地使用标准外观。

如果你愿意使用一个简单的input框解决scheme,而不是一个窗体上的控件,那么你给的C#示例将工作(如果您使用Form.Show()而不是 Form.ShowDialog()),但它不会显示任何特殊的选框或其他突出显示。 对于使用选取框select的简单input框,可以使用Excel.Application.InputBox方法,为“Type”传入值“8”,表示“InputBox”方法应该是一个'Excel.Range'数据types:

Excel.Application excelApp = ...; string prompt = "Please select the range."; string title = "Input Range"; int returnDataType = 8; String DefaultRange = oXL.Selection.Address(); Excel.Range myRange = excelApp.InputBox( prompt, title, DefaultRange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, returnDataType) 

希望这可以帮助…

麦克风

我可能在这里有点过时,但是你有没有试图logging一个你想要的macros?

然后,您可以查看生成的代码并根据需要进行调整。