Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1416to1420
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
Inhaltsverzeichnis

Schleife

Schleife
04.04.2015 18:45:13
Doliwa
Hi,
ich möchte ein Programm schreiben, mit dem ich aus Excel einen Newsletter erstellen kann. Hieraus sollen aus meiner Kundentabelle die Email-adressen geladen werden, um diese dann zu versenden. Ich scheitere aber schon bei der Kundennummernaufzählung. Meine Kundennummern beginnen bei 1 und enden irgendwann in unbekannt. In der Zelle H1 habe ich also die Kundennummern, die mit 1 beginnen wird, dann2, dann3 usw. Die Scheife soll dann enden, wenn der Zellinhalt A1 leer ist. Mein selbst erstelltes Makro ist wie folgt:
Sub Hochzaehlen()
Dim I As Integer
Do While Range("A1").Value  ""
Range("H1").Value = Range("H1").Value + 1
I = I + 1
If Range("A1").Value = "" Then Exit Do
Range("H1").Value = I
Loop
End Sub
Weiß jemand, wo hier der Hase im Pfeffer liegt? Danke Stefan

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

Betreff
Datum
Anwender
Anzeige
AW: Schleife
04.04.2015 19:29:07
fcs
Hallo Stefan,
in deiner Version prüfst du nur die Zelle A1 und dann endet deine Schleife sofort.
Du musst von A1 wegzählen, um zum Ziel zu kommen.
Statt Do-Loop lönnte man auch eine For-Next-Schleife verwenden, die bis letzten Zeile mit Inhalt arbeitet.
Gruß
Franz
Sub Hochzaehlen()
Dim I As Integer
I = 0
Range("H1").Value = 0
Do While Range("A1").Offset(I, 0).Value  ""
Range("H1").Value = Range("H1").Value + 1
'oder evtl.
Range("H1").Value = Range("A1").Offset(I, 0).Value
I = I + 1
Loop
End Sub
Sub Hochzaehlen_Neu()
Dim I As Integer, Zeile  As Long
With ActiveSheet
For Zeile = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
I = I + 1
.Range("H1").Value = I
'Oder evtl.
.Range("H1").Value = .Cells(Zeile, 1).Value 'Wert aus Spalte A eintragen
Next
End With
End Sub

Anzeige
AW: Schleife
05.04.2015 09:56:13
Doliwa
Schöne Ostern Franz,
zuerst einmal vielen herzlichen Dank für Deine Programmierung, die ich leider nicht verstanden habe. Im Test wurde dann die Zelle H2 verändert... Aber das führte dazu, daß ich verstand, daß meine VBA-Programmierung fast richtig ist. Der Fehler lag in der Excel-Programmierung der Zelle A1. Denn sobald eine nicht vorhandene Kundennummer ausgewählt wurde stand in der Zelle #NV. Deswegen habe ich den Querverweis geändert: =WENN(ISTNV(SVERWEIS(BlaBlub));0;SVERWEIS(BlaBlub)) Somit habe ich die Programmierung wie folgt abgeändert:
Sub Hochzaehlen()
Dim I As Integer
Do While Range("A1").Value  "0"
Range("H1").Value = Range("H1").Value + 1
I = I + 1
If Range("A1").Value = "" Then Exit Do
Range("H1").Value = I
Loop
End Sub
Und der Email-Versand ist jetzt pille-palle. Danke Dir nochmals für Deine Hilfe! Die VBA-Niete Stefan

Anzeige
AW: Schleife
05.04.2015 10:39:44
fcs
Hallo Stefan,
unvollständiger Input führt halt manchmal zu unerwartetem/unerwünschtem Output.
Dass in A1 eine Formel steht und welche hättest du schon in deiner Frage mitteilen sollen. Denn es war für mich nicht ersichtlich, dass sich in A1 der Wert ändert, wenn in H1 ein Wert eingetragen wird.
Eine Zelle mit Formel kann übrigens nie leer sein. Sie kann höchstens als Ergebnis einen Leerstring ("") zurückgeben.
Gruß
Franz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige