2017-08-24 49 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;