Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
244to248
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
244to248
244to248
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zaehlschleife...!!

Zaehlschleife...!!
15.04.2003 09:26:55
streuner
Moinsen!

Hab ein interessantes Problem: lasse mir zwei Diagramme erstellen in Excel und dafür muss ich vorher den Bereich ermitteln, den die Diagramme zeichnen sollen. HAb ne Schleife gebaut, die Durch zählt in einer Spalte wieviele Werte enthalten sind:

Function letzteReiheermitteln1(auswertung)
Dim Spalte As String
Dim Reihe As Integer
Dim Reihe2 As Integer
Dim leereZelle As Variant
Dim i As Integer

Spalte = "B"
Reihe = auswertung
Reihe2 = Reihe
i = 0

For i = 1 To 20
leereZelle = Sheets("Tabelle2").Cells(Reihe, Spalte)
If (leereZelle = "") Then
Reihe = Reihe - 1
auswertung = Reihe - Reihe2
Exit For
End If
Reihe = Reihe + 1
Next i

End Function

Auswertung enthält die Startposition, von der ab gezählt werden soll. Das interessante ist, dass ich diese Funktion 2x aufrufe - einmal "letzteReiheermitteln1(auswertung)" und einmal "letzteReiheermitteln2(auswertung)". Je nachdem, welche ich zuerstaufrufe, funzt immer nur die zuerst aufgerufene!!!! Also nur die erste Funktion erkennt, wieviele Werte enthalten sind. Die zweite findet gar keine Zahlen, obwohl dort definitiv zahlen sind!!!

Hab echt schon (fast) alles versucht: andere Namen vergeben, andere Variablen...etc.! HAt irgend jemand ne Idee, oder ne andere Möglichkeit, wie ich in einer Spalte, von einem bestimmten Startwert zählen kann, bis eine Zelle leer ist?
Danke schon mal!

MFG Streuner

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Zaehlschleife...!!
15.04.2003 09:41:13
Ramses

Hallo

wenn du damit wirklich was erreichen willst, musst du einen Rückgabewert an die Function erteilen

Du schreibst:
For i = 1 To 20
leereZelle = Sheets("Tabelle2").Cells(Reihe, Spalte)
If (leereZelle = "") Then
Reihe = Reihe - 1
auswertung = Reihe - Reihe2
Exit For
End If
Reihe = Reihe + 1
Next i

Damit wird der Variablen "Auswertung", die übrigens nirgends definiert ist :-)), der Wert aus der Berechnung "Reihe - Reihe2" zugewiesen. Die Function "letzteReiheErmitteln1()" erhält jedoch keinen Wert !!!

Es müsste eigentlich so heissen:

For i = 1 To 20
leereZelle = Sheets("Tabelle2").Cells(Reihe, Spalte)
If (leereZelle = "") Then
Reihe = Reihe - 1
letzteReiheermittlen1 = Reihe - Reihe2
Exit For
End If
Reihe = Reihe + 1
Next i

Jetzt liefert die Funktion einen Wert zurück

Gruss Rainer

Anzeige
Danke...
15.04.2003 09:46:12
streuner

...ich werde es gleich mal testen!
Hab die Variable "auswertung" natürlich definiert, als Integer. Bin aber stets davon ausgegangen, dass der Parameter, der übergeben wird, den neuen Wert enthält!? So kann man sich täuschen;)!
Falls es das Problem nicht lösst, werde ich mich nochmal melden, in den nächsten 10 Minuten!

MFG Streuner

Re: Alternative
15.04.2003 09:55:24
Nike

Hi,
mit dieser etwas kürzeren Variante
kannst du auch die letzte gefüllte
Zelle ausgeben lassen.

Sub letzte_gefüllte_Zelle_Zeile_von_Spalte_B()
dim intSpalt as integer
intSpalt = 2 'Spalte B
MsgBox Worksheets(1).Cells(Worksheets(1).Rows.count, intSpalt).End(xlUp).Row
End Sub

somit ist die Zeile der ersten leeren Zelle für Spalte B
dim intSpalt as integer
intSpalt = 2 'Spalte B
Msgbox Worksheets(1).Cells(Worksheets(1).Rows.count, intSpalt).End(xlUp).Row + 1

Bye

Nike



Anzeige
Re: Zaehlschleife...!!
15.04.2003 10:16:00
ingo

HAllo,
mir ist nicht ganz klar, welches ergebnis du erwartest.
wenn Du z.B. als eingabewert a4 eingibst möchtest du die zeilennummer mit dem letzten eintrag vor der ersten leerzelle unterhalb von a4?

versuchs doch mal mit der funktion:

Function zeilenzaehlen(startzelle As Range) As Integer
Application.Volatile
zeilenzaehlen = startzelle.End(xlDown).Row - startzelle.Row + 1
End Function

die funktion wird aufgerufen mit:

zeilenzaehlen(a4)
und gibt eine zahl zurück, die die anzahl der Zeilen ab a4 zurückgibt, die in spalte a nicht leer sind.

also z.B.
a4=a5=a6="xyz"
a7=leer
=> zeilenzaehlen(a4) gibt 3 zurück

ich hoffe, das hilft dir weiter
gruß Ingo


Anzeige
korrektur
15.04.2003 10:49:09
ingo

hallo nochmal,
mir ist aufgefallen, dass die funktion ein falsches ergebnis liefert, wenn das feld unter startzelle leer ist also neue version:

Function zeilenzaehlen(startzelle As Range) As Integer
Application.Volatile
If startzelle.Offset(1, 0) = "" Then
zeilenzaehlen = 1
Else
zeilenzaehlen = startzelle.End(xlDown).Row - startzelle.Row + 1
End If
End Function

Re: Alternative
15.04.2003 12:13:48
Dank euch...!

Klappt super mit euren Vorschlägen!

MFG Streuner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige