2009-12-15 100 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

相關問題