Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
320to324
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
320to324
320to324
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Arbeiten mit Mehrfachselectionen

Arbeiten mit Mehrfachselectionen
09.10.2003 13:17:02
Maria
Hallo,
ich habe das untern angehängte Makro erstellt, mit dem man eine Zahlenliste markieren kann und diese dann weiter verarbeiten kann.
Nun wollte ich das Makro so modifizieren, dass ich auch mit Mehrfachselektionen arbeiten kann - ebenfalls Zahlenlisten, aber eben zB 2 davon und mit beiden soll etwas gerechnet werden.

Ich habe versucht das mit der folgenden Definition zuzuweisen, aber dann funktioniert keine der anderen Funktionen mehr.
Dim Rng1 As Range
Dim Rng2 As Range

If Selection.Areas.Count > 1 Then
Set Rng1 = Selection.Areas.Item(1)
Set Rng3 = Selection.Areas.Item(2)
End If

Wäre schön, wenn jemand eine Idee hätte, wie man das lösen kann.

Liebe Grüße

Maria

PS hier das makro wie es vorher war

Sub Makro3()
' Makro3 Makro
' Makro am 09.10.2003 von Werk Sindelfingen aufgezeichnet
Dim Bereich As Areas
Dim Rng1 As Range
Dim Rng2 As Range
Dim Rng3 As Range
Dim Werteliste As New Collection
Dim Adressliste As New Collection
Dim Multliste As New Collection
Dim Str As String
Dim AnzBereich As Long
Dim i As Integer
Dim j As Integer
Dim Zaehler As Integer
Dim AnzZeilen As Integer
Dim Wertezaehler As Integer
Dim Existing As Integer
Dim Extra As Integer
Existing = 0
Zaehler = 1
AnzZeilen = 0
Wertezaehler = 1
'If Selection.Areas.Count > 1 Then
'    Set Rng1 = Selection.Areas.Item(1)
'    Set Rng3 = Selection.Areas.Item(2)
'End If
'das hier funktioniert noch nicht, hier möchte ich zwei selektierte Bereiche übergeben
Set Rng1 = Selection
'hiermit übergebe ich der Prozedur den ausgewählten Bereich
Rng1.Sort Key1:=ActiveCell, Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'hiermit wird der selektierte Bereich sortiert - brauchst du vermutlich nicht, dient nur meiner Kontrolle
For Each Rng2 In Rng1.Cells
'Für jeden Zelle im ausgewählten bereich wird das folgende abgearbeitet
If WorksheetFunction.Rank(Rng2.Value, Rng1) < 3 Then
Adressliste.Add Item:=Rng2.Address(RowAbsolute:=False, ColumnAbsolute:=False), Key:=CStr(Zaehler)
Zaehler = Zaehler + 1
End If
'für alle werte deren Rang kleiner 3 ist, wird die Adresse (Spalte/Reihe) gespeichert
Extra = WorksheetFunction.Rank(Rng2.Value, Rng1)
Cells(Rng2.Row, 2).Value = Extra
'hier wird der Rang zwischengespeichert nur so zum prüfen
For j = 1 To CInt(Werteliste.Count)
If Rng2.Value = Werteliste(j) Then
Existing = 1
End If
Next
If Existing = 0 Then
Werteliste.Add Item:=Rng2.Value, Key:=CStr(Wertezaehler)
Wertezaehler = Wertezaehler + 1
End If
' hier wird eine Werteliste der vorhandenen Werte erstellt
Existing = 0
AnzZeilen = AnzZeilen + 1
Next Rng2
For i = 1 To CInt(Adressliste.Count)
Extra = Range(CStr(Adressliste(i))).Value * 2
Multliste.Add Item:=Extra, Key:=CStr(i)
Next
'so kann man mit der adressenliste multiplizieren
'der rest sind prüfausgaben!!!!!!!!!!!!!!!
For i = 1 To CInt(Adressliste.Count)
Cells(i, 5).Value = Multliste(i)
Next
Cells(AnzZeilen + 1, 5).Value = "Felder mit Rang <3 jeweils mulipliziert mit 2"
For i = 1 To CInt(Adressliste.Count)
Cells(i, 3).Value = Adressliste(i)
Next
Cells(AnzZeilen + 1, 3).Value = "Adressen der Felder mit Rang <3"
For i = 1 To CInt(Werteliste.Count)
Cells(i, 4).Value = Werteliste(i)
Next
Cells(AnzZeilen + 1, 4).Value = "Werteliste"
Cells(AnzZeilen + 1, 4).Value = "Rangliste"
Cells(AnzZeilen + 2, 1).Value = AnzBereich
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arbeiten mit Mehrfachselectionen
09.10.2003 13:28:52
xXx
Hallo,
warum machst du das nicht in einer for-each-Schleife? Dann ist es auch egal, wieviele Bereiche du auswählst:

Sub ranges()
Dim a As Range, c as Range
For Each a In Selection.Areas
For Each c in a.Cells
Debug.print c.Address 'hier dein Code
Next c
Next a
End Sub

Gruß aus'm Pott
Udo
http://www.excelerator.de

P.S. Das Forum lebt auch von den Rückmeldungen der Frager an die Antworter!
AW: Arbeiten mit Mehrfachselectionen
09.10.2003 15:19:18
Maria
Hallo Udo,
tja - die Lösung ist nicht schlecht, bis auf die Sortierfunktion würde das dann auch funktionieren. Du weisst nicht zufällig warum ausgerechnet die dann nicht mehr geht???
Vielen Dank übrigens!!

Grüße in'n Pott

Maria
Anzeige
AW: Arbeiten mit Mehrfachselectionen
09.10.2003 15:30:11
xXx
Hallo,
ein Vorschlag zur Sortierung:
Rng1.Sort Key1:=Rng1.Cells(1), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Gruß aus'm Pott
Udo
http://www.excelerator.de

P.S. Das Forum lebt auch von den Rückmeldungen der Frager an die Antworter!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige