Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Markierte Zellen mit GetRange() auslesen
digi333
myCSharp.de - Member



Dabei seit:
Beiträge: 302

Themenstarter:

Markierte Zellen mit GetRange() auslesen

beantworten | zitieren | melden

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;
            }
        }
private Nachricht | Beiträge des Benutzers
Hurby
myCSharp.de - Member



Dabei seit:
Beiträge: 225

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
digi333
myCSharp.de - Member



Dabei seit:
Beiträge: 302

Themenstarter:

beantworten | zitieren | melden

Ich finde kein Befehl "Selection" in C#.
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
digi333
myCSharp.de - Member



Dabei seit:
Beiträge: 302

Themenstarter:

beantworten | zitieren | melden

Wie ließt man dann die markierten Zellen aus so?
private Nachricht | Beiträge des Benutzers
digi333
myCSharp.de - Member



Dabei seit:
Beiträge: 302

Themenstarter:

beantworten | zitieren | melden

Hab ich gerade nach langer Suche selber gefunden.


Range range = (Range) sheet.Application.Selection;
private Nachricht | Beiträge des Benutzers