2017-08-24 2 views
0

Wenn ich einen oder mehrere Bereiche habe, wie kann ich sie zu einem Bereich mit mehreren Bereichen kombinieren?VSTO Excel - So erstellen Sie einen Bereich mit mehreren Bereichen

Man könnte denken, es so zu tun ... aber das wird nicht einmal kompilieren ...

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:

Dies ist kein Duplikat ... hier geht es um die Schaffung ein Bereich mit zwei Bereichen ... nicht etwa einen Bereich aus zwei Bereichen mit jeweils einer Zelle zu erstellen (was zu einem Bereich mit nur einem Bereich führen würde)

+0

Mögliches Duplikat [Wie ein Bereich von 2 Bereichen in VBA erstellen] (https://stackoverflow.com/questions/12527725/how-to -create-a-range-from-2-bereiche-in-vba) –

+0

Sie sollten auch die Antworten lesen. –

+0

Ich sehe, worüber du in den anderen Antworten sprichst ... Ich bin mir nicht wirklich sicher, ob wenn die Frage nicht das ist, was du fragst und die akzeptierte Antwort nicht das ist, was du fragst ... wenn Dies sollte wirklich als Duplikat angesehen werden ... aber ich höre, was Sie sagen ... Ich werde weitermachen und eine Antwort eingeben, so dass diese Frage eine klare Antwort hat ... und wenn sie von StackOverflow gelöscht wird sei es. –

Antwort

0

Abgeleitet von einer der oben genannten Antworten "duplicate" "Frage.

Hinweis: Es scheint, wenn die Bereiche kombiniert werden können, wird eine Union das tun (zum Beispiel zwei benachbarte Reihen), aber wenn sie nicht so kombiniert werden können, erzeugt sie mehrere Bereiche. (nicht 100% sicher)

Auch Union kann mehr als zwei Parameter haben ... z. Union (range1, range2, MB3, etc ...)

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; 
Verwandte Themen