2015-04-05 67 views
1

我想用一個按鈕來使所有的單元格除了命名範圍以外的所有單元格的Excel加載項。如何更改內部的顏色和不是邊框

我正在使用TintAndShade屬性,將其設置爲-0.7。我遇到的問題是,當我打開新的工作表時,單元格內部處於「無填充」模式。因此TintAndShade屬性沒有區別。然後,我試着檢查內部顏色是否默認(ColorIndex = -4142),如果是這種情況,我將顏色設置爲白色(ColorIndex = 2)。我遇到的問題是,它會擦除​​所有邊界(我認爲邊界也處於「無填充」模式)。我不能將它們設置爲黑色,因爲它不是默認顏色。

是否有人知道如何更改內部顏色而不刪除默認邊框顏色?或者還有沒有其他更簡單的方法來製作這樣的按鈕(除了命名範圍之外的所有單元格)?

謝謝!

這裏是我的代碼,如果你想查詢:

int shadeMargin = 0; 
Excel.Worksheet excelWorksheet = Globals.ThisAddIn.Application.ActiveSheet; 
Excel.Names tags = Globals.ThisAddIn.Application.ActiveWorkbook.Names; 

Excel.Range last = excelWorksheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing); 
Excel.Range xlRange = excelWorksheet.get_Range("A1", last); 

for (int i = 1; i < xlRange.Rows.Count + 1 + shadeMargin; i++) 
{ 
    for (int j = 1; j < xlRange.Columns.Count + 1 + shadeMargin; j++) 
    { 
     if (xlRange.Cells[i, j].Interior.ColorIndex == -4142) // Correspond to the "No Fill" color 
     { 
       xlRange.Cells[i, j].Interior.ColorIndex = 2; // Replaced by WHITE color 
     } 
     xlRange.Cells[i, j].Interior.TintAndShade = -0.7; 

     } 
} 

foreach (Excel.Name tag in tags) 
{ 
    Excel.Range tagRange = tag.RefersToRange; 
    for (int i = 1; i < tagRange.Rows.Count + 1; i++) 
    { 
     for (int j = 1; j < tagRange.Columns.Count + 1; j++) 
     { 
      tagRange.Cells[i, j].Interior.TintAndShade = 0; 
     } 
     } 
    } 
+0

單元格實際上是否有邊框,或者您是否看到網格線?您可以轉到功能區上的查看並取消選中「顯示」組中的網格線旁邊的以進行驗證。 – 2015-04-07 15:10:15

+0

不,你是對的,他們沒有邊框,當我取消選中「顯示」按鈕。 – Vilsisse 2015-04-16 10:55:52

回答

0

邊框和底紋是單獨的屬性。在沒有填充顏色(例如白色)的情況下顯示網格線。你可以通過設置邊界來匹配網格線,但它不會是完美的。使用宏記錄器獲取設置不同邊框線條樣式,主題顏色,錫蘭色調和重量的代碼,然後嘗試以您想要的方式設置它們。

+0

好的,謝謝你,我使用了宏錄像機。我認爲我現在擁有的東西幾乎可以滿足我想要的,但仍然不完美:我選擇的顏色類似於單元格上顯示的顏色,但沒有選擇它。但我開始認爲這是不可能的...... – Vilsisse 2015-04-16 12:15:00

+0

使用顏色選擇器,這些邊界是#D4D4D4,它與RGB(212,212,212)相同。當我用這種顏色繪製邊框時,看起來和其他的完全一樣。 – 2015-04-16 14:25:51