2009-12-15 55 views
2

我不知道有没有办法使用C#复制插入图表对话框功能。我需要的是显示一个弹出窗口,但更重要的是让用户选择数据范围。如何使用C#在Excel中突出显示数据范围?

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

Excel range highlighting http://img696.imageshack.us/img696/5290/excel.png

回答

3

在VBA中有一个RefEdit控件,它可以让你做到这一点,并且在这里有详细的使用说明:How to Use the RefEdit Control with a UserForm

不幸的是,没有内置控件可以让您在C#中执行此操作。您可以使用VBA作为您的前端 - 我非常怀疑您希望这么做 - 或者您可以使用C#创建RefEdit控件等效项。有一篇关于如何做到这一点的文章,以及一个功能完整的C#代码示例,在这里:Gabhan Berry的How to Code a RefEdit control。基于zzandy的评论

更新:

“实际上,问题是如何 亮点选择范围,而不是如何 选择范围内的InputBox (csharp-examples.net/inputbox。 )是可从C#获得的 ,并允许选择 范围。“

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

但是,有些解决方案可以让您至少在选区周围有一个选取框(又名“行军蚂蚁”)。如果您使用VBA作为前端,您可以使用上面提到的内置RefEdit control,这可以将选取框带到选定范围内。

The C# example I gave, above将允许您在C#表单中使用类似RefEdit的控件,但在进行选择时不包括选取框区域 - 当通常选择范围时,它将简单地使用标准外观。

如果你愿意用一个简单的输入框的解决方案,而不是一个窗体上的控件,那么C# example you gave将工作(如果你使用Form.Show(),但不 Form.ShowDialog()),但它不会显示任何特殊的选取框或其他突出显示。对于一个简单的输入框确实使用选取框选择,您可以使用Excel.Application.InputBox方法,为'Type'传入一个'8'值,这表示'InputBox'方法返回的值应该是一个'Excel.Range'数据类型:

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) 

希望这有助于...

Mike

+0

谢谢,看起来就像一个人可以到达我想要的地方一样。 – zzandy 2009-12-21 15:52:19

+0

是的,这是您用C#可以做的最好的。唯一的另一种方法是使用VBA作为前端,以便您可以使用VBA UserForm和真正的“RefEdit”控件。 – 2009-12-21 18:53:22

+0

其实问题是如何突出选择的范围,而不是如何选择范围。 InputBox(http://www.csharp-examples.net/inputbox/)可从C#获得,并允许选择范围。 – zzandy 2009-12-23 10:27:17

-1

我可能有点过时了这里,但你有没有试图录制你想要做什么是宏?

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

+0

它没有帮助。范围没有被明确选择。 – zzandy 2009-12-15 14:15:54

+0

问题是有能力复制某些refedit控件功能,而不是使用Excel对象模型的特定部分。 – 2010-05-10 05:39:07

相关问题