Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1552to1556
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

Frage(n) zu For-Next-Schleife

Frage(n) zu For-Next-Schleife
22.04.2017 13:55:21
VBA_Anfänger
Guten Tag,
ich habe folgenden Code:

Option Explicit
Dim inti As Integer
Dim intcount As Integer

Sub schleifen()
For inti = 1 To 3
Tabelle1.Select
'MsgBox "Jetzt wurde Tabelle 1 selected"
Range("A" & inti).Select
'MsgBox "Jetzt wurde Zelle A" & inti & " selected"
Range("A" & inti) = "Das ist Durchlauf Nummer: " & inti
'MsgBox "Jetzt wurde Zelle A" & inti & " beschriftet"
Next
inti = inti - 1 ' aus irgendwelchen Gründen hat inti nach der Schleife Wert = 4, daher -1
If MsgBox("Sollen die Inhalte in A1 bis A" & inti & " gelöscht werden?", vbYesNo) = vbYes Then ' _
_
_
_
hier wird direkt aus der If-Anweisung heraus die Msgbox erzeugt :-)
Range("A1:A3").Delete ' klickt man Ja, werden die Daten gelöscht
Else
MsgBox "Dann eben nicht."
End If
End Sub

Meine Fragen:
1. Ich habe oft gesehen, dass hinter dem "Next" die in der Schleife genutzte Variable geschrieben wird (Hier: Next inti). Es läuft aber auch ohne inti hinter Next. Wozu schreibt man also diese Variable überlicherweise hinter das Next?
2. Wenn ich die Zellen A1 bis A3 löschen lasen will, passieren komische Dinge ;-)
Ist das Blatt leer, funktioniert es ohne Probleme (A1 bis A3 gelöscht)
Schreibe ich jedoch "test" z.B. in A4 und in A20, passiert Folgendes:
- Die vom Makro geschrieben Zellinhalte werden gelöscht, aber "test" steht in A1 und in A17
=> beide Inhalt wurden um 3 Zeilen nach oben geschoben, aber warum?
Vielen Dank
PS: Kann jemand ein gutes VBA-Buch oder eine Internetquelle empfehlen, in der so Grundlegende Sachen wie meine Frage 1 erklärt werden?

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Frage(n) zu For-Next-Schleife
22.04.2017 14:05:51
Sepp
Hallo ?
Zu 1: Die Variable hinter Next zu schreiben ist optional, ich mach das nie.
Zu 2: Ist logisch, weil du mit .Delete nicht den Inhalt sondern die Zellen löscht.
Willst du nur den Inhalt löschen, dann .ClearContents oder ="".
Außerdem braucht man eine Zelle nicht selektieren/aktivieren um sie zu bearbeiten.
Gruß Sepp

AW: Frage(n) zu For-Next-Schleife
22.04.2017 14:22:54
VBA_Anfänger
Hallo Sepp,
danke für die schnelle Antwort und den Tipp mit dem Selektieren, das spart Code :-)
Nochmal zu Frage 1:
Gibt es keinen Fall, in dem man "Next Variable" verwendet?
Also erfüllt die Variable hinter Next überhaupt keine Fuktion?
Anzeige
AW: Frage(n) zu For-Next-Schleife
22.04.2017 14:24:39
Sepp
Hallo ?,
nein, wie gesagt ist das optional.
Gruß Sepp

AW: Frage(n) zu For-Next-Schleife
22.04.2017 14:44:55
Dirk
Hallo,
die Angabe hinter dem Next ist dann hilfreich, wenn viele For-Next-Schleifen verschachtelt sind.
Auf dieser MSDN-Webseite von Microsoft sind einfache Beispiele aufgelistet: https://msdn.microsoft.com/de-de/library/5z06z1kb.aspx
LG, Dirk
....Schreibst du nämlich eine falsche Variable ...
22.04.2017 15:01:00
Luc:-?
…dahinter, meldet sich der Debugger! Außerdem ist das übersichtlicher, weshalb ich das idR immer mache. Dafür mache ich dann auch anderes, was bei Anderen nicht zu finden ist. Das nennt man Programmierstil!
🙈 🙉 🙊 🐵 Gruß, Luc :-?
Besser informiert mit …
Anzeige
AW: Frage(n) zu For-Next-Schleife
22.04.2017 14:17:24
VBA_Anfänger
Nachtrag:
Habe gerade durch rumprobieren herausgefunden, dass durch Range("A1:A3").Delete ganze Zellen gelöscht werden. Andere Zellinhalte rutschen nach scheinbar nach folgender Regel nach:
- Steht Inhalt im Bereich B1:B3 rutscht dieser auf A1:A3
- Steht Inhalt in Spalte A unterhalb von A3, so rutscht dieser um 3 Zeilen hoch
Umgehen kann ich das Problem mit Range("A1:A3").ClearContents
Dabei wird nur der Zellinhalt gelöscht.
Jetzt ist nur noch Frage 1 offen :-)
AW: Frage(n) zu For-Next-Schleife
22.04.2017 17:57:55
Luschi
Hallo VBA_Anfänger,
bei 'Next' ist es immer sinnvoll, auch die richtige Schleifen-Variable hinzuschreiben - gerade dann, wenn es mehrere verschachtelte For-SChleifen gibt, in denen viele Programmzeilen dafür sorgen, daß der Schleifenbeginn (For ...) und das Schleifenende (Next ...) nicht mehr auf 1 Bildschirmseite passen; dann wird die Bildschirm-Scrollerei richtig lästig.
Und wie schon Luc erwähnte, kontrolliert dann auch der Debugger die korrekte Setzung der Variablen.
Gruß von Luschi
aus klein-Paris
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige