Laden...

Markierte Zellen mit GetRange() auslesen

Erstellt von digi333 vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.452 Views
D
digi333 Themenstarter:in
290 Beiträge seit 2006
vor 11 Jahren
Markierte Zellen mit GetRange() auslesen

Ich hab in einer Excel-Datei ein Ribbon-Button eingefügt. Dieser soll mit markierten Zellen etwas machen. Wie bekommt man denn die markierten Zellen? Ich möchte nicht statisch arbeiten mit "A1:A2"


private void button1_Click(object sender, RibbonControlEventArgs e)
        {
            Microsoft.Office.Interop.Excel.Worksheet _sheet = Globals.Tabelle1.Application.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet; 
            Microsoft.Office.Interop.Excel.Range _range;
            if (null != _sheet)
            {
                _range = _sheet.get_Range("A1:A2", System.Type.Missing);
                
                System.Array myvalues = (System.Array) _range.Cells.Value;
                double[] d = myvalues.Cast<double>().ToArray();
                double r = d[0]*d[1];
                _range = _sheet.get_Range("B2", System.Type.Missing);
                _range.Value2 = r;
            }
        }
H
222 Beiträge seit 2010
vor 11 Jahren

Hallo,

ich war eigentlich der Meinung es gäbe eine Property / Funktion welche dir genau dies liefert, finde sie aber nicht. Dennoch habe ich mal ein kleines Makro geschrieben, welches die Aufgabe übernimmt:


Sub test()

    Dim rng As Range
    Dim sc As String
    Dim ec As String
    
    For Each rng In Selection
        If sc = "" Then
            sc = Replace(rng.Address, "$", "")
        Else
            ec = Replace(rng.Address, "$", "")
        End If
    Next rng
    
    If ec = "" Then
        MsgBox sc
    Else
        MsgBox sc & ":" & ec
    End If

End Sub


Musst denn noch nach c# portieren...

hth

Hurby

Die Welt hat genug für jedermanns Bedürfnisse, aber nicht für jedermanns Gier.

D
digi333 Themenstarter:in
290 Beiträge seit 2006
vor 11 Jahren

Ich finde kein Befehl "Selection" in C#.

1.002 Beiträge seit 2007
vor 11 Jahren

Hallo digi333,

Selection ist kein Befehl in C#, sondern der Name der Collection, über die in der foreach-Schleife iteriert wird.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

D
digi333 Themenstarter:in
290 Beiträge seit 2006
vor 11 Jahren

Wie ließt man dann die markierten Zellen aus so?

D
digi333 Themenstarter:in
290 Beiträge seit 2006
vor 11 Jahren

Hab ich gerade nach langer Suche selber gefunden.


Range range = (Range) sheet.Application.Selection;