2017-08-24 52 views
0

如果我有一個或多個範圍,我怎樣才能將它們組合成具有多個區域的範圍?VSTO Excel - 如何創建具有多個區域的範圍

有人可能會認爲做這樣的......但是這甚至不會編譯...

Excel.Worksheet sheet = workbook.ActiveSheet; 
Excel.Range rng1 = (Excel.Range) sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[3,42]); 
Excel.Range rng2 = (Excel.Range) sheet.get_Range(sheet.Cells[5, 1], sheet.Cells[6,42]); 
Excel.Range result = new Excel.Range(); 
result.Areas.Add(rng1); 
result.Areas.Add(rng2); 

UPDATE:

這不是重複......這是關於創造具有兩個區域的範圍...不是從兩個範圍中創建一個範圍,每個範圍都有一個單元格(這將導致只有一個區域的範圍)

+0

的可能的複製[如何創建2個範圍在VBA範圍(https://stackoverflow.com/questions/12527725/how-to -create-a-range-from-2-ranges-in-vba) –

+0

你應該閱讀答案,以及。 –

+0

我在其他答案中看到您正在談論的內容......我不確定問題是否與您詢問的內容無關,並且接受的答案與您詢問的內容無關......如果這應該真的被認爲是重複的......但我聽到你在說什麼......我會繼續輸入一個答案,以便這個問題有一個明確的答案......如果它被StackOverflow刪除比這樣是吧。 –

回答

0

從上面的一個答案派生出來的「複製「 題。

注意:看起來如果這些區域可以合併,聯合會執行此操作(例如,兩個相鄰的行),但如果它們不能像這樣組合,則會創建多個區域。 (對此不是100%肯定)

此外,聯盟可以有兩個以上的參數...例如,聯盟(範圍1,範圍2,range3,等...)

var excelApp = Globals.ThisAddIn.Application as Excel.Application; 
var sheet = workbook.ActiveSheet as Excel.Worksheet; 
var range1 = sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[3,42]) as Excel.Range; 
var range2 = sheet.get_Range(sheet.Cells[5, 1], sheet.Cells[6,42]) as Excel.Range; 
var result = excelApp.Union(range1, range2) as Excel.Range;