Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
268to272
268to272
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeilen und Spalten markierter Zellen zählen

Zeilen und Spalten markierter Zellen zählen
16.06.2003 02:37:24
Michael
Hallo Excel- und VBA-Spezialisten,

ich benötige für eine For-Next-Schleife in VBA die Anzahl Zeilen/Spalten die ich markiert (selektiert) habe.
Wenn ich zB den Bereich A1:B5 markiere sollte als Rückgabewert AnzahlRow=5 und AnzahlColumn=2 gegeben werden. Dann kann zB der Zeilenwert an die For-Next-Schleife übergeben werden - als Anzahl wie oft die Schleife durchlaufen werden soll.

Ich hoffe es gibt auch für diese Frage eine Lösung...

Danke
Michael



18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Zeilen und Spalten markierter Zellen zählen
16.06.2003 05:37:12
PeterW

Hallo Michael,

um die Zahl der Zeilen/Spalten zu ermitteln lass den ersten Code laufen. Der zweite ist ein Beispiel, wie du auch ohne die Anzahl zu kennen jede Zelle ansprechen kannst.

Gruß
Peter

Re: Zeilen und Spalten markierter Zellen zählen
16.06.2003 14:00:50
Michael

Klasse Peter, vielen Dank!

deine Codes haben mir sehr weiter geholfen.

habe mich vorerst für die 1. Mglk. entschieden hier ein Ausschnitt:
'Anzahl der Elemente (= Anzahl der Zeilen in Matrix)
anz_elemete = Selection.Rows.Count
'In erste Zelle springen
Cells(startzeile, startspalte).Select
For zeile_1 = 0 To anz_elemete - 1

Das Schlüsselwort "count" hat mir u.a. gefehlt über F1 und Bsp's konnte ich dann noch mehr darüber erfahren...

Im 2. Code musste ich
Dim r As Range statt Rang eingeben.
Woran liegt es dass ich viele Macros erst "übersetzen" muss?


Bei der Anwendung des Macros ist mir eine weitere Vereinfachung aufgefallen, die ich natürlich auch nicht umsetzten konnte...

anstatt alle notwendigen Zellen zu markieren könnte man doch per Code zählen lassen wieviele Zellen es zwischen der ActiveCell und der letzen Zelle mit einem Eintrag (resp. die erste Zelle ohne Eintag) in der Spalte (Matrix) gibt. Diese Zahl dient mir dann wieder als Schleifenzähler.

Hast Du oder jemand anderes hierfür eine Lösung?

Danke und viele Grüße

Michael

Anzeige
Re: Zeilen und Spalten markierter Zellen zählen
16.06.2003 15:56:46
PeterW

Hallo Michael,

die Übersetzung Rang in Range war ein Tippfehler von mir. :-(

Die letzte Zelle in der Spalte der ActiveCell findet Du mit:

Gruß
Peter

Re: Zeilen und Spalten markierter Zellen zählen
16.06.2003 17:38:42
Michael

Hallo Peter,

vielen Dank für deine Antwort.
Diesen o.ä. Code habe ich im Archiv bereits entdeckt. Jedoch habe ich meine Daten in Blöcke aufgeteilt. D.h. unter der zu untersuchenden Matrix befinden sich weitere Matrices - also Zellen mit Inhalt.
Ich bräuchte deshalb eine Lösung, die von der ActiveCell bis zur letzten Zelle mit Inhalt der entsprechenden Matrix zählt oder markiert.

Ich habe folgendes (Bereich markieren), leider ohne Erfolg versucht:
startspalte = ActiveCell.Column
startzeile = ActiveCell.Row

'Markierung von ActiveCell bis zur letzten Zelle die Daten enthält erweitert
'Alternativen:
'Range("ActiveCell", Range("ActiveCell").End(xlDown)).Select
'Range(Cells(startzeile, startspalte), Range(Cells(startzeile, startspalte)).End(xlDown)).Select
'Die nachfolgende Lösungen sind nicht flexibel wobei nur die letzte funktioniert
'Range(Cells(2, 14), Range(Cells(2, 14)).End(xlDown)).Select
Range("N2", Range("N2").End(xlDown)).Select

anz_elemete = Selection.Rows.Count
MsgBox Selection.Rows.Count

Wo sind die Fehler in der Deklaration der Zelle?

Statt markieren und die Selektion zu zählen kann man nicht auch über eine Differenzbildung anz_elemete = letzteZelle.row - ActiveCell.row die Anzahl bestimmen?

Läßt sich dein Code nicht umdrehen?
lgLetzte = Cells(ActiveCell.Row, ActiveCell.Column).End(xlDown).Row
und daraus die Differenz bilden?

Danke und viele Grüße
Michael



Anzeige
Re: Zeilen und Spalten markierter Zellen zählen
16.06.2003 17:55:25
PeterW

Hallo Michael,

woher weiß Excel, dass das Ende einer Matrix erreicht ist, gibt es dort eine Leerzeile? Wenn ja könnte das so gehen:

Range(ActiveCell, Cells(Range(ActiveCell.Address).End(xlDown).Row, ActiveCell.Column)).Select

Vielleicht beschreibst du mal, was du eigentlich erreichen möchtest, in VBA kann auf Select in der Regel verzichtet werden.

Gruß
Peter

Re: Zeilen und Spalten markierter Zellen zählen
16.06.2003 20:18:11
Michael

Hallo Peter,

vielen Dank für deine Hilfe und Mühe.
Ich habe zB ein Tabellenblatt in dem ca 10 Matices (AxB wobei A=5 Spalten B= 10; 14; 22; 76 Zeilen) nebeneinander stehen getrennt durch 2 leere Spalten. Untereinander habe ich meist 4-6 Matices getrennt durch 5 leere Zeilen.

In einer Spalte der Matrix stehen Werte die aufsteigend sein sollten (Messwerte) - es gibt aber Ausreißer - die ich finden muß. Deshalb vergleiche ich mit 2 ineinander liegenden Schleifen ob der oberhalb liegende Wert größer ist als der darunterliegende - wenn ja dann ist das ein Fehler-Paar das ich farblich markiere.
Mein Problem ist/war die Anzahl der Schleifen da die Zeilenzahl unterschiedlich ist. Ich habe bisher immer im Macro den entsprechenden Wert korrigiert, möchte das aber gerne automatisiert haben.

Funktionieren tut's mit:
lgLetzte = Cells(ActiveCell.Row, ActiveCell.Column).End(xlDown).Row
anz_elemete = lgLetzte - ActiveCell.row + 1

das ist dann der Wert für die For Next Schleife


Dürfte ich dich noch um 2 Erklärungen bitten?
Warum geht nur
Range("N2", Range("N2").End(xlDown)).Select
aber die alterntiven Schreibweisen mit
'Range(Cells(2, 14), Range(Cells(2, 14)).End(xlDown)).Select
oder
'Range(Cells(startzeile, startspalte), Range(Cells(startzeile, startspalte)).End(xlDown)).Select (starzeile u spalte sind definiert)
oder noch vereinfachter
'Range("ActiveCell", Range("ActiveCell").End(xlDown)).Select
funktionieren nicht?

warum kann ich
LetzteZelleRow = Cells(ActiveCell.Row, ActiveCell.Column).End(xlDown).Row
nicht als
LetzteZelle = Cells(ActiveCell.Row, ActiveCell.Column).End(xlDown)
LetzteZelleRow = LetzteZelle.Row
darstellen?

Fehler: 424 - Objekt erforderlich
In der Hilfe steht: Sie haben auf eine Objekteigenschaft oder Objektmethode verwiesen, ohne einen gültigen Objektbezeichner anzugeben. Was heißt das?


Nochmals vielen Dank für deine Hilfe
Michael

Anzeige
Re: Zeilen und Spalten markierter Zellen zählen
16.06.2003 21:51:12
PeterW

Hallo Michael,

der Befehl .End(xlDown) erfordert ein Range Objekt, also entweder Range("A1") oder Range(Cells(Zeile, Spalte), Cells(Zeile, Spalte)).

Für dein Beispiel:

Range(Cells(2, 14), Range(Cells(2, 14)).End(xlDown)).Select

könnte gehen:

Range(Cells(2, 14), Cells(Range(Cells(2, 14), Cells(2, 14)).End(xlDown).Row, 14)).Select


LetzteZelle = Cells(ActiveCell.Row, ActiveCell.Column).End(xlDown)
LetzteZelle liefert den WERT der letzten Zelle, nicht dessen ZEILENNUMMER.
Wenn du die letzte Zeilennummer willst dann:

LetzteZelle = Cells(ActiveCell.Row, ActiveCell.Column).End(xlDown).Row

Hoffentlich ist das jetzt nicht zu verwirrend. :-)

Gruß
Peter

Anzeige
Re: Zeilen und Spalten markierter Zellen zählen
17.06.2003 02:28:34
Michael

Hallo Peter,

sensationell, vielen Dank!
deine Lösung zu Range ... Select funktioniert natürlich!

zu LetzteZelle.Row
ich dachte man könne LetzteZelleRow zusammensetzen aus LetzteZelle und hängt .Row an.
Wenn ich es nun richtig verstehe wird ja nur der Wert der Zelle übergeben und keine Koordinate wie Spalte, Zeile, Adresse deshalb ist auch kein zusammensetzen möglich - das in der Fehlermeldung genannte erforderliche Objekt sind dann Spalte, Zeile usw.

Dürfte ich dich nochmals um 3 Erklärungen bitten?
MsgBox anz_elemete & " Elemente", 1
lt. Hilfe sollte dies in Klammern stehen:
MsgBox (anz_elemete & " Elemente", 1)
ergibt aber Fehler beim Kompilieren; erwartet: =
was ist da falsch?

wenn ich ok und cancel als Optionen auswähle soll bei falscher Rückmeldung das Marco mit cancel sofort beendet werden ansonsten weiter machen.
If Antwort = 2 Then End
endet aber nicht
ich denke ein else fürs fortsetzen braucht es nicht, oder doch?

kann man die Reihenfolge der Module im editor vertauschen zb Modul 3 als oberstes Modul?
kann man Module umbennenen zb Modul1 in Sortieren?

Nochmals vielen Dank für deine Bemühungen und Hilfen

Michael

Anzeige
Re: Zeilen und Spalten markierter Zellen zählen
17.06.2003 07:29:00
PeterW

Hallo Markus,

in LetzteZeile hast du mit Range(wasauchimmer).End(xlDown) den Zellwert der letzten Zelle - sagen wir mal 22 - abgelegt. Woher soll Excel wissen, dass du durch die Konstruktion mit Row jetzt plötzlich wissen willst, welche Zeile gemeint ist? Du hast doch die Möglichkeit mit Range(wasauchimmer).End(xlDown).Row direkt die Zeilennummer zu ermitteln.

Die Argumente für eine MsgBox müssen in Klammern, wenn du einen Rückgabewert in eine Variable schreiben willst. Antwort = MsgBox(anz_elemete & .... ansonsten ohne Klammer

Module können im Eigenschaften-Fenster umbenannt werden (falls nicht sichtbar mit F4 einblenden). Die Reihenfolge ist immer alphabetisch.

Gruß
Peter

Anzeige
Re: Zeilen und Spalten markierter Zellen zählen
17.06.2003 11:00:57
Michael

Klasse Peter

VIELEN DANK!!!

Michael

ggf muß ich dich noch einmal um Hilfe bitten falls ich den button um das macro zu starten nicht erstellen kann. Aber ich glaube dazu gibt es einige Einträge im Forum oder Archiv.


Re: Zeilen und Spalten markierter Zellen zählen
17.06.2003 17:24:12
Michael

Hallo Peter,

bei mir funktioniert nur die Klammerversion.
Bei der
MsgBox iDummy & " Einheiten", 1
If vbCancel Then End
geht es bei ok nicht weiter. Kann das sein?

Viele Grüße

Michael

Re: Zeilen und Spalten markierter Zellen zählen
17.06.2003 19:18:59
PeterW

Hallo Michael,

das kann nicht nur sein, das ist so. War wohl noch im Halbschlaf heute morgen. Sorry!

Gruß
Peter

Anzeige
Re: Zeilen und Spalten markierter Zellen zählen
18.06.2003 10:20:01
Michael

Hallo Peter,

ich wollte nur sicher gehen, daß ich nicht schon wieder was falsch mache...

Nochmals vielen Dank für deine Hilfen!

Michael

wie behälst du den Überblick?
18.06.2003 17:16:13
Michael

Hallo Peter,

sag mal woran merkst du dass zB ich dir schon wieder geantwortet habe? Du kannst doch nicht ständig nachschauen ob noch einmal eine Nachfrage zu einer deiner vielen Antworten gekommen ist? gibt es entweder die möglichkeit das forum anders zu sortieren oder eine art alert funktion (außer e-mail Benachrichtigung)?


Viele Grüße

Michael

Re: wie behälst du den Überblick?
19.06.2003 09:21:57
PeterW

Hallo Michael,

es gibt zwei Möglichkeiten. E-Mail Benachrichtigung für Antworter (hast du ja erwähnt - hab ich aber nicht aktiviert) und Suche. Letzteres benutze ich um nach Threads zu suchen, in denen ich einen Beitrag geschrieben habe.

Gruß
Peter

Anzeige
Re: wie behälst du den Überblick?
19.06.2003 10:13:38
Michael

Hallo Peter,

mit suche meinst du die normale strg+f suche und suchst dann nach peterw...

hmm dann ist michael ohne zusatz wenig sinnvoll

Danke
Michael

Re: wie behälst du den Überblick?
19.06.2003 12:23:33
PeterW

Hallo Michael,

ich meine die Suche im Forum (oben links).

Gruß
Peter

Re: wie behälst du den Überblick?
19.06.2003 12:44:42
Michael

Hallo Peter,

super Tipp, ich benutze immer aus routine immer Stg+f, deshalb ist mir die Funktion suchen im Forum irgendwie nicht aufgefallen...

Danke!

Viele Grüße

Michael

355 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige